Utilities and montage
Video, image and audio processing, subtitles, SEO and Content Credentials through the API.
Nine modules: C2PA Signer Profiles, FORSAJ, HOLST, INDEXLIFT, KLEY, OVERLAY, PLASTINKA, SPEKTR and SUFLER. Access depends on your account and the selected operation.
Connection and upload
Keep your API key in the FRANKLAB_KEY environment variable. Examples use origin https://apergrex.ru; all paths below already include /franklab/api. The repeated franklab in /franklab/api/franklab/jobs is required. SPEKTR/Recraft uses X-API-Key; other examples use Authorization: Bearer. Do not supply partnerId.
export FRANKLAB_ORIGIN="https://apergrex.ru"
# FRANKLAB_KEY is supplied by your secret manager
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/upload" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-F "file=@synthetic.mp4;type=video/mp4"Use a direct public HTTPS URL to your file, or upload it and use response data.url to replace https://example.com/synthetic.* in examples; those URLs are placeholders, not downloadable media. Maximum 150 MiB, source retention 7 days. MIME: video/mp4, video/webm, video/quicktime, video/x-msvideo; audio/mpeg, audio/mp3, audio/wav, audio/ogg, audio/pcm, audio/l16, audio/x-pcm; image/png, image/jpeg, image/gif, image/webp. Upload does not convert formats. The response also includes data.storedFileId, data.mimeType and data.sizeBytes. URL inputs do not require a stored-file ID. URLs must be server-accessible; private/local URLs and prohibited redirects are rejected. Save completed outputs before expiresAt when provided.
Connection check: GET /franklab/api/franklab/integrations/text-sticker/auth/stats with an API key. SPEKTR Make reads GET /franklab/api/v1/images/omni-image?pageNum=1&pageSize=1. This reads history/checks authentication; it does not test generation.
Status, output and billing
A successful submission returns HTTP 200 and success:true, which does not mean the output is ready. Store data.taskId; poll the matching route every 5 seconds until data.status=completed or failed. queued and processing are non-terminal. Set a finite deadline; resume reading the existing ID after a timeout. Do not automatically repeat POST after an ambiguous network error.
| Family | Polling | Output / error |
|---|---|---|
| FORSAJ, HOLST, KLEY, PLASTINKA, SUFLER, SPEKTR jobs | GET /franklab/api/franklab/jobs/{taskId} | data.downloadUrl, metadata; data.error |
| OVERLAY | GET /franklab/api/make/jobs/{taskId} | data.result.downloadUrl; data.error / data.result.error |
| INDEXLIFT async | GET /franklab/api/franklab/jobs/audit-landing/async/{taskId} | data.result.data.seo_report, data.result.data.brief_suggestions, data.phase, data.error_message |
| SPEKTR Recraft | GET /franklab/api/v1/recraft/record-info?taskId=... | data.state, parse data.resultJson → resultUrls[]; data.failMsg |
| C2PA, sample resources | No task polling | data profile/sample |
Jobs expose final_cost_franks, cost_currency=FRANK, cost_status and cost_unit. With cost_status=reserved, the amount is reserved; final is settled, refunded is refunded, and unavailable means no reliable price. Frank is an internal accounting unit, not a currency. A missing field does not mean zero cost. The server checks tariff and capability access. See billing for your utility tariff; Studio estimates apply to Studio operations. C2PA list is free; profile mutations may be billed. Recraft and synchronous INDEXLIFT have their own response formats.
HTTP 400 usually means invalid parameters or combinations; 401 means authentication; 404 means missing resource; 429 means rate limiting. For 5xx/provider errors, reconcile the existing task before resubmission. success:true with data.status=failed is still failure. Diagnostic operations may return metadataReport/metrics/qcReport without a file; availability is qualified separately.
Content Credentials (C2PA)
Supporting jobs accept c2paSigningMode=off|franklab|user_profile, c2paSignerProfileId for user_profile, and contentOrigin=not_declared|human_edited|ai_assisted|ai_generated|human_created|camera_captured. Optional strings: humanAuthorName, humanAuthorUrl, reviewedBy, reviewedAt, reviewMethod, c2paActionDescription, c2paDisclosure. sourceMaterialUrls and originalEvidenceUrls each allow up to 10 public HTTPS URLs. Restricted human_created/camera_captured claims require an active permitting profile and evidence. Request verifiedIncomingC2paIngredient is not proof: the server verifies the result. Signing is separate from trusted-chain validation: inspect c2paStatus, c2paSigned, c2paCryptographicallyValid, c2paTrustedChainValid, c2paCawgIdentityPresent, c2paPublicVerifierRecognized, c2paManifestUrl and c2paVerificationReport. OVERLAY make/jobs DTO does not declare C2PA fields.
C2PA Signer Profiles
Listing returns active partner profiles without PEM secrets. Creation and rotation take your certificate/key; generate_self_signed creates a self-signed profile. trustLevel=trusted is rejected here. Rotation creates a new version; keep profile IDs distinct. Revocation changes profile validity.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
list | GET /franklab/api/make/c2pa/signer-profiles | {} |
generate_self_signed | POST /franklab/api/make/c2pa/signer-profiles | {"action":"generate_self_signed","label":"My signing profile"} |
create_from_pem | POST /franklab/api/make/c2pa/signer-profiles | {"action":"create_from_pem","label":"My signing profile","certificateChainPem":"<YOUR_CERTIFICATE_CHAIN_PEM>","privateKeyPem":"<YOUR_PRIVATE_KEY_PEM>"} |
rotate_from_pem | POST /franklab/api/make/c2pa/signer-profiles/{profileId}/rotate | {"label":"My signing profile","certificateChainPem":"<YOUR_CERTIFICATE_CHAIN_PEM>","privateKeyPem":"<YOUR_PRIVATE_KEY_PEM>"} |
revoke | POST /franklab/api/make/c2pa/signer-profiles/{profileId}/revoke | {} |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/make/c2pa/signer-profiles" \
-H "Authorization: Bearer $FRANKLAB_KEY"REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
action | string | required (generate_self_signed); Required input in this operation example; required (create_from_pem) |
label | string | required (generate_self_signed); label; required (create_from_pem); required (rotate_from_pem) |
allowRestrictedOriginClaims | boolean | allow Restricted Origin Claims; / true / false |
certificateChainPem | string | required (create_from_pem); certificate Chain Pem; required (rotate_from_pem) |
privateKeyPem | string | required (create_from_pem); private Key Pem; required (rotate_from_pem) |
profileId | string | required (rotate_from_pem); Path parameter: owned active signer profile ID; required (revoke) |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
action | list / generate_self_signed / create_from_pem / rotate_from_pem / revoke | |
profileId | action=rotate_from_pem | rpc://getC2paSignerProfiles |
allowRestrictedOriginClaims | action=rotate_from_pem | / true / false |
profileId | action=revoke | rpc://getC2paSignerProfiles |
Response and result
HTTP 200 {success:true,data:PROFILE[]}; profileId,id,label,status,trustLevel,allowRestrictedOriginClaims,version,profileGroupId,createdAt,updatedAt,rotatedAt,revokedAt; no PEM returned.
For rotation REST accepts optional allowRestrictedOriginClaims; omission inherits the previous value. Current Make communication does not forward this control for rotate_from_pem.
FORSAJ
video_speed posts videoUrl and speed to jobs/video-speed. audio_speed puts the audio URL in videoUrl and sends operation=speed to jobs/audio. speed: 0.25–4. audioBitrate is a string from 8k to 320k; replace the Make custom choice with the actual bitrate. Do not send mode to REST. Video duration may describe the source; inspect the output media.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
video_speed | POST /franklab/api/franklab/jobs/video-speed | {"videoUrl":"https://example.com/synthetic.mp4","speed":1.1} |
audio_speed | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","speed":1.1,"operation":"speed","audioBitrate":"64k"} |
get_task | GET /franklab/api/franklab/jobs/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/video-speed" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","speed":1.1}'REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
c2paSigningMode | string | off / franklab / user_profile; c2pa Signing Mode |
contentOrigin | string | franklab or user_profile; restricted origins require permitting user_profile and evidence; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; content Origin |
humanAuthorName | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Name |
humanAuthorUrl | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Url |
reviewedBy | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed By |
reviewedAt | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed At |
reviewMethod | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; review Method |
sourceMaterialUrls | array | c2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10 |
originalEvidenceUrls | array | c2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10 |
verifiedIncomingC2paIngredient | boolean | c2paSigningMode=franklab OR c2paSigningMode=user_profile; verified Incoming C2pa Ingredient |
c2paActionDescription | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Action Description |
c2paDisclosure | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Disclosure |
c2paSignerProfileId | string | required when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id |
videoUrl | string | required (video_speed); URL; required (audio_speed) |
speed | number | required (video_speed); min 0.25; max 4; required (audio_speed) |
callbackUrl | string | URL |
audioBitrate | string | 64k / 96k / 128k / 160k / 192k / 256k / 320k; 8k–320k string; custom is a Make control, not a REST value |
operation | string | required (audio_speed) |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
mode | video_speed / audio_speed | |
audioBitrate | mode=audio_speed | 64k / 96k / 128k / 160k / 192k / 256k / 320k / custom |
c2paSigningMode | off / franklab / user_profile | |
contentOrigin | c2paSigningMode=franklab | not_declared / human_edited / ai_assisted / ai_generated |
c2paSignerProfileId | c2paSigningMode=user_profile | rpc://getC2paSignerProfiles |
contentOrigin | c2paSigningMode=user_profile | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
Response and result
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; poll the returned taskId.
HOLST
Supply imageUrl and either operation or steps (up to 20 entries, each with op). outputFormat: jpeg/jpg/png/webp/avif/gif; outputQuality: 1–100. The current top-level DTO strips several Make fields: watermarkPosition/Opacity/Scale, textPosition/fontSize/color/font, brightness/saturation/hue/contrast/gamma, imageUrls/columns/gap/background. For watermark, text, adjust and collage use steps with position/opacity/scale, content/fontSize/color, brightness and imageUrls/columns/gap respectively. HOLST does not accept a custom font in these steps. REST accepts removeBgProvider, alphaMatting, ocrLanguages, metadataEngine and includeGps, but Make communication omits their top-level mapping. See the operation notes below for availability.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
resize | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"resize","width":64,"height":64} |
crop | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"crop","aspectRatio":"1:1"} |
filter | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"filter","filterPreset":"grayscale"} |
watermark | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"watermark","imageUrl":"https://example.com/synthetic.png","position":"bottom-right","opacity":0.5,"scale":0.15}],"outputFormat":"png"} |
image_overlay | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"image_overlay","overlayImageUrl":"https://example.com/synthetic.png","overlayScale":0.25} |
text | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"text","content":"Synthetic test","fontSize":24,"color":"#FFFFFF","position":"center"}],"outputFormat":"png"} |
rotate | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"rotate","angle":90} |
flip | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"flip"} |
flop | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"flop"} |
blur | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"blur","sigma":2} |
sharpen | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"sharpen","sigma":1} |
strip_meta | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"strip_meta"} |
write_exif | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"write_exif","imageDescription":"Synthetic test"} |
write_metadata | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"write_metadata","metaTitle":"Synthetic test"} |
replace_metadata | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"replace_metadata","metaTitle":"Synthetic test"} |
mask | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"mask","shape":"rounded","radius":8} |
collage | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"collage","imageUrls":["https://example.com/synthetic.png","https://example.com/synthetic.png"],"columns":2,"gap":4}],"outputFormat":"png"} |
adjust | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"adjust","brightness":1.1}],"outputFormat":"png"} |
remove_bg | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"remove_bg","removeBgProvider":"local"} |
strip_gps | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"strip_gps"} |
pipeline | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"resize","width":64,"height":64}],"outputFormat":"png"} |
lookup_image-presets | GET /franklab/api/franklab/integrations/text-sticker/image-presets | |
lookup_image-formats | GET /franklab/api/franklab/integrations/text-sticker/image-formats | |
lookup_fonts | GET /franklab/api/franklab/integrations/text-sticker/fonts | |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | |
get_task | GET /franklab/api/franklab/jobs/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/image" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"imageUrl":"https://example.com/synthetic.png","operation":"resize","width":64,"height":64}'REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
imageUrl | string | required (resize); URL; required (crop); required (filter); required (watermark); required (image_overlay); required (text); required (rotate); required (flip); required (flop); required (blur); required (sharpen); required (info); required (strip_meta); required (write_exif); required (write_metadata); required (replace_metadata); required (mask); required (collage); required (adjust); required (read_metadata); required (remove_bg); required (ocr); required (strip_gps); required (pipeline) |
outputFormat | string | jpeg / png / webp / avif / gif; output Format |
outputQuality | number | min 1; max 100 |
c2paSigningMode | string | off / franklab / user_profile; c2pa Signing Mode |
contentOrigin | string | franklab or user_profile; restricted origins require permitting user_profile and evidence; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; content Origin |
humanAuthorName | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Name |
humanAuthorUrl | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Url |
reviewedBy | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed By |
reviewedAt | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed At |
reviewMethod | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; review Method |
sourceMaterialUrls | array | c2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10 |
originalEvidenceUrls | array | c2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10 |
verifiedIncomingC2paIngredient | boolean | c2paSigningMode=franklab OR c2paSigningMode=user_profile; verified Incoming C2pa Ingredient |
c2paActionDescription | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Action Description |
c2paDisclosure | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Disclosure |
c2paSignerProfileId | string | required when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id |
preset | string | rpc://getImagePresets; preset |
width | number | width |
height | number | height |
fit | string | cover / contain / fill / inside / outside; fit |
operation | string | required (resize); required (crop); required (filter); required (image_overlay); required (rotate); required (flip); required (flop); required (blur); required (sharpen); required (info); required (strip_meta); required (write_exif); required (write_metadata); required (replace_metadata); required (mask); required (read_metadata); required (remove_bg); required (ocr); required (strip_gps) |
aspectRatio | string | aspect Ratio |
filterPreset | string | grayscale / sepia / warm / cold / vibrant / muted / dramatic; filter Preset |
steps | array | required (watermark); max items 20; required (text); required (collage); required (adjust); required (pipeline) |
steps[].op | string | required (watermark); resize / crop / filter / watermark / text / rotate / flip / flop / blur / sharpen / mask / collage / adjust / format / info / read_metadata / remove_bg / ocr / strip_meta / write_exif / write_metadata / replace_metadata / strip_gps; steps[].op; required (text); required (collage); required (adjust); required (pipeline) |
steps[].preset | string | steps[].op=resize OR steps[].op=filter; grayscale / sepia / warm / cold / vibrant / muted / dramatic; rpc://getImagePresets; steps[].preset |
steps[].width | number | steps[].op=resize OR steps[].op=crop OR steps[].op=collage; steps[].width |
steps[].height | number | steps[].op=resize OR steps[].op=crop OR steps[].op=collage; steps[].height |
steps[].fit | string | steps[].op=resize; cover / contain / fill / inside / outside; steps[].fit |
steps[].aspectRatio | string | steps[].op=crop; steps[].aspect Ratio |
steps[].left | number | steps[].op=crop; steps[].left |
steps[].top | number | steps[].op=crop; steps[].top |
steps[].brightness | number | steps[].op=filter OR steps[].op=adjust; steps[].brightness |
steps[].saturation | number | steps[].op=filter OR steps[].op=adjust; steps[].saturation |
steps[].hue | number | steps[].op=filter OR steps[].op=adjust; steps[].hue |
steps[].imageUrl | string | steps[].op=watermark; steps[].image Url |
steps[].position | string | steps[].op=watermark OR steps[].op=text; bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; steps[].position |
steps[].opacity | number | steps[].op=watermark; steps[].opacity |
steps[].scale | number | steps[].op=watermark; steps[].scale |
steps[].margin | number | steps[].op=watermark; steps[].margin |
steps[].content | string | steps[].op=text; steps[].content |
steps[].fontSize | number | steps[].op=text; steps[].font Size |
steps[].color | string | steps[].op=text; steps[].color |
steps[].bgColor | string | steps[].op=text; steps[].bg Color |
steps[].bgOpacity | number | steps[].op=text; steps[].bg Opacity |
steps[].align | string | steps[].op=text; center / left / right; steps[].align |
steps[].maxWidth | number | steps[].op=text; steps[].max Width |
steps[].padding | number | steps[].op=text; steps[].padding |
steps[].angle | number | steps[].op=rotate; steps[].angle |
steps[].background | string | steps[].op=rotate OR steps[].op=collage; steps[].background |
steps[].sigma | number | steps[].op=blur OR steps[].op=sharpen; steps[].sigma |
steps[].shape | string | steps[].op=mask; rounded / circle; steps[].shape |
steps[].radius | number | steps[].op=mask; steps[].radius |
steps[].imageUrls | array | steps[].op=collage; steps[].image Urls |
steps[].columns | number | steps[].op=collage; steps[].columns |
steps[].gap | number | steps[].op=collage; steps[].gap |
steps[].contrast | number | steps[].op=adjust; steps[].contrast |
steps[].gamma | number | steps[].op=adjust; steps[].gamma |
steps[].format | string | steps[].op=format; jpeg / png / webp / avif / gif; steps[].format |
steps[].metadataEngine | string | steps[].op=read_metadata; sharp / exiftool; steps[].metadata Engine |
steps[].includeGps | boolean | steps[].op=read_metadata; steps[].include Gps |
steps[].removeBgProvider | string | steps[].op=remove_bg; local; steps[].remove Bg Provider |
steps[].alphaMatting | boolean | steps[].op=remove_bg; steps[].alpha Matting |
steps[].ocrLanguages | string | steps[].op=ocr; steps[].ocr Languages |
steps[].metaTitle | string | steps[].op=write_metadata OR steps[].op=replace_metadata; steps[].meta Title |
steps[].metaDescription | string | steps[].op=write_metadata OR steps[].op=replace_metadata; steps[].meta Description |
steps[].metaKeywords | string | steps[].op=write_metadata; steps[].meta Keywords |
steps[].altText | string | steps[].op=write_metadata OR steps[].op=replace_metadata; steps[].alt Text |
steps[].semanticDescription | string | steps[].op=write_metadata; steps[].semantic Description |
steps[].semanticTags | string | steps[].op=write_metadata OR steps[].op=replace_metadata; steps[].semantic Tags |
watermarkImageUrl | string | URL |
overlayImageUrl | string | required (image_overlay); URL |
overlayPosition | string | top-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right; overlay Position |
overlayOpacity | number | min 0; max 1 |
overlayScale | number | min 0.01; max 1 |
overlayMargin | number | min 0 |
content | string | content |
angle | number | angle |
sigma | number | sigma |
imageDescription | string | image Description |
copyright | string | copyright |
artist | string | artist |
metaTitle | string | meta Title |
metaDescription | string | meta Description |
metaKeywords | string | meta Keywords |
metaAuthor | string | meta Author |
metaCopyright | string | meta Copyright |
metaCredit | string | meta Credit |
metaSoftware | string | meta Software |
metaLicenseUrl | string | URL |
metaAcquireLicensePage | string | URL |
metaSourceUrl | string | URL |
metaDateCreated | string | meta Date Created |
metaDigitalSourceType | string | meta Digital Source Type |
altText | string | alt Text |
semanticDescription | string | semantic Description |
semanticTags | string | semantic Tags |
semanticScene | string | semantic Scene |
semanticStyle | string | semantic Style |
semanticMood | string | semantic Mood |
semanticColors | string | semantic Colors |
semanticUseCases | string | semantic Use Cases |
ocrText | string | ocr Text |
shape | string | rounded / circle; shape |
radius | number | radius |
metadataEngine | string | sharp / exiftool; metadata Engine |
includeGps | boolean | include Gps |
removeBgProvider | string | local; remove Bg Provider |
alphaMatting | boolean | alpha Matting |
ocrLanguages | string | ocr Languages |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
operation | resize / crop / filter / watermark / image_overlay / text / rotate / flip / flop / blur / sharpen / info / strip_meta / write_exif / write_metadata / replace_metadata / mask / collage / adjust / read_metadata / remove_bg / ocr / strip_gps | |
preset | operation=resize | rpc://getImagePresets |
fit | operation=resize | cover / contain / fill / inside / outside |
filterPreset | operation=filter | grayscale / sepia / warm / cold / vibrant / muted / dramatic |
watermarkPosition | operation=watermark | bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center |
overlayPosition | operation=image_overlay | top-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right |
textFont | operation=text | rpc://getFonts |
textPosition | operation=text | center / top / bottom / top-left / top-right / bottom-left / bottom-right |
shape | operation=mask | rounded / circle |
metadataEngine | operation=read_metadata | sharp / exiftool |
removeBgProvider | operation=remove_bg | local |
outputFormat | jpeg / png / webp / avif / gif | |
c2paSigningMode | off / franklab / user_profile | |
contentOrigin | c2paSigningMode=franklab | not_declared / human_edited / ai_assisted / ai_generated |
c2paSignerProfileId | c2paSigningMode=user_profile | rpc://getC2paSignerProfiles |
contentOrigin | c2paSigningMode=user_profile | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
steps[].op | resize / crop / filter / watermark / text / rotate / flip / flop / blur / sharpen / mask / collage / adjust / format / info / read_metadata / remove_bg / ocr / strip_meta / write_exif / write_metadata / replace_metadata / strip_gps | |
steps[].preset | steps[].op=resize | rpc://getImagePresets |
steps[].fit | steps[].op=resize | cover / contain / fill / inside / outside |
steps[].preset | steps[].op=filter | grayscale / sepia / warm / cold / vibrant / muted / dramatic |
steps[].position | steps[].op=watermark | bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center |
steps[].position | steps[].op=text | center / top-center / bottom-center / top-left / top-right / bottom-left / bottom-right |
steps[].align | steps[].op=text | center / left / right |
steps[].shape | steps[].op=mask | rounded / circle |
steps[].format | steps[].op=format | jpeg / png / webp / avif / gif |
steps[].metadataEngine | steps[].op=read_metadata | sharp / exiftool |
steps[].removeBgProvider | steps[].op=remove_bg | local |
Response and result
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; poll the returned taskId.
Sharpen steps accept sigma; Make flat/jagged are absent from the REST DTO. write_exif steps do not declare imageDescription/copyright/artist: use single operation=write_exif.
Results for info, read_metadata, ocr are temporarily unavailable through this jobs route. Contact support before using these operations.
INDEXLIFT
execution_mode=sync calls audit-landing with {url,mode}; async_wait calls audit-landing/async and its dedicated status route. Make pageUrl maps to url. mode: single-page or crawl. Resume with the saved taskId instead of submitting again. idempotency_key is absent from the DTO: use the Idempotency-Key header for async. The synchronous route forwards the SEO service response; it does not establish the media-job billing or response contract.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
async_wait | POST /franklab/api/franklab/jobs/audit-landing/async | {"url":"https://example.com/","mode":"single-page"} |
sync | POST /franklab/api/franklab/jobs/audit-landing | {"url":"https://example.com/","mode":"single-page"} |
get_task | GET /franklab/api/franklab/jobs/audit-landing/async/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/audit-landing/async" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"url":"https://example.com/","mode":"single-page"}'For async POST add -H "Idempotency-Key: your-unique-request-id". Reuse a key only for the same request.
REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
url | string | required (async_wait); Public HTTP(S) URL; required (sync) |
mode | string | single-page / crawl |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
execution_mode | async_wait / sync | |
mode | single-page / crawl |
Response and result
Sync forwards SEO response; async: {success:true,data:{taskId,task_id,status:"queued",phase,idempotency_key,idempotency_hit,final_cost_franks,cost_currency,cost_status:"reserved",cost_unit}}.
Asynchronous INDEXLIFT does not reserve funds. Read the report at data.result.data.seo_report and suggestions, when present, at data.result.data.brief_suggestions. On successful completion, cost_status=confirmed and the cost is zero.
KLEY
operation selects the route: speed → video-speed; subtitles → subtitles; overlay/image_on_video → overlay; all others → montage. concat accepts videos[] with url and the transition to the next clip; transition fields on the last item are ignored. transitionSoundMode=none/auto/manual; manual requires transitionSoundPreset, volume 0–1.5. Do not send a top-level transitionType string. slideshow requires at least 2 images; slideTransitionDuration must be less than slideDuration. quality_compare requires referenceVideoUrl. See the comparison and analysis limitations below.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
concat | POST /franklab/api/franklab/jobs/montage | {"operation":"concat","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}]} |
frame | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"frame","position":"start","format":"png"} |
trim | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"trim","startTime":0,"duration":1} |
reverse | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"reverse"} |
crop | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"crop","aspectRatio":"1:1"} |
resize | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"resize","width":160,"height":160} |
write_tags | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"write_tags","tagTitle":"Synthetic test"} |
replace_tags | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"replace_tags","tagTitle":"Synthetic test"} |
strip_tags | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"strip_tags"} |
gif | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"gif","duration":1,"fps":5,"width":160} |
fade | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"fade","fadeInDuration":0.2} |
thumbnail_smart | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"thumbnail_smart"} |
transcode | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"transcode","videoCodec":"libx264","crf":28} |
pip | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"pip","overlayVideoUrl":"https://example.com/synthetic.mp4","pipScale":0.25} |
image_on_video | POST /franklab/api/franklab/jobs/overlay | {"videoUrl":"https://example.com/synthetic.mp4","operation":"image_on_video","overlayImageUrl":"https://example.com/synthetic.png","overlayScale":0.25} |
video_on_image | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"video_on_image","imageUrl":"https://example.com/synthetic.png","overlayVideoUrl":"https://example.com/synthetic.mp4","durationMode":"overlay"} |
slideshow | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"slideshow","imageUrls":["https://example.com/synthetic.png","https://example.com/synthetic.png"],"slideDuration":1,"slideTransition":"none"} |
speed | POST /franklab/api/franklab/jobs/video-speed | {"videoUrl":"https://example.com/synthetic.mp4","speed":1.1} |
subtitles | POST /franklab/api/franklab/jobs/subtitles | {"videoUrl":"https://example.com/synthetic.mp4","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}]} |
overlay | POST /franklab/api/franklab/jobs/overlay | {"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50}]} |
stabilize | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"stabilize"} |
split_screen | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"split_screen","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}],"splitLayout":"horizontal"} |
slow_motion | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"slow_motion","slowFactor":2,"slowFps":30} |
denoise | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"denoise","denoiseMethod":"hqdn3d","denoiseStrength":"low"} |
hdr_to_sdr | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"hdr_to_sdr","tonemapMethod":"hable"} |
animated | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"animated","animatedFormat":"webp","duration":1,"fps":5,"width":160} |
mezzanine | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"mezzanine","mezzanineCodec":"prores","proresProfile":0} |
lookup_transitions | GET /franklab/api/franklab/integrations/text-sticker/transitions | |
lookup_transition-sounds | GET /franklab/api/franklab/integrations/text-sticker/transition-sounds | |
lookup_aspect-ratios | GET /franklab/api/franklab/integrations/text-sticker/aspect-ratios | |
lookup_resize-presets | GET /franklab/api/franklab/integrations/text-sticker/resize-presets | |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | |
get_task | GET /franklab/api/franklab/jobs/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/montage" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"operation":"concat","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}]}'REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
callbackUrl | string | URL |
videos | array | max items 20 |
maxTransitionRatio | number | max Transition Ratio |
operation | string | required (concat); required (frame); required (trim); required (reverse); required (crop); required (resize); required (probe); required (write_tags); required (replace_tags); required (strip_tags); required (gif); required (fade); required (thumbnail_smart); required (transcode); required (pip); required (image_on_video); required (video_on_image); required (slideshow); required (quality_compare); required (stabilize); required (scenes); required (qc_report); required (split_screen); required (slow_motion); required (denoise); required (hdr_to_sdr); required (animated); required (mezzanine) |
videoUrl | string | required (frame); URL; required (trim); required (reverse); required (crop); required (resize); required (probe); required (write_tags); required (replace_tags); required (strip_tags); required (gif); required (fade); required (thumbnail_smart); required (transcode); required (pip); required (image_on_video); required (video_on_image); required (slideshow); required (speed); required (subtitles); required (overlay); required (quality_compare); required (stabilize); required (scenes); required (qc_report); required (split_screen); required (slow_motion); required (denoise); required (hdr_to_sdr); required (animated); required (mezzanine) |
position | string | first / middle / last / custom; position |
customTime | number | custom Time |
format | string | jpg / png; format |
startTime | number | start Time; min 0 |
duration | number | duration; min 0 |
aspectRatio | string | rpc://getAspectRatios; aspect Ratio |
cropW | number | crop W |
cropH | number | crop H |
cropX | number | crop X |
cropY | number | crop Y |
preset | string | rpc://getResizePresets; preset; fast / medium / slow / veryslow |
width | number | width |
height | number | height |
tagTitle | string | tag Title |
tagArtist | string | tag Artist |
tagDescription | string | tag Description |
tagComment | string | tag Comment |
tagDate | string | tag Date |
tagKeywords | string | tag Keywords |
tagCopyright | string | tag Copyright |
tagSoftware | string | tag Software |
tagGenre | string | tag Genre |
tagLanguage | string | tag Language |
tagCreationTime | string | tag Creation Time |
summary | string | summary |
transcript | string | transcript |
thumbnailAltText | string | thumbnail Alt Text |
c2paSigningMode | string | off / franklab / user_profile; c2pa Signing Mode |
c2paSignerProfileId | string | required when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id |
contentOrigin | string | franklab or user_profile; restricted origins require permitting user_profile and evidence; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; content Origin |
sourceMaterialUrls | array | max items 10 |
originalEvidenceUrls | array | max items 10 |
verifiedIncomingC2paIngredient | boolean | verified Incoming C2pa Ingredient |
c2paActionDescription | string | c2pa Action Description |
c2paDisclosure | string | c2pa Disclosure |
fps | number | fps |
fadeInDuration | number | fade In Duration |
fadeOutDuration | number | fade Out Duration |
videoCodec | string | libx264 / libx265 / libvpx-vp9 / copy; video Codec |
crf | number | crf |
audioBitrate | string | 64k / 96k / 128k / 160k / 192k / 256k / 320k; 8k–320k string; custom is a Make control, not a REST value |
overlayVideoUrl | string | required (pip); URL; required (video_on_image) |
pipPosition | string | top-left / top-right / bottom-left / bottom-right / center; pip Position |
pipScale | number | pip Scale |
includeBaseAudio | boolean | include Base Audio |
baseAudioVolume | number | base Audio Volume |
includeOverlayAudio | boolean | include Overlay Audio |
overlayAudioVolume | number | overlay Audio Volume |
overlayImageUrl | string | required (image_on_video); URL |
overlayPosition | string | top-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right; overlay Position |
overlayScale | number | min 0.01; max 1 |
overlayOpacity | number | min 0; max 1 |
overlayMargin | number | min 0 |
endTime | number | min 0 |
imageUrl | string | required (video_on_image); URL |
durationMode | string | overlay / fixed; duration Mode |
imageUrls | array | max items 20 |
slideDuration | number | slide Duration |
slideTransition | string | rpc://getTransitions; slide Transition |
slideTransitionDuration | number | slide Transition Duration |
speed | number | required (speed); min 0.25; max 4 |
templateId | string | template Id |
language | string | ru / en / auto; language |
highlightMode | string | none / keywords / karaoke; highlight Mode |
platform | string | none / tiktok / instagram_reels / youtube_shorts; platform |
safeZonePreset | string | safe Zone Preset |
subtitles | array | max items 500 |
overlays | array | max items 20 |
configId | string | config Id |
referenceVideoUrl | string | required (quality_compare); URL |
shakiness | number | min 1; max 10 |
smoothing | number | min 1; max 100 |
sceneThreshold | number | min 1; max 100 |
sceneThumbnails | boolean | scene Thumbnails |
splitLayout | string | horizontal / vertical / grid_2x2; split Layout |
slowFactor | number | 2 / 4; slow Factor |
slowFps | number | 30 / 60; slow Fps |
denoiseMethod | string | hqdn3d / nlmeans; denoise Method |
denoiseStrength | string | low / medium / high; denoise Strength |
tonemapMethod | string | hable / mobius / reinhard; tonemap Method |
animatedFormat | string | webp / avif; animated Format |
mezzanineCodec | string | prores / dnxhd; mezzanine Codec |
proresProfile | number | 0 / 1 / 2 / 3; prores Profile |
dnxhdProfile | string | dnxhr_lb / dnxhr_sq / dnxhr_hq / dnxhr_hqx; dnxhd Profile |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
operation | concat / frame / trim / reverse / crop / resize / probe / write_tags / replace_tags / strip_tags / gif / fade / thumbnail_smart / transcode / pip / image_on_video / video_on_image / slideshow / speed / subtitles / overlay / quality_compare / stabilize / scenes / qc_report / split_screen / slow_motion / denoise / hdr_to_sdr / animated / mezzanine | |
position | operation=frame | first / middle / last / custom |
format | operation=frame | jpg / png |
aspectRatio | operation=crop | rpc://getAspectRatios |
preset | operation=resize | rpc://getResizePresets |
c2paSigningMode | operation=write_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=write_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=write_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
c2paSigningMode | operation=replace_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=replace_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=replace_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
format | operation=thumbnail_smart | jpg / png |
videoCodec | operation=transcode | libx264 / libx265 / libvpx-vp9 / copy |
preset | operation=transcode | fast / medium / slow / veryslow |
pipPosition | operation=pip | top-left / top-right / bottom-left / bottom-right / center |
overlayPosition | operation=image_on_video | top-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right |
pipPosition | operation=video_on_image | top-left / top-right / bottom-left / bottom-right / center |
durationMode | operation=video_on_image | overlay / fixed |
slideTransition | operation=slideshow | rpc://getTransitions |
subtitleLanguage | operation=subtitles | ru / en / auto |
highlightMode | operation=subtitles | none / keywords / karaoke |
subtitlePlatform | operation=subtitles | none / tiktok / instagram_reels / youtube_shorts |
splitLayout | operation=split_screen | horizontal / vertical / grid_2x2 |
slowFactor | operation=slow_motion | 2 / 4 |
slowFps | operation=slow_motion | 30 / 60 |
denoiseMethod | operation=denoise | hqdn3d / nlmeans |
denoiseStrength | operation=denoise | low / medium / high |
tonemapMethod | operation=hdr_to_sdr | hable / mobius / reinhard |
animatedFormat | operation=animated | webp / avif |
mezzanineCodec | operation=mezzanine | prores / dnxhd |
proresProfile | operation=mezzanine | 0 / 1 / 2 / 3 |
dnxhdProfile | operation=mezzanine | dnxhr_lb / dnxhr_sq / dnxhr_hq / dnxhr_hqx |
Response and result
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; poll the returned taskId.
Results for probe, quality_compare, qc_report, scenes are temporarily unavailable through this jobs route. Contact support before using these operations.
OVERLAY
Creation and polling use make/jobs. The artifact URL is data.result.downloadUrl. overlays has up to 20 objects: type=text/sticker/animated_sticker/emoji/watermark with type-specific fields. Use IDs from the lookup routes. Text layers use content; watermark layers use imageUrl. platform and configId control placement.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
overlay | POST /franklab/api/make/jobs/overlay | {"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50,"fontSize":24,"color":"#FFFFFF"}]} |
lookup_stickers_animated_true | GET /franklab/api/franklab/integrations/text-sticker/stickers?animated=true | |
lookup_emojis | GET /franklab/api/franklab/integrations/text-sticker/emojis | |
lookup_fonts | GET /franklab/api/franklab/integrations/text-sticker/fonts | |
lookup_stickers_animated_false | GET /franklab/api/franklab/integrations/text-sticker/stickers?animated=false | |
lookup_safe-zone-options | GET /franklab/api/franklab/integrations/text-sticker/safe-zone-options | |
lookup_subtitle-templates | GET /franklab/api/franklab/integrations/text-sticker/subtitle-templates | |
lookup_transitions | GET /franklab/api/franklab/integrations/text-sticker/transitions | |
lookup_video-effects | GET /franklab/api/franklab/integrations/text-sticker/video-effects | |
get_task | GET /franklab/api/make/jobs/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/make/jobs/overlay" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50,"fontSize":24,"color":"#FFFFFF"}]}'REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
videoUrl | string | required (overlay); URL |
platform | string | none / tiktok / instagram_reels / youtube_shorts; platform |
configId | string | config Id |
overlays | array | max items 20 |
overlays[].type | string | required (overlay); text / emoji / sticker / animated_sticker / watermark; overlays[].type |
overlays[].content | string | overlays[].content |
overlays[].stickerId | string | rpc://getOverlayStickers; overlays[].sticker Id |
overlays[].animatedStickerId | string | rpc://getOverlayAnimatedStickers; overlays[].animated Sticker Id |
overlays[].imageUrl | string | overlays[].image Url |
overlays[].opacity | number | overlays[].opacity |
overlays[].scale | number | overlays[].scale |
overlays[].position | string | / bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; overlays[].position |
overlays[].margin | number | overlays[].margin |
overlays[].emojiId | string | rpc://getOverlayEmojis; overlays[].emoji Id |
overlays[].placement | string | custom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe; overlays[].placement |
overlays[].x | number | overlays[].x |
overlays[].y | number | overlays[].y |
overlays[].startTime | number | overlays[].start Time |
overlays[].endTime | number | overlays[].end Time |
overlays[].fontSize | number | overlays[].font Size |
overlays[].color | string | overlays[].color |
overlays[].font | string | rpc://getOverlayFonts; overlays[].font |
overlays[].shadowColor | string | overlays[].shadow Color |
overlays[].shadowX | number | overlays[].shadow X |
overlays[].shadowY | number | overlays[].shadow Y |
overlays[].width | number | overlays[].width |
overlays[].height | number | overlays[].height |
callbackUrl | string | URL |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
platform | none / tiktok / instagram_reels / youtube_shorts | |
overlays[].type | text / emoji / sticker / animated_sticker / watermark | |
overlays[].stickerId | rpc://getOverlayStickers | |
overlays[].animatedStickerId | rpc://getOverlayAnimatedStickers | |
overlays[].position | / bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center | |
overlays[].emojiId | rpc://getOverlayEmojis | |
overlays[].placement | custom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe | |
overlays[].font | rpc://getOverlayFonts |
Response and result
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; poll the returned taskId.
PLASTINKA
For audio processing, the source audio URL is named videoUrl. overlay/replace/fit also need audioUrl or sampleId; Make apply_sample becomes operation=sampleOperation (overlay/replace). merge uses audioUrls[] plus videoUrl equal to the first URL. save_sample returns a resource id, not a task: JSON {name,sampleUrl} or multipart name+sampleFile, exactly one source, up to 50 MiB, mp3/wav/aac/m4a/ogg/flac. sampleEndTime must exceed sampleStartTime. Make exposes sampleSourceMode=file but sends JSON without sampleFile; use direct multipart REST.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
save_sample | POST /franklab/api/franklab/audio-samples | {"name":"Synthetic sample","sampleUrl":"https://example.com/synthetic.wav"} |
apply_sample | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.mp4","operation":"overlay","sampleId":"<SAMPLE_UUID>"} |
overlay | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"overlay","audioUrl":"https://example.com/synthetic.wav"} |
replace | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"replace","audioUrl":"https://example.com/synthetic.wav"} |
fit | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"fit","audioUrl":"https://example.com/synthetic.wav","fitStrategy":"trim_pad","fitAudioMode":"replace"} |
extract | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"extract"} |
speed | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"speed","speed":1.1} |
remove | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"remove"} |
write_tags | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"write_tags","tagTitle":"Synthetic test"} |
replace_tags | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"replace_tags","tagTitle":"Synthetic test"} |
strip_tags | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"strip_tags"} |
normalize | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"normalize","targetLoudness":-16} |
trim | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"trim","startTime":0,"duration":1} |
convert | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"convert","targetFormat":"mp3","audioBitrate":"64k"} |
fade | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"fade","fadeInDuration":0.2} |
merge | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"merge","audioUrls":["https://example.com/synthetic.wav","https://example.com/synthetic.wav"]} |
spectrogram | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"spectrogram","imageWidth":320,"imageHeight":240} |
waveform_image | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"waveform_image","imageWidth":320,"imageHeight":240} |
enhance_dialogue | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"enhance_dialogue","enhanceOriginal":1,"enhanceAmount":1} |
stereo_tools | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"stereo_tools","stereoPreset":"mono"} |
lookup_audio-samples | GET /franklab/api/franklab/integrations/text-sticker/audio-samples | |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | |
get_task | GET /franklab/api/franklab/jobs/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
save_sample_file | POST /franklab/api/franklab/audio-samples | |
list_samples | GET /franklab/api/franklab/audio-samples | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/audio" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","operation":"overlay","sampleId":"<SAMPLE_UUID>"}'curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/audio-samples" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-F "name=Synthetic sample" -F "sampleFile=@synthetic.wav;type=audio/wav"REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
name | string | required (save_sample); max length 120; required (save_sample_file); Non-empty, maximum 120 characters |
sampleUrl | string | required when sampleSourceMode=url; URL |
sampleStartTime | number | min 0; Seconds >=0 |
sampleEndTime | number | min 0; Seconds greater than start |
videoUrl | string | required (apply_sample); URL; required (overlay); required (replace); required (fit); required (extract); required (speed); required (remove); required (probe); required (write_tags); required (replace_tags); required (strip_tags); required (normalize); required (trim); required (convert); required (fade); required (merge); required (quality_compare); required (analyze); required (spectrogram); required (waveform_image); required (fingerprint); required (enhance_dialogue); required (stereo_tools) |
sampleId | string | required (apply_sample); rpc://getAudioSamples; sample Id |
operation | string | required (apply_sample); overlay / replace / fit; operation; required (overlay); required (replace); required (fit); required (extract); required (speed); required (remove); required (probe); required (write_tags); required (replace_tags); required (strip_tags); required (normalize); required (trim); required (convert); required (fade); required (merge); required (quality_compare); required (analyze); required (spectrogram); required (waveform_image); required (fingerprint); required (enhance_dialogue); required (stereo_tools) |
insertAtTime | number | min 0 |
audioStartTime | number | min 0 |
audioEndTime | number | min 0 |
audioVolume | number | min 0; max 2 |
videoVolume | number | min 0; max 2; fitAudioMode=mix |
loopIfShort | boolean | loop If Short; fitStrategy=trim_pad |
callbackUrl | string | URL |
audioUrl | string | required (overlay); URL; required (replace); required (fit) |
audioFadeOut | boolean | audio Fade Out |
fitAudioMode | string | required (fit); replace / mix; fit Audio Mode |
fitStrategy | string | required (fit); trim_pad / stretch; fit Strategy |
speedMode | string | required when fitStrategy=stretch; standard / voice_natural; speed Mode; required (speed) |
speed | number | required (speed); min 0.25; max 4 |
audioBitrate | string | 64k / 96k / 128k / 160k / 192k / 256k / 320k; 8k–320k string; custom is a Make control, not a REST value |
tagTitle | string | tag Title |
tagArtist | string | tag Artist |
tagAlbum | string | tag Album |
tagGenre | string | tag Genre |
tagComment | string | tag Comment |
tagDate | string | tag Date |
tagDescription | string | tag Description |
tagKeywords | string | tag Keywords |
tagCopyright | string | tag Copyright |
tagComposer | string | tag Composer |
tagAlbumArtist | string | tag Album Artist |
tagTrack | string | tag Track |
tagDisc | string | tag Disc |
tagPublisher | string | tag Publisher |
tagBpm | string | tag Bpm |
tagLanguage | string | tag Language |
tagSoftware | string | tag Software |
summary | string | summary |
transcript | string | transcript |
c2paSigningMode | string | off / franklab / user_profile; c2pa Signing Mode |
c2paSignerProfileId | string | required when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id |
contentOrigin | string | franklab or user_profile; restricted origins require permitting user_profile and evidence; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; content Origin |
sourceMaterialUrls | array | max items 10 |
originalEvidenceUrls | array | max items 10 |
verifiedIncomingC2paIngredient | boolean | verified Incoming C2pa Ingredient |
c2paActionDescription | string | c2pa Action Description |
c2paDisclosure | string | c2pa Disclosure |
targetLoudness | number | target Loudness |
targetTruePeak | number | target True Peak |
startTime | number | min 0 |
duration | number | required (trim); min 0 |
targetFormat | string | required (convert); mp3 / aac / wav / ogg / flac / alac / opus; target Format |
fadeInDuration | number | min 0 |
fadeOutDuration | number | min 0 |
audioUrls | array | max items 20 |
referenceAudioUrl | string | required (quality_compare); URL |
imageWidth | number | min 160; max 4096 |
imageHeight | number | min 120; max 2160 |
spectrogramColor | string | intensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain; spectrogram Color |
spectrogramScale | string | log / lin / sqrt / cbrt / 4thrt / 5thrt; spectrogram Scale |
spectrogramLegend | boolean | spectrogram Legend |
waveformColor | string | waveform Color |
waveformBgColor | string | waveform Bg Color |
waveformSplitChannels | boolean | waveform Split Channels |
enhanceOriginal | number | min 0; max 1 |
enhanceAmount | number | min 0; max 3 |
stereoPreset | string | widen / narrow / mono; stereo Preset |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
sampleFile | binary | required (save_sample_file); multipart/form-data; <=50 MiB; mp3/wav/aac/m4a/ogg/flac |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
operation | save_sample / apply_sample / overlay / replace / fit / extract / speed / remove / probe / write_tags / replace_tags / strip_tags / normalize / trim / convert / fade / merge / quality_compare / analyze / spectrogram / waveform_image / fingerprint / enhance_dialogue / stereo_tools | |
sampleSourceMode | operation=save_sample | url / file |
sampleId | operation=apply_sample | rpc://getAudioSamples |
sampleOperation | operation=apply_sample | overlay / replace / fit |
fitAudioMode | operation=fit | replace / mix |
fitStrategy | operation=fit | trim_pad / stretch |
speedMode | operation=fit; fitStrategy=stretch | standard / voice_natural |
speedMode | operation=speed | standard / voice_natural |
audioBitrate | operation=speed | 64k / 96k / 128k / 160k / 192k / 256k / 320k / custom |
c2paSigningMode | operation=write_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=write_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=write_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
c2paSigningMode | operation=replace_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=replace_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=replace_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
targetFormat | operation=convert | mp3 / aac / wav / ogg / flac / alac / opus |
audioBitrate | operation=convert | 64k / 96k / 128k / 160k / 192k / 256k / 320k / custom |
spectrogramColor | operation=spectrogram | intensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain |
spectrogramScale | operation=spectrogram | log / lin / sqrt / cbrt / 4thrt / 5thrt |
stereoPreset | operation=stereo_tools | widen / narrow / mono |
Response and result
HTTP 200 {success:true,data:{id,name,sourceUrl,mimeType,format,durationMs,clipStartTime,clipEndTime,isSystem,createdAt}}; no task polling.
Results for probe, quality_compare, analyze, fingerprint are temporarily unavailable through this jobs route. Contact support before using these operations.
SPEKTR
background_remove uses X-API-Key and Recraft {model:"recraft/remove-background",input:{image:URL}}. Provider envelope: code/data.taskId; status is data.state; results are JSON.parse(data.resultJson).resultUrls[]. Check the Recraft tariff separately from jobs operations. Other operations use Bearer and jobs. waveform maps Make audioUrl → videoUrl; video_round → operation=round; video_remove_bg → operation=remove_bg. Bria image replacement requires exactly one of prompt/refImages; erase_by_text needs objectName; lifestyle needs sceneDescription. Bria video erase over 5 seconds requires autoTrim=true; the backend verifies duration. Make task_id resume may choose Recraft polling for jobs; REST clients must retain the polling route with the ID.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
background_remove | POST /franklab/api/v1/recraft/create-task | {"model":"recraft/remove-background","input":{"image":"https://example.com/synthetic.png"}} See Recraft access and tariff conditions above. |
bria_image_remove_bg | POST /franklab/api/franklab/jobs/image | {"operation":"bria_image_remove_bg","imageUrl":"https://example.com/synthetic.png"} |
bria_image_replace_bg | POST /franklab/api/franklab/jobs/image | {"operation":"bria_image_replace_bg","imageUrl":"https://example.com/synthetic.png","prompt":"Plain studio background"} |
bria_erase_foreground | POST /franklab/api/franklab/jobs/image | {"operation":"bria_erase_foreground","imageUrl":"https://example.com/synthetic.png"} |
bria_erase_by_text | POST /franklab/api/franklab/jobs/image | {"operation":"bria_erase_by_text","imageUrl":"https://example.com/synthetic.png","objectName":"lamp"} |
bria_product_lifestyle_by_text | POST /franklab/api/franklab/jobs/image | {"operation":"bria_product_lifestyle_by_text","imageUrl":"https://example.com/synthetic.png","sceneDescription":"Product on a plain table","placementType":"automatic_aspect_ratio","briaAspectRatio":"1:1"} |
bria_product_cutout | POST /franklab/api/franklab/jobs/image | {"operation":"bria_product_cutout","imageUrl":"https://example.com/synthetic.png"} |
waveform | POST /franklab/api/franklab/jobs/montage | operation:"waveform", videoUrl: direct HTTPS audio URL. See input requirements below. |
video_round | POST /franklab/api/franklab/jobs/montage | {"operation":"round","videoUrl":"https://example.com/synthetic.mp4","shape":"rounded","radius":8,"backgroundColor":"#000000"} |
video_remove_bg | POST /franklab/api/franklab/jobs/montage | {"operation":"remove_bg","videoUrl":"https://example.com/synthetic.mp4","removeBgProvider":"bria","removeBgOutputCodec":"webm_vp9"} |
bria_video_replace_bg | POST /franklab/api/franklab/jobs/montage | {"operation":"bria_video_replace_bg","videoUrl":"https://example.com/synthetic.mp4","backgroundUrl":"https://example.com/synthetic.png","duration":1} |
bria_video_erase_object | POST /franklab/api/franklab/jobs/montage | {"operation":"bria_video_erase_object","videoUrl":"https://example.com/synthetic.mp4","maskUrl":"https://example.com/synthetic.mp4","duration":1} |
get_task | GET /franklab/api/franklab/jobs/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
get_recraft_task | GET /franklab/api/v1/recraft/record-info | See Recraft access and tariff conditions above. |
check_connection | GET /franklab/api/v1/images/omni-image |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/montage" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"operation":"waveform","videoUrl":"https://example.com/synthetic.wav","width":320,"height":240}'REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
model | string | required (background_remove); recraft/remove-background |
input | object | required (background_remove); Input object |
input.image | string | required (background_remove); Image URL; Make documents png/jpg/webp, <=5 MB, <=16 MP, 256–4096 px |
callBackUrl | string | Optional provider callback URL |
callbackUrl | string | URL |
imageUrl | string | required (bria_image_remove_bg); URL; required (bria_image_replace_bg); required (bria_erase_foreground); required (bria_erase_by_text); required (bria_product_lifestyle_by_text); required (bria_product_cutout) |
preserveAlpha | boolean | preserve Alpha |
operation | string | required (bria_image_remove_bg); required (bria_image_replace_bg); required (bria_erase_foreground); required (bria_erase_by_text); required (bria_product_lifestyle_by_text); required (bria_product_cutout); required (waveform); required (video_round); required (video_remove_bg); required (bria_video_replace_bg); required (bria_video_erase_object) |
prompt | string | prompt |
refImages | array | ref Images |
briaMode | string | high_control / base / fast; bria Mode |
negativePrompt | string | negative Prompt |
refinePrompt | boolean | refine Prompt |
originalQuality | boolean | original Quality |
forceBackgroundDetection | boolean | force Background Detection |
seed | number | seed |
objectName | string | required (bria_erase_by_text); object Name |
sceneDescription | string | required (bria_product_lifestyle_by_text); scene Description |
optimizeDescription | boolean | optimize Description |
placementType | string | automatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates; placement Type |
briaAspectRatio | string | 1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3; bria Aspect Ratio |
forceRmbg | boolean | force Rmbg |
sku | string | sku |
videoUrl | string | required (waveform); URL; required (video_round); required (video_remove_bg); required (bria_video_replace_bg); required (bria_video_erase_object) |
width | number | width |
height | number | height |
waveformColor | string | waveform Color |
waveformBgColor | string | waveform Bg Color |
shape | string | rounded / circle; shape |
radius | number | radius |
backgroundColor | string | background Color |
removeBgProvider | string | bria / auto / replicate; remove Bg Provider |
removeBgBackgroundColor | string | Transparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange; remove Bg Background Color |
removeBgOutputCodec | string | webm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265; remove Bg Output Codec |
removeBgPreserveAudio | boolean | remove Bg Preserve Audio |
backgroundUrl | string | required (bria_video_replace_bg); URL |
duration | number | duration |
briaOutputCodec | string | mp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif; bria Output Codec |
briaPreserveAudio | boolean | bria Preserve Audio |
maskUrl | string | required (bria_video_erase_object); URL |
autoTrim | boolean | auto Trim |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner; required (get_recraft_task); Query parameter returned by recraft/create-task |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
pageNum | number | Query pagination; connection check uses 1 |
pageSize | number | Query pagination; connection check uses 1 |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
operation | background_remove / bria_image_remove_bg / bria_image_replace_bg / bria_erase_foreground / bria_erase_by_text / bria_product_lifestyle_by_text / bria_product_cutout / waveform / video_round / video_remove_bg / bria_video_replace_bg / bria_video_erase_object | |
briaMode | operation=bria_image_replace_bg | high_control / base / fast |
briaMode | operation=bria_product_lifestyle_by_text | high_control / base / fast |
placementType | operation=bria_product_lifestyle_by_text | automatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates |
briaAspectRatio | operation=bria_product_lifestyle_by_text | 1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3 |
shape | operation=video_round | rounded / circle |
removeBgProvider | operation=video_remove_bg | bria / auto / replicate |
removeBgBackgroundColor | operation=video_remove_bg | Transparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange |
removeBgOutputCodec | operation=video_remove_bg | webm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265 |
briaOutputCodec | operation=bria_video_replace_bg | mp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif |
briaOutputCodec | operation=bria_video_erase_object | mp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif |
Response and result
HTTP response with provider JSON {code:200,data:{taskId}}; inspect code and msg separately from HTTP status.
Recraft completes on data.state=success|fail. The Make repeat condition checks other fields and can continue polling after completion; direct REST clients must check state.
SUFLER
videoUrl is required. Automatic transcription: omit subtitles; transcriptionEngine selects whisper/xai_grok_transcribe/gemini/local_whisper/elevenlabs_scribe. Manual captions use subtitles[] with text,startTime,endTime; 0 ≤ startTime < endTime. Optional words[] uses word,start,end, non-overlapping and inside its cue. Maximum 500 cues. Make v1*/v2* are form names; REST uses templateId,fontSize,color,positionX etc. v2 manual overrides require presetOverrideMode=manual. Translation uses translateTo and optional dualLanguage. outputMode: burn/srt/vtt/ass/burn+srt/burn+vtt. v1 uses highlightMode; v2 uses renderMode and emphasisMode.
Operations and minimal JSON requests
JSON examples below show complete bodies; rows without a JSON object describe parameters only; replace URLs/IDs with your own. Operation/mode selectors choose functions, not generation models.
| Operation | HTTP and path | Minimal JSON / notes |
|---|---|---|
v1 | POST /franklab/api/franklab/jobs/subtitles | {"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v1","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn"} |
v2 | POST /franklab/api/franklab/jobs/subtitles | {"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v2","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn","templateId":"shorts_pro"} |
lookup_fonts | GET /franklab/api/franklab/integrations/text-sticker/fonts | |
lookup_subtitle-templates | GET /franklab/api/franklab/integrations/text-sticker/subtitle-templates | |
lookup_video-effects | GET /franklab/api/franklab/integrations/text-sticker/video-effects | |
lookup_safe-zone-platform-options | GET /franklab/api/franklab/integrations/text-sticker/safe-zone-platform-options | |
lookup_safe-zone-placement-options | GET /franklab/api/franklab/integrations/text-sticker/safe-zone-placement-options | |
get_task | GET /franklab/api/franklab/jobs/{taskId} | |
upload_source | POST /franklab/api/franklab/jobs/upload | |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/subtitles" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v1","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn"}'REST fields
Fields apply to the selected operation; required conditions and the minimal example define usage. [] denotes array items.
| Field | Type | Conditions and allowed values |
|---|---|---|
videoUrl | string | required (v1); URL; required (v2) |
language | string | auto / ru / en; language |
transcriptionEngine | string | subtitleSourceMode=auto; whisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper; transcription Engine |
diarize | boolean | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe OR subtitleSourceMode=auto; transcriptionEngine=elevenlabs_scribe; diarize |
transcriptionFormat | boolean | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; transcription Format |
fillerWords | boolean | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; filler Words |
keyterm | array | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe OR subtitleSourceMode=auto; transcriptionEngine=elevenlabs_scribe OR subtitleSourceMode=auto; transcriptionEngine=local_whisper; max items 100; max length 50 |
keyterm[] | string | required when subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; keyterm[] |
subtitles | array | required when subtitleSourceMode=manual; max items 500 |
subtitles[].text | string | required when subtitleSourceMode=manual; subtitles[].text |
subtitles[].startTime | number | required when subtitleSourceMode=manual; subtitles[].start Time |
subtitles[].endTime | number | required when subtitleSourceMode=manual; subtitles[].end Time |
subtitles[].words | array | subtitleSourceMode=manual; subtitles[].words |
subtitles[].words[].word | string | required when subtitleSourceMode=manual; subtitles[].words[].word |
subtitles[].words[].start | number | required when subtitleSourceMode=manual; subtitles[].words[].start |
subtitles[].words[].end | number | required when subtitleSourceMode=manual; subtitles[].words[].end |
translateTo | string | translationMode=translate; en / ru / de / fr / es / it / pt / zh / ja / ko / ar; translate To |
dualLanguage | boolean | translationMode=translate; dual Language |
videoEffects | array | effectsMode=custom; max items 20 |
videoEffects[].effectId | string | required when effectsMode=custom; rpc://getVideoEffects; video Effects[].effect Id |
videoEffects[].scope | string | effectsMode=custom; clip / range; video Effects[].scope |
videoEffects[].startTime | number | effectsMode=custom; video Effects[].start Time |
videoEffects[].endTime | number | effectsMode=custom; video Effects[].end Time |
videoEffects[].intensity | number | effectsMode=custom; video Effects[].intensity |
outputMode | string | burn / srt / vtt / ass / burn+srt / burn+vtt; output Mode |
c2paSigningMode | string | off / franklab / user_profile; c2pa Signing Mode |
contentOrigin | string | franklab or user_profile; restricted origins require permitting user_profile and evidence; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; content Origin |
humanAuthorName | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Name |
humanAuthorUrl | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Url |
reviewedBy | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed By |
reviewedAt | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed At |
reviewMethod | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; review Method |
sourceMaterialUrls | array | c2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10 |
originalEvidenceUrls | array | c2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10 |
verifiedIncomingC2paIngredient | boolean | c2paSigningMode=franklab OR c2paSigningMode=user_profile; verified Incoming C2pa Ingredient |
c2paActionDescription | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Action Description |
c2paDisclosure | string | c2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Disclosure |
c2paSignerProfileId | string | required when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id |
callbackUrl | string | URL |
templateId | string | clean-classic / clean-bold / podcast-lower-third / interview-soft-shadow / reels-punch / tiktok-bold-center / tiktok-keyword-highlight / viral-word-pop / clean-product-demo / boxed-active-word / karaoke-lite / karaoke-pop / gaming-outline / gaming-neon / education-marker / education-clean-center / minimal-modern / boxed-bold / emoji-accent / meme-caption / serif-cinematic / classic-subtitles / creator-hook / news-ticker / documentary-narration / sports-highlight / luxury-minimal / horror-crawl / children-playful / corporate-clean / vlog-casual / music-lyric / creative-handwritten / travel-explorer / tech-review / motivational-impact / cooking-recipe / fitness-energy / wedding-elegant / retro-display / academic-formal / brand-showcase / slavic-decorative; template Id; shorts_pro / creator_hook_v2 / product_demo_v2 / cta_product_v2 / sufler_bold_emoji_stack_v2 / sufler_ref_dan_v2 / sufler_ref_ella_v2 / sufler_ref_devin_v2 / sufler_ref_hormozi_1_v2 / sufler_ref_sydney_v2 / sufler_ref_felix_v2 / sufler_ref_kendrick_v2 / sufler_ref_umi_v2 / sufler_ref_viktor_v2 / sufler_neon_outline_emoji_v2 / sufler_orange_active_strip_v2 / sufler_minimal_white_pill_v2 / sufler_black_shadow_keyword_v2 / sufler_neon_banner_v2 / sufler_clean_yellow_stack_v2 / sufler_compact_yellow_italic_v2 / sufler_orange_keyword_stack_v2 / frank_bold_orange_box_v2 / frank_green_caption_box_v2 / frank_bold_yellow_icon_v2 / frank_creator_yellow_stack_v2 / frank_red_green_active_v2 / frank_red_white_active_v2 / frank_yellow_keyword_v2 / frank_yellow_italic_v2 / frank_soft_pill_v2 |
highlightMode | string | / none / keywords / karaoke / emoji; highlight Mode |
platform | string | v1PlacementMode=exact_preset; rpc://getSafeZonePlatforms; platform; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset; Query parameter; use platform from safe-zone platform lookup |
safeZonePreset | string | v1PlacementMode=exact_preset; rpc://getSafeZonePlacements; safe Zone Preset; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset OR v2PresetControlMode=preset; v2CaptionPosition (any style) |
positionX | number | v1PlacementMode=exact_coordinates; min 0; max 100; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates |
positionY | number | v1PlacementMode=exact_coordinates; min 0; max 100; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates |
fontSize | number | v1TextStyleMode=custom; min 1; max 512; v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
font | string | v1TextStyleMode=custom; rpc://getFonts; max length 64; v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
color | string | v1TextStyleMode=custom; color; v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
uppercase | boolean | v1TextStyleMode=custom; uppercase |
displayWords | number | v1TextStyleMode=custom; min 1; max 6 |
maxLines | number | v1TextStyleMode=custom; min 1; max 2; v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
maxCharsPerLine | number | v1TextStyleMode=custom; min 8; max 42; v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
gapSplitSec | number | v1TextStyleMode=custom; min 0.15; max 2 |
lingerMs | number | v1TextStyleMode=custom; min 0; max 500 |
captionEngine | string | |
presetOverrideMode | string | v2TemplateId=shorts_pro OR v2TemplateId=creator_hook_v2 OR v2TemplateId=product_demo_v2 OR v2TemplateId=cta_product_v2 OR v2TemplateId=sufler_bold_emoji_stack_v2 OR v2TemplateId=sufler_ref_dan_v2 OR v2TemplateId=sufler_ref_ella_v2 OR v2TemplateId=sufler_ref_devin_v2 OR v2TemplateId=sufler_ref_hormozi_1_v2 OR v2TemplateId=sufler_ref_sydney_v2 OR v2TemplateId=sufler_ref_felix_v2 OR v2TemplateId=sufler_ref_kendrick_v2 OR v2TemplateId=sufler_ref_umi_v2 OR v2TemplateId=sufler_ref_viktor_v2 OR v2TemplateId=sufler_neon_outline_emoji_v2 OR v2TemplateId=sufler_orange_active_strip_v2 OR v2TemplateId=sufler_minimal_white_pill_v2 OR v2TemplateId=sufler_black_shadow_keyword_v2 OR v2TemplateId=sufler_neon_banner_v2 OR v2TemplateId=sufler_clean_yellow_stack_v2 OR v2TemplateId=sufler_compact_yellow_italic_v2 OR v2TemplateId=sufler_orange_keyword_stack_v2 OR v2TemplateId=frank_bold_orange_box_v2 OR v2TemplateId=frank_green_caption_box_v2 OR v2TemplateId=frank_bold_yellow_icon_v2 OR v2TemplateId=frank_creator_yellow_stack_v2 OR v2TemplateId=frank_red_green_active_v2 OR v2TemplateId=frank_red_white_active_v2 OR v2TemplateId=frank_yellow_keyword_v2 OR v2TemplateId=frank_yellow_italic_v2 OR v2TemplateId=frank_soft_pill_v2; preset / manual; preset Override Mode |
outline | number | v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; min 0; max 8 |
outlineColor | string | v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; outline Color |
shadow | number | v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; min 0; max 8 |
renderMode | string | v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; / static / phrase_pop / word_pop / active_word / word_reveal / active_box; render Mode |
animationIntensity | string | v2TemplateId=shorts_pro; v2PresetControlMode=manual OR v2TemplateId=creator_hook_v2; v2PresetControlMode=manual OR v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; low / medium / high; animation Intensity |
highlightColor | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; highlight Color |
revealBaseline | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; / none / dim / full; reveal Baseline |
animationStyle | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; max length 40 |
emojiAccentMode | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual OR v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_ella_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_devin_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_hormozi_1_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_sydney_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_umi_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual OR v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual OR v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; max length 40 |
activeColor | string | v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; active Color |
activeBoxColor | string | v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; active Box Color |
activeBoxPadding | number | v2TemplateId=cta_product_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_felix_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_ref_kendrick_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual OR v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual OR v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual OR v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; min 4; max 48 |
qualityMode | string | standard / pro; quality Mode |
emphasisMode | string | semantic / manual / karaoke / none; emphasis Mode |
emphasisWords | array | v2EmphasisMode=manual; max items 50; max length 40 |
emphasisWords[] | string | required when v2EmphasisMode=manual; emphasis Words[] |
diagnosticsLevel | string | basic / full; diagnostics Level |
visualQaMode | string | off / contact_sheet; visual Qa Mode |
glossary | array | max items 50 |
glossary[].from | string | required (v2); glossary[].from |
glossary[].to | string | required (v2); glossary[].to |
brandGlossary | array | max items 50 |
brandGlossary[].from | string | required (v2); brand Glossary[].from |
brandGlossary[].to | string | required (v2); brand Glossary[].to |
taskId | string | required (get_task); Path parameter: returned taskId, scoped to the same partner |
file | binary | required (upload_source); multipart/form-data file; maximum 157286400 bytes |
Make options and REST conversion
This is the Make selection reference; form names can differ from REST. Convert v1*/v2*, text* and sample* fields as described above. Nested conditions describe the Make form.
| Form field | When | Values |
|---|---|---|
language | auto / ru / en | |
captionEngine | v1 / v2 | |
v1TemplateId | captionEngine=v1 | clean-classic / clean-bold / podcast-lower-third / interview-soft-shadow / reels-punch / tiktok-bold-center / tiktok-keyword-highlight / viral-word-pop / clean-product-demo / boxed-active-word / karaoke-lite / karaoke-pop / gaming-outline / gaming-neon / education-marker / education-clean-center / minimal-modern / boxed-bold / emoji-accent / meme-caption / serif-cinematic / classic-subtitles / creator-hook / news-ticker / documentary-narration / sports-highlight / luxury-minimal / horror-crawl / children-playful / corporate-clean / vlog-casual / music-lyric / creative-handwritten / travel-explorer / tech-review / motivational-impact / cooking-recipe / fitness-energy / wedding-elegant / retro-display / academic-formal / brand-showcase / slavic-decorative |
v1HighlightMode | captionEngine=v1 | / none / keywords / karaoke / emoji |
v1PlacementMode | captionEngine=v1 | tiktok_bottom_safe / bottom_center / center / top / exact_preset / exact_coordinates |
v1Platform | captionEngine=v1; v1PlacementMode=exact_preset | rpc://getSafeZonePlatforms |
v1SafeZonePreset | captionEngine=v1; v1PlacementMode=exact_preset | rpc://getSafeZonePlacements |
v1TextStyleMode | captionEngine=v1 | template / custom |
v1Font | captionEngine=v1; v1TextStyleMode=custom | rpc://getFonts |
v2TemplateId | captionEngine=v2 | shorts_pro / creator_hook_v2 / product_demo_v2 / cta_product_v2 / sufler_bold_emoji_stack_v2 / sufler_ref_dan_v2 / sufler_ref_ella_v2 / sufler_ref_devin_v2 / sufler_ref_hormozi_1_v2 / sufler_ref_sydney_v2 / sufler_ref_felix_v2 / sufler_ref_kendrick_v2 / sufler_ref_umi_v2 / sufler_ref_viktor_v2 / sufler_neon_outline_emoji_v2 / sufler_orange_active_strip_v2 / sufler_minimal_white_pill_v2 / sufler_black_shadow_keyword_v2 / sufler_neon_banner_v2 / sufler_clean_yellow_stack_v2 / sufler_compact_yellow_italic_v2 / sufler_orange_keyword_stack_v2 / frank_bold_orange_box_v2 / frank_green_caption_box_v2 / frank_bold_yellow_icon_v2 / frank_creator_yellow_stack_v2 / frank_red_green_active_v2 / frank_red_white_active_v2 / frank_yellow_keyword_v2 / frank_yellow_italic_v2 / frank_soft_pill_v2 |
v2QualityMode | captionEngine=v2 | standard / pro |
v2EmphasisMode | captionEngine=v2 | semantic / manual / karaoke / none |
v2DiagnosticsLevel | captionEngine=v2 | basic / full |
v2VisualQaMode | captionEngine=v2 | off / contact_sheet |
subtitleSourceMode | auto / manual | |
transcriptionEngine | subtitleSourceMode=auto | whisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper |
translationMode | none / translate | |
translateTo | translationMode=translate | en / ru / de / fr / es / it / pt / zh / ja / ko / ar |
effectsMode | none / custom | |
videoEffects[].effectId | effectsMode=custom | rpc://getVideoEffects |
videoEffects[].scope | effectsMode=custom | clip / range |
outputMode | burn / srt / vtt / ass / burn+srt / burn+vtt | |
c2paSigningMode | off / franklab / user_profile | |
contentOrigin | c2paSigningMode=franklab | not_declared / human_edited / ai_assisted / ai_generated |
c2paSignerProfileId | c2paSigningMode=user_profile | rpc://getC2paSignerProfiles |
contentOrigin | c2paSigningMode=user_profile | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
Shared v2 preset settings are listed once below. “All 31” means every v2TemplateId value in the table above; each row’s additional conditions also apply. v2RevealBaseline applies to 29 presets: all listed values except shorts_pro and creator_hook_v2.
| Form field | v2TemplateId presets | When | Values |
|---|---|---|---|
v2PresetControlMode | All 31 | captionEngine=v2 | preset / manual |
v2CaptionPosition | All 31 | captionEngine=v2; v2PresetControlMode=preset | / bottom_safe / center / top_safe |
v2Font | All 31 | captionEngine=v2; v2PresetControlMode=manual | rpc://getFonts |
v2PlacementMode | All 31 | captionEngine=v2; v2PresetControlMode=manual | / tiktok_bottom_safe / exact_preset / exact_coordinates |
v2Platform | All 31 | captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset | rpc://getSafeZonePlatforms |
v2SafeZonePreset | All 31 | captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset | rpc://getSafeZonePlacements |
v2RenderMode | All 31 | captionEngine=v2; v2PresetControlMode=manual | / static / phrase_pop / word_pop / active_word / word_reveal / active_box |
v2AnimationIntensity | All 31 | captionEngine=v2; v2PresetControlMode=manual | low / medium / high |
v2RevealBaseline | All except shorts_pro, creator_hook_v2 | captionEngine=v2; v2PresetControlMode=manual | / none / dim / full |
Response and result
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; poll the returned taskId.
Results: downloadUrl/subtitleFileUrl, subtitleCount, transcribedText; v2 also reports qualityScore, qualityGateStatus, renderMode, animatedWordCount, highlightedWords, visualQaStatus/visualQaUrl and subtitleDiagnostics. Inspect captionWarnings, fontRenderWarning, requestedFont/resolvedAssFont, appliedVideoFilters and ignoredVideoEffects. Make cue normalization removes arbitrary fields; cueStyleOverrideMode=cue retains x/y/fontSize/font/color. For direct REST send DTO fields only.
REST position: top-left/top-center/top-right/center/bottom-left/bottom-center/bottom-right. v2 custom visual settings require presetOverrideMode=manual.
The v2 on-screen position can be changed without manual mode: safeZonePreset (bottom_safe / center / top_safe) and positionX+positionY (0–100, % of the frame) also apply with presetOverrideMode=preset, including sufler_ref_* presets, while the rest of the preset's look stays unchanged. Precedence: positionX/positionY → safeZonePreset → the style's own placement. safeZonePreset moves a style vertically only; the horizontal position stays the style's. Styles with their own position (DAN, ELLA, Viktor) take the vertical bands from the TikTok safe zones. In Make this is the «Положение субтитров» field (v2CaptionPosition); exact coordinates are under «Ручная настройка» → «Размещение на экране» → «Точные координаты». Omitted fields keep the style's placement. Conditions using subtitleSourceMode/translationMode/effectsMode/v1*/v2* in the reference describe the Make form, not REST fields.
Next step
Choose one operation, upload a small owned file, verify access and your customer tariff, then submit once and retain the taskId with its polling route. If an operation fails, read its error and keep the existing task ID when contacting support.