Documentation
FRANKLAB API

Utilities and montage

Video, image and audio processing, subtitles, SEO and Content Credentials through the API.

Open .md
Open in AI

Work with an AI assistant

Shares the current documentation without your keys. Long sections are copied in full for you to paste into chat.

Cursor and Claude Code accept short prompts in links. For long sections, ChatGPT and Antigravity, paste the copied documentation manually.

Ask support

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.

bash
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.

FamilyPollingOutput / error
FORSAJ, HOLST, KLEY, PLASTINKA, SUFLER, SPEKTR jobsGET /franklab/api/franklab/jobs/{taskId}data.downloadUrl, metadata; data.error
OVERLAYGET /franklab/api/make/jobs/{taskId}data.result.downloadUrl; data.error / data.result.error
INDEXLIFT asyncGET /franklab/api/franklab/jobs/audit-landing/async/{taskId}data.result.data.seo_report, data.result.data.brief_suggestions, data.phase, data.error_message
SPEKTR RecraftGET /franklab/api/v1/recraft/record-info?taskId=...data.state, parse data.resultJson → resultUrls[]; data.failMsg
C2PA, sample resourcesNo task pollingdata 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.

OperationHTTP and pathMinimal JSON / notes
listGET /franklab/api/make/c2pa/signer-profiles{}
generate_self_signedPOST /franklab/api/make/c2pa/signer-profiles{"action":"generate_self_signed","label":"My signing profile"}
create_from_pemPOST /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_pemPOST /franklab/api/make/c2pa/signer-profiles/{profileId}/rotate{"label":"My signing profile","certificateChainPem":"<YOUR_CERTIFICATE_CHAIN_PEM>","privateKeyPem":"<YOUR_PRIVATE_KEY_PEM>"}
revokePOST /franklab/api/make/c2pa/signer-profiles/{profileId}/revoke{}
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profiles
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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.

FieldTypeConditions and allowed values
actionstringrequired (generate_self_signed); Required input in this operation example; required (create_from_pem)
labelstringrequired (generate_self_signed); label; required (create_from_pem); required (rotate_from_pem)
allowRestrictedOriginClaimsbooleanallow Restricted Origin Claims; / true / false
certificateChainPemstringrequired (create_from_pem); certificate Chain Pem; required (rotate_from_pem)
privateKeyPemstringrequired (create_from_pem); private Key Pem; required (rotate_from_pem)
profileIdstringrequired (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 fieldWhenValues
actionlist / generate_self_signed / create_from_pem / rotate_from_pem / revoke
profileIdaction=rotate_from_pemrpc://getC2paSignerProfiles
allowRestrictedOriginClaimsaction=rotate_from_pem/ true / false
profileIdaction=revokerpc://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.

OperationHTTP and pathMinimal JSON / notes
video_speedPOST /franklab/api/franklab/jobs/video-speed{"videoUrl":"https://example.com/synthetic.mp4","speed":1.1}
audio_speedPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","speed":1.1,"operation":"speed","audioBitrate":"64k"}
get_taskGET /franklab/api/franklab/jobs/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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.

FieldTypeConditions and allowed values
c2paSigningModestringoff / franklab / user_profile; c2pa Signing Mode
contentOriginstringfranklab 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
humanAuthorNamestringc2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Name
humanAuthorUrlstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Url
reviewedBystringc2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed By
reviewedAtstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed At
reviewMethodstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; review Method
sourceMaterialUrlsarrayc2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10
originalEvidenceUrlsarrayc2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10
verifiedIncomingC2paIngredientbooleanc2paSigningMode=franklab OR c2paSigningMode=user_profile; verified Incoming C2pa Ingredient
c2paActionDescriptionstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Action Description
c2paDisclosurestringc2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Disclosure
c2paSignerProfileIdstringrequired when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id
videoUrlstringrequired (video_speed); URL; required (audio_speed)
speednumberrequired (video_speed); min 0.25; max 4; required (audio_speed)
callbackUrlstringURL
audioBitratestring64k / 96k / 128k / 160k / 192k / 256k / 320k; 8k–320k string; custom is a Make control, not a REST value
operationstringrequired (audio_speed)
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner
filebinaryrequired (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 fieldWhenValues
modevideo_speed / audio_speed
audioBitratemode=audio_speed64k / 96k / 128k / 160k / 192k / 256k / 320k / custom
c2paSigningModeoff / franklab / user_profile
contentOriginc2paSigningMode=franklabnot_declared / human_edited / ai_assisted / ai_generated
c2paSignerProfileIdc2paSigningMode=user_profilerpc://getC2paSignerProfiles
contentOriginc2paSigningMode=user_profilenot_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.

OperationHTTP and pathMinimal JSON / notes
resizePOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"resize","width":64,"height":64}
cropPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"crop","aspectRatio":"1:1"}
filterPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"filter","filterPreset":"grayscale"}
watermarkPOST /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_overlayPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"image_overlay","overlayImageUrl":"https://example.com/synthetic.png","overlayScale":0.25}
textPOST /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"}
rotatePOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"rotate","angle":90}
flipPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"flip"}
flopPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"flop"}
blurPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"blur","sigma":2}
sharpenPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"sharpen","sigma":1}
strip_metaPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"strip_meta"}
write_exifPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"write_exif","imageDescription":"Synthetic test"}
write_metadataPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"write_metadata","metaTitle":"Synthetic test"}
replace_metadataPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"replace_metadata","metaTitle":"Synthetic test"}
maskPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"mask","shape":"rounded","radius":8}
collagePOST /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"}
adjustPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"adjust","brightness":1.1}],"outputFormat":"png"}
remove_bgPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"remove_bg","removeBgProvider":"local"}
strip_gpsPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"strip_gps"}
pipelinePOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"resize","width":64,"height":64}],"outputFormat":"png"}
lookup_image-presetsGET /franklab/api/franklab/integrations/text-sticker/image-presets
lookup_image-formatsGET /franklab/api/franklab/integrations/text-sticker/image-formats
lookup_fontsGET /franklab/api/franklab/integrations/text-sticker/fonts
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profiles
get_taskGET /franklab/api/franklab/jobs/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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.

FieldTypeConditions and allowed values
imageUrlstringrequired (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)
outputFormatstringjpeg / png / webp / avif / gif; output Format
outputQualitynumbermin 1; max 100
c2paSigningModestringoff / franklab / user_profile; c2pa Signing Mode
contentOriginstringfranklab 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
humanAuthorNamestringc2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Name
humanAuthorUrlstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Url
reviewedBystringc2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed By
reviewedAtstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed At
reviewMethodstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; review Method
sourceMaterialUrlsarrayc2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10
originalEvidenceUrlsarrayc2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10
verifiedIncomingC2paIngredientbooleanc2paSigningMode=franklab OR c2paSigningMode=user_profile; verified Incoming C2pa Ingredient
c2paActionDescriptionstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Action Description
c2paDisclosurestringc2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Disclosure
c2paSignerProfileIdstringrequired when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id
presetstringrpc://getImagePresets; preset
widthnumberwidth
heightnumberheight
fitstringcover / contain / fill / inside / outside; fit
operationstringrequired (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)
aspectRatiostringaspect Ratio
filterPresetstringgrayscale / sepia / warm / cold / vibrant / muted / dramatic; filter Preset
stepsarrayrequired (watermark); max items 20; required (text); required (collage); required (adjust); required (pipeline)
steps[].opstringrequired (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[].presetstringsteps[].op=resize OR steps[].op=filter; grayscale / sepia / warm / cold / vibrant / muted / dramatic; rpc://getImagePresets; steps[].preset
steps[].widthnumbersteps[].op=resize OR steps[].op=crop OR steps[].op=collage; steps[].width
steps[].heightnumbersteps[].op=resize OR steps[].op=crop OR steps[].op=collage; steps[].height
steps[].fitstringsteps[].op=resize; cover / contain / fill / inside / outside; steps[].fit
steps[].aspectRatiostringsteps[].op=crop; steps[].aspect Ratio
steps[].leftnumbersteps[].op=crop; steps[].left
steps[].topnumbersteps[].op=crop; steps[].top
steps[].brightnessnumbersteps[].op=filter OR steps[].op=adjust; steps[].brightness
steps[].saturationnumbersteps[].op=filter OR steps[].op=adjust; steps[].saturation
steps[].huenumbersteps[].op=filter OR steps[].op=adjust; steps[].hue
steps[].imageUrlstringsteps[].op=watermark; steps[].image Url
steps[].positionstringsteps[].op=watermark OR steps[].op=text; bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; steps[].position
steps[].opacitynumbersteps[].op=watermark; steps[].opacity
steps[].scalenumbersteps[].op=watermark; steps[].scale
steps[].marginnumbersteps[].op=watermark; steps[].margin
steps[].contentstringsteps[].op=text; steps[].content
steps[].fontSizenumbersteps[].op=text; steps[].font Size
steps[].colorstringsteps[].op=text; steps[].color
steps[].bgColorstringsteps[].op=text; steps[].bg Color
steps[].bgOpacitynumbersteps[].op=text; steps[].bg Opacity
steps[].alignstringsteps[].op=text; center / left / right; steps[].align
steps[].maxWidthnumbersteps[].op=text; steps[].max Width
steps[].paddingnumbersteps[].op=text; steps[].padding
steps[].anglenumbersteps[].op=rotate; steps[].angle
steps[].backgroundstringsteps[].op=rotate OR steps[].op=collage; steps[].background
steps[].sigmanumbersteps[].op=blur OR steps[].op=sharpen; steps[].sigma
steps[].shapestringsteps[].op=mask; rounded / circle; steps[].shape
steps[].radiusnumbersteps[].op=mask; steps[].radius
steps[].imageUrlsarraysteps[].op=collage; steps[].image Urls
steps[].columnsnumbersteps[].op=collage; steps[].columns
steps[].gapnumbersteps[].op=collage; steps[].gap
steps[].contrastnumbersteps[].op=adjust; steps[].contrast
steps[].gammanumbersteps[].op=adjust; steps[].gamma
steps[].formatstringsteps[].op=format; jpeg / png / webp / avif / gif; steps[].format
steps[].metadataEnginestringsteps[].op=read_metadata; sharp / exiftool; steps[].metadata Engine
steps[].includeGpsbooleansteps[].op=read_metadata; steps[].include Gps
steps[].removeBgProviderstringsteps[].op=remove_bg; local; steps[].remove Bg Provider
steps[].alphaMattingbooleansteps[].op=remove_bg; steps[].alpha Matting
steps[].ocrLanguagesstringsteps[].op=ocr; steps[].ocr Languages
steps[].metaTitlestringsteps[].op=write_metadata OR steps[].op=replace_metadata; steps[].meta Title
steps[].metaDescriptionstringsteps[].op=write_metadata OR steps[].op=replace_metadata; steps[].meta Description
steps[].metaKeywordsstringsteps[].op=write_metadata; steps[].meta Keywords
steps[].altTextstringsteps[].op=write_metadata OR steps[].op=replace_metadata; steps[].alt Text
steps[].semanticDescriptionstringsteps[].op=write_metadata; steps[].semantic Description
steps[].semanticTagsstringsteps[].op=write_metadata OR steps[].op=replace_metadata; steps[].semantic Tags
watermarkImageUrlstringURL
overlayImageUrlstringrequired (image_overlay); URL
overlayPositionstringtop-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right; overlay Position
overlayOpacitynumbermin 0; max 1
overlayScalenumbermin 0.01; max 1
overlayMarginnumbermin 0
contentstringcontent
anglenumberangle
sigmanumbersigma
imageDescriptionstringimage Description
copyrightstringcopyright
artiststringartist
metaTitlestringmeta Title
metaDescriptionstringmeta Description
metaKeywordsstringmeta Keywords
metaAuthorstringmeta Author
metaCopyrightstringmeta Copyright
metaCreditstringmeta Credit
metaSoftwarestringmeta Software
metaLicenseUrlstringURL
metaAcquireLicensePagestringURL
metaSourceUrlstringURL
metaDateCreatedstringmeta Date Created
metaDigitalSourceTypestringmeta Digital Source Type
altTextstringalt Text
semanticDescriptionstringsemantic Description
semanticTagsstringsemantic Tags
semanticScenestringsemantic Scene
semanticStylestringsemantic Style
semanticMoodstringsemantic Mood
semanticColorsstringsemantic Colors
semanticUseCasesstringsemantic Use Cases
ocrTextstringocr Text
shapestringrounded / circle; shape
radiusnumberradius
metadataEnginestringsharp / exiftool; metadata Engine
includeGpsbooleaninclude Gps
removeBgProviderstringlocal; remove Bg Provider
alphaMattingbooleanalpha Matting
ocrLanguagesstringocr Languages
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner
filebinaryrequired (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 fieldWhenValues
operationresize / 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
presetoperation=resizerpc://getImagePresets
fitoperation=resizecover / contain / fill / inside / outside
filterPresetoperation=filtergrayscale / sepia / warm / cold / vibrant / muted / dramatic
watermarkPositionoperation=watermarkbottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center
overlayPositionoperation=image_overlaytop-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right
textFontoperation=textrpc://getFonts
textPositionoperation=textcenter / top / bottom / top-left / top-right / bottom-left / bottom-right
shapeoperation=maskrounded / circle
metadataEngineoperation=read_metadatasharp / exiftool
removeBgProvideroperation=remove_bglocal
outputFormatjpeg / png / webp / avif / gif
c2paSigningModeoff / franklab / user_profile
contentOriginc2paSigningMode=franklabnot_declared / human_edited / ai_assisted / ai_generated
c2paSignerProfileIdc2paSigningMode=user_profilerpc://getC2paSignerProfiles
contentOriginc2paSigningMode=user_profilenot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
steps[].opresize / 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[].presetsteps[].op=resizerpc://getImagePresets
steps[].fitsteps[].op=resizecover / contain / fill / inside / outside
steps[].presetsteps[].op=filtergrayscale / sepia / warm / cold / vibrant / muted / dramatic
steps[].positionsteps[].op=watermarkbottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center
steps[].positionsteps[].op=textcenter / top-center / bottom-center / top-left / top-right / bottom-left / bottom-right
steps[].alignsteps[].op=textcenter / left / right
steps[].shapesteps[].op=maskrounded / circle
steps[].formatsteps[].op=formatjpeg / png / webp / avif / gif
steps[].metadataEnginesteps[].op=read_metadatasharp / exiftool
steps[].removeBgProvidersteps[].op=remove_bglocal

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.

OperationHTTP and pathMinimal JSON / notes
async_waitPOST /franklab/api/franklab/jobs/audit-landing/async{"url":"https://example.com/","mode":"single-page"}
syncPOST /franklab/api/franklab/jobs/audit-landing{"url":"https://example.com/","mode":"single-page"}
get_taskGET /franklab/api/franklab/jobs/audit-landing/async/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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.

FieldTypeConditions and allowed values
urlstringrequired (async_wait); Public HTTP(S) URL; required (sync)
modestringsingle-page / crawl
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner
filebinaryrequired (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 fieldWhenValues
execution_modeasync_wait / sync
modesingle-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.

OperationHTTP and pathMinimal JSON / notes
concatPOST /franklab/api/franklab/jobs/montage{"operation":"concat","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}]}
framePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"frame","position":"start","format":"png"}
trimPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"trim","startTime":0,"duration":1}
reversePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"reverse"}
cropPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"crop","aspectRatio":"1:1"}
resizePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"resize","width":160,"height":160}
write_tagsPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"write_tags","tagTitle":"Synthetic test"}
replace_tagsPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"replace_tags","tagTitle":"Synthetic test"}
strip_tagsPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"strip_tags"}
gifPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"gif","duration":1,"fps":5,"width":160}
fadePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"fade","fadeInDuration":0.2}
thumbnail_smartPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"thumbnail_smart"}
transcodePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"transcode","videoCodec":"libx264","crf":28}
pipPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"pip","overlayVideoUrl":"https://example.com/synthetic.mp4","pipScale":0.25}
image_on_videoPOST /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_imagePOST /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"}
slideshowPOST /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"}
speedPOST /franklab/api/franklab/jobs/video-speed{"videoUrl":"https://example.com/synthetic.mp4","speed":1.1}
subtitlesPOST /franklab/api/franklab/jobs/subtitles{"videoUrl":"https://example.com/synthetic.mp4","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}]}
overlayPOST /franklab/api/franklab/jobs/overlay{"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50}]}
stabilizePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"stabilize"}
split_screenPOST /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_motionPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"slow_motion","slowFactor":2,"slowFps":30}
denoisePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"denoise","denoiseMethod":"hqdn3d","denoiseStrength":"low"}
hdr_to_sdrPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"hdr_to_sdr","tonemapMethod":"hable"}
animatedPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"animated","animatedFormat":"webp","duration":1,"fps":5,"width":160}
mezzaninePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"mezzanine","mezzanineCodec":"prores","proresProfile":0}
lookup_transitionsGET /franklab/api/franklab/integrations/text-sticker/transitions
lookup_transition-soundsGET /franklab/api/franklab/integrations/text-sticker/transition-sounds
lookup_aspect-ratiosGET /franklab/api/franklab/integrations/text-sticker/aspect-ratios
lookup_resize-presetsGET /franklab/api/franklab/integrations/text-sticker/resize-presets
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profiles
get_taskGET /franklab/api/franklab/jobs/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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.

FieldTypeConditions and allowed values
callbackUrlstringURL
videosarraymax items 20
maxTransitionRationumbermax Transition Ratio
operationstringrequired (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)
videoUrlstringrequired (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)
positionstringfirst / middle / last / custom; position
customTimenumbercustom Time
formatstringjpg / png; format
startTimenumberstart Time; min 0
durationnumberduration; min 0
aspectRatiostringrpc://getAspectRatios; aspect Ratio
cropWnumbercrop W
cropHnumbercrop H
cropXnumbercrop X
cropYnumbercrop Y
presetstringrpc://getResizePresets; preset; fast / medium / slow / veryslow
widthnumberwidth
heightnumberheight
tagTitlestringtag Title
tagArtiststringtag Artist
tagDescriptionstringtag Description
tagCommentstringtag Comment
tagDatestringtag Date
tagKeywordsstringtag Keywords
tagCopyrightstringtag Copyright
tagSoftwarestringtag Software
tagGenrestringtag Genre
tagLanguagestringtag Language
tagCreationTimestringtag Creation Time
summarystringsummary
transcriptstringtranscript
thumbnailAltTextstringthumbnail Alt Text
c2paSigningModestringoff / franklab / user_profile; c2pa Signing Mode
c2paSignerProfileIdstringrequired when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id
contentOriginstringfranklab 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
sourceMaterialUrlsarraymax items 10
originalEvidenceUrlsarraymax items 10
verifiedIncomingC2paIngredientbooleanverified Incoming C2pa Ingredient
c2paActionDescriptionstringc2pa Action Description
c2paDisclosurestringc2pa Disclosure
fpsnumberfps
fadeInDurationnumberfade In Duration
fadeOutDurationnumberfade Out Duration
videoCodecstringlibx264 / libx265 / libvpx-vp9 / copy; video Codec
crfnumbercrf
audioBitratestring64k / 96k / 128k / 160k / 192k / 256k / 320k; 8k–320k string; custom is a Make control, not a REST value
overlayVideoUrlstringrequired (pip); URL; required (video_on_image)
pipPositionstringtop-left / top-right / bottom-left / bottom-right / center; pip Position
pipScalenumberpip Scale
includeBaseAudiobooleaninclude Base Audio
baseAudioVolumenumberbase Audio Volume
includeOverlayAudiobooleaninclude Overlay Audio
overlayAudioVolumenumberoverlay Audio Volume
overlayImageUrlstringrequired (image_on_video); URL
overlayPositionstringtop-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right; overlay Position
overlayScalenumbermin 0.01; max 1
overlayOpacitynumbermin 0; max 1
overlayMarginnumbermin 0
endTimenumbermin 0
imageUrlstringrequired (video_on_image); URL
durationModestringoverlay / fixed; duration Mode
imageUrlsarraymax items 20
slideDurationnumberslide Duration
slideTransitionstringrpc://getTransitions; slide Transition
slideTransitionDurationnumberslide Transition Duration
speednumberrequired (speed); min 0.25; max 4
templateIdstringtemplate Id
languagestringru / en / auto; language
highlightModestringnone / keywords / karaoke; highlight Mode
platformstringnone / tiktok / instagram_reels / youtube_shorts; platform
safeZonePresetstringsafe Zone Preset
subtitlesarraymax items 500
overlaysarraymax items 20
configIdstringconfig Id
referenceVideoUrlstringrequired (quality_compare); URL
shakinessnumbermin 1; max 10
smoothingnumbermin 1; max 100
sceneThresholdnumbermin 1; max 100
sceneThumbnailsbooleanscene Thumbnails
splitLayoutstringhorizontal / vertical / grid_2x2; split Layout
slowFactornumber2 / 4; slow Factor
slowFpsnumber30 / 60; slow Fps
denoiseMethodstringhqdn3d / nlmeans; denoise Method
denoiseStrengthstringlow / medium / high; denoise Strength
tonemapMethodstringhable / mobius / reinhard; tonemap Method
animatedFormatstringwebp / avif; animated Format
mezzanineCodecstringprores / dnxhd; mezzanine Codec
proresProfilenumber0 / 1 / 2 / 3; prores Profile
dnxhdProfilestringdnxhr_lb / dnxhr_sq / dnxhr_hq / dnxhr_hqx; dnxhd Profile
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner
filebinaryrequired (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 fieldWhenValues
operationconcat / 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
positionoperation=framefirst / middle / last / custom
formatoperation=framejpg / png
aspectRatiooperation=croprpc://getAspectRatios
presetoperation=resizerpc://getResizePresets
c2paSigningModeoperation=write_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=write_tagsrpc://getC2paSignerProfiles
contentOriginoperation=write_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
c2paSigningModeoperation=replace_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=replace_tagsrpc://getC2paSignerProfiles
contentOriginoperation=replace_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
formatoperation=thumbnail_smartjpg / png
videoCodecoperation=transcodelibx264 / libx265 / libvpx-vp9 / copy
presetoperation=transcodefast / medium / slow / veryslow
pipPositionoperation=piptop-left / top-right / bottom-left / bottom-right / center
overlayPositionoperation=image_on_videotop-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right
pipPositionoperation=video_on_imagetop-left / top-right / bottom-left / bottom-right / center
durationModeoperation=video_on_imageoverlay / fixed
slideTransitionoperation=slideshowrpc://getTransitions
subtitleLanguageoperation=subtitlesru / en / auto
highlightModeoperation=subtitlesnone / keywords / karaoke
subtitlePlatformoperation=subtitlesnone / tiktok / instagram_reels / youtube_shorts
splitLayoutoperation=split_screenhorizontal / vertical / grid_2x2
slowFactoroperation=slow_motion2 / 4
slowFpsoperation=slow_motion30 / 60
denoiseMethodoperation=denoisehqdn3d / nlmeans
denoiseStrengthoperation=denoiselow / medium / high
tonemapMethodoperation=hdr_to_sdrhable / mobius / reinhard
animatedFormatoperation=animatedwebp / avif
mezzanineCodecoperation=mezzanineprores / dnxhd
proresProfileoperation=mezzanine0 / 1 / 2 / 3
dnxhdProfileoperation=mezzaninednxhr_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.

OperationHTTP and pathMinimal JSON / notes
overlayPOST /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_trueGET /franklab/api/franklab/integrations/text-sticker/stickers?animated=true
lookup_emojisGET /franklab/api/franklab/integrations/text-sticker/emojis
lookup_fontsGET /franklab/api/franklab/integrations/text-sticker/fonts
lookup_stickers_animated_falseGET /franklab/api/franklab/integrations/text-sticker/stickers?animated=false
lookup_safe-zone-optionsGET /franklab/api/franklab/integrations/text-sticker/safe-zone-options
lookup_subtitle-templatesGET /franklab/api/franklab/integrations/text-sticker/subtitle-templates
lookup_transitionsGET /franklab/api/franklab/integrations/text-sticker/transitions
lookup_video-effectsGET /franklab/api/franklab/integrations/text-sticker/video-effects
get_taskGET /franklab/api/make/jobs/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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.

FieldTypeConditions and allowed values
videoUrlstringrequired (overlay); URL
platformstringnone / tiktok / instagram_reels / youtube_shorts; platform
configIdstringconfig Id
overlaysarraymax items 20
overlays[].typestringrequired (overlay); text / emoji / sticker / animated_sticker / watermark; overlays[].type
overlays[].contentstringoverlays[].content
overlays[].stickerIdstringrpc://getOverlayStickers; overlays[].sticker Id
overlays[].animatedStickerIdstringrpc://getOverlayAnimatedStickers; overlays[].animated Sticker Id
overlays[].imageUrlstringoverlays[].image Url
overlays[].opacitynumberoverlays[].opacity
overlays[].scalenumberoverlays[].scale
overlays[].positionstring/ bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; overlays[].position
overlays[].marginnumberoverlays[].margin
overlays[].emojiIdstringrpc://getOverlayEmojis; overlays[].emoji Id
overlays[].placementstringcustom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe; overlays[].placement
overlays[].xnumberoverlays[].x
overlays[].ynumberoverlays[].y
overlays[].startTimenumberoverlays[].start Time
overlays[].endTimenumberoverlays[].end Time
overlays[].fontSizenumberoverlays[].font Size
overlays[].colorstringoverlays[].color
overlays[].fontstringrpc://getOverlayFonts; overlays[].font
overlays[].shadowColorstringoverlays[].shadow Color
overlays[].shadowXnumberoverlays[].shadow X
overlays[].shadowYnumberoverlays[].shadow Y
overlays[].widthnumberoverlays[].width
overlays[].heightnumberoverlays[].height
callbackUrlstringURL
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner
filebinaryrequired (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 fieldWhenValues
platformnone / tiktok / instagram_reels / youtube_shorts
overlays[].typetext / emoji / sticker / animated_sticker / watermark
overlays[].stickerIdrpc://getOverlayStickers
overlays[].animatedStickerIdrpc://getOverlayAnimatedStickers
overlays[].position/ bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center
overlays[].emojiIdrpc://getOverlayEmojis
overlays[].placementcustom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe
overlays[].fontrpc://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.

OperationHTTP and pathMinimal JSON / notes
save_samplePOST /franklab/api/franklab/audio-samples{"name":"Synthetic sample","sampleUrl":"https://example.com/synthetic.wav"}
apply_samplePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.mp4","operation":"overlay","sampleId":"<SAMPLE_UUID>"}
overlayPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"overlay","audioUrl":"https://example.com/synthetic.wav"}
replacePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"replace","audioUrl":"https://example.com/synthetic.wav"}
fitPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"fit","audioUrl":"https://example.com/synthetic.wav","fitStrategy":"trim_pad","fitAudioMode":"replace"}
extractPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"extract"}
speedPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"speed","speed":1.1}
removePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"remove"}
write_tagsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"write_tags","tagTitle":"Synthetic test"}
replace_tagsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"replace_tags","tagTitle":"Synthetic test"}
strip_tagsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"strip_tags"}
normalizePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"normalize","targetLoudness":-16}
trimPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"trim","startTime":0,"duration":1}
convertPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"convert","targetFormat":"mp3","audioBitrate":"64k"}
fadePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"fade","fadeInDuration":0.2}
mergePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"merge","audioUrls":["https://example.com/synthetic.wav","https://example.com/synthetic.wav"]}
spectrogramPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"spectrogram","imageWidth":320,"imageHeight":240}
waveform_imagePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"waveform_image","imageWidth":320,"imageHeight":240}
enhance_dialoguePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"enhance_dialogue","enhanceOriginal":1,"enhanceAmount":1}
stereo_toolsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"stereo_tools","stereoPreset":"mono"}
lookup_audio-samplesGET /franklab/api/franklab/integrations/text-sticker/audio-samples
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profiles
get_taskGET /franklab/api/franklab/jobs/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
save_sample_filePOST /franklab/api/franklab/audio-samples
list_samplesGET /franklab/api/franklab/audio-samples
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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>"}'
bash
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.

FieldTypeConditions and allowed values
namestringrequired (save_sample); max length 120; required (save_sample_file); Non-empty, maximum 120 characters
sampleUrlstringrequired when sampleSourceMode=url; URL
sampleStartTimenumbermin 0; Seconds >=0
sampleEndTimenumbermin 0; Seconds greater than start
videoUrlstringrequired (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)
sampleIdstringrequired (apply_sample); rpc://getAudioSamples; sample Id
operationstringrequired (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)
insertAtTimenumbermin 0
audioStartTimenumbermin 0
audioEndTimenumbermin 0
audioVolumenumbermin 0; max 2
videoVolumenumbermin 0; max 2; fitAudioMode=mix
loopIfShortbooleanloop If Short; fitStrategy=trim_pad
callbackUrlstringURL
audioUrlstringrequired (overlay); URL; required (replace); required (fit)
audioFadeOutbooleanaudio Fade Out
fitAudioModestringrequired (fit); replace / mix; fit Audio Mode
fitStrategystringrequired (fit); trim_pad / stretch; fit Strategy
speedModestringrequired when fitStrategy=stretch; standard / voice_natural; speed Mode; required (speed)
speednumberrequired (speed); min 0.25; max 4
audioBitratestring64k / 96k / 128k / 160k / 192k / 256k / 320k; 8k–320k string; custom is a Make control, not a REST value
tagTitlestringtag Title
tagArtiststringtag Artist
tagAlbumstringtag Album
tagGenrestringtag Genre
tagCommentstringtag Comment
tagDatestringtag Date
tagDescriptionstringtag Description
tagKeywordsstringtag Keywords
tagCopyrightstringtag Copyright
tagComposerstringtag Composer
tagAlbumArtiststringtag Album Artist
tagTrackstringtag Track
tagDiscstringtag Disc
tagPublisherstringtag Publisher
tagBpmstringtag Bpm
tagLanguagestringtag Language
tagSoftwarestringtag Software
summarystringsummary
transcriptstringtranscript
c2paSigningModestringoff / franklab / user_profile; c2pa Signing Mode
c2paSignerProfileIdstringrequired when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id
contentOriginstringfranklab 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
sourceMaterialUrlsarraymax items 10
originalEvidenceUrlsarraymax items 10
verifiedIncomingC2paIngredientbooleanverified Incoming C2pa Ingredient
c2paActionDescriptionstringc2pa Action Description
c2paDisclosurestringc2pa Disclosure
targetLoudnessnumbertarget Loudness
targetTruePeaknumbertarget True Peak
startTimenumbermin 0
durationnumberrequired (trim); min 0
targetFormatstringrequired (convert); mp3 / aac / wav / ogg / flac / alac / opus; target Format
fadeInDurationnumbermin 0
fadeOutDurationnumbermin 0
audioUrlsarraymax items 20
referenceAudioUrlstringrequired (quality_compare); URL
imageWidthnumbermin 160; max 4096
imageHeightnumbermin 120; max 2160
spectrogramColorstringintensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain; spectrogram Color
spectrogramScalestringlog / lin / sqrt / cbrt / 4thrt / 5thrt; spectrogram Scale
spectrogramLegendbooleanspectrogram Legend
waveformColorstringwaveform Color
waveformBgColorstringwaveform Bg Color
waveformSplitChannelsbooleanwaveform Split Channels
enhanceOriginalnumbermin 0; max 1
enhanceAmountnumbermin 0; max 3
stereoPresetstringwiden / narrow / mono; stereo Preset
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner
filebinaryrequired (upload_source); multipart/form-data file; maximum 157286400 bytes
sampleFilebinaryrequired (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 fieldWhenValues
operationsave_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
sampleSourceModeoperation=save_sampleurl / file
sampleIdoperation=apply_samplerpc://getAudioSamples
sampleOperationoperation=apply_sampleoverlay / replace / fit
fitAudioModeoperation=fitreplace / mix
fitStrategyoperation=fittrim_pad / stretch
speedModeoperation=fit; fitStrategy=stretchstandard / voice_natural
speedModeoperation=speedstandard / voice_natural
audioBitrateoperation=speed64k / 96k / 128k / 160k / 192k / 256k / 320k / custom
c2paSigningModeoperation=write_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=write_tagsrpc://getC2paSignerProfiles
contentOriginoperation=write_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
c2paSigningModeoperation=replace_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=replace_tagsrpc://getC2paSignerProfiles
contentOriginoperation=replace_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
targetFormatoperation=convertmp3 / aac / wav / ogg / flac / alac / opus
audioBitrateoperation=convert64k / 96k / 128k / 160k / 192k / 256k / 320k / custom
spectrogramColoroperation=spectrogramintensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain
spectrogramScaleoperation=spectrogramlog / lin / sqrt / cbrt / 4thrt / 5thrt
stereoPresetoperation=stereo_toolswiden / 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.

OperationHTTP and pathMinimal JSON / notes
background_removePOST /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_bgPOST /franklab/api/franklab/jobs/image{"operation":"bria_image_remove_bg","imageUrl":"https://example.com/synthetic.png"}
bria_image_replace_bgPOST /franklab/api/franklab/jobs/image{"operation":"bria_image_replace_bg","imageUrl":"https://example.com/synthetic.png","prompt":"Plain studio background"}
bria_erase_foregroundPOST /franklab/api/franklab/jobs/image{"operation":"bria_erase_foreground","imageUrl":"https://example.com/synthetic.png"}
bria_erase_by_textPOST /franklab/api/franklab/jobs/image{"operation":"bria_erase_by_text","imageUrl":"https://example.com/synthetic.png","objectName":"lamp"}
bria_product_lifestyle_by_textPOST /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_cutoutPOST /franklab/api/franklab/jobs/image{"operation":"bria_product_cutout","imageUrl":"https://example.com/synthetic.png"}
waveformPOST /franklab/api/franklab/jobs/montageoperation:"waveform", videoUrl: direct HTTPS audio URL. See input requirements below.
video_roundPOST /franklab/api/franklab/jobs/montage{"operation":"round","videoUrl":"https://example.com/synthetic.mp4","shape":"rounded","radius":8,"backgroundColor":"#000000"}
video_remove_bgPOST /franklab/api/franklab/jobs/montage{"operation":"remove_bg","videoUrl":"https://example.com/synthetic.mp4","removeBgProvider":"bria","removeBgOutputCodec":"webm_vp9"}
bria_video_replace_bgPOST /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_objectPOST /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_taskGET /franklab/api/franklab/jobs/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
get_recraft_taskGET /franklab/api/v1/recraft/record-infoSee Recraft access and tariff conditions above.
check_connectionGET /franklab/api/v1/images/omni-image
bash
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.

FieldTypeConditions and allowed values
modelstringrequired (background_remove); recraft/remove-background
inputobjectrequired (background_remove); Input object
input.imagestringrequired (background_remove); Image URL; Make documents png/jpg/webp, <=5 MB, <=16 MP, 256–4096 px
callBackUrlstringOptional provider callback URL
callbackUrlstringURL
imageUrlstringrequired (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)
preserveAlphabooleanpreserve Alpha
operationstringrequired (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)
promptstringprompt
refImagesarrayref Images
briaModestringhigh_control / base / fast; bria Mode
negativePromptstringnegative Prompt
refinePromptbooleanrefine Prompt
originalQualitybooleanoriginal Quality
forceBackgroundDetectionbooleanforce Background Detection
seednumberseed
objectNamestringrequired (bria_erase_by_text); object Name
sceneDescriptionstringrequired (bria_product_lifestyle_by_text); scene Description
optimizeDescriptionbooleanoptimize Description
placementTypestringautomatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates; placement Type
briaAspectRatiostring1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3; bria Aspect Ratio
forceRmbgbooleanforce Rmbg
skustringsku
videoUrlstringrequired (waveform); URL; required (video_round); required (video_remove_bg); required (bria_video_replace_bg); required (bria_video_erase_object)
widthnumberwidth
heightnumberheight
waveformColorstringwaveform Color
waveformBgColorstringwaveform Bg Color
shapestringrounded / circle; shape
radiusnumberradius
backgroundColorstringbackground Color
removeBgProviderstringbria / auto / replicate; remove Bg Provider
removeBgBackgroundColorstringTransparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange; remove Bg Background Color
removeBgOutputCodecstringwebm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265; remove Bg Output Codec
removeBgPreserveAudiobooleanremove Bg Preserve Audio
backgroundUrlstringrequired (bria_video_replace_bg); URL
durationnumberduration
briaOutputCodecstringmp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif; bria Output Codec
briaPreserveAudiobooleanbria Preserve Audio
maskUrlstringrequired (bria_video_erase_object); URL
autoTrimbooleanauto Trim
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner; required (get_recraft_task); Query parameter returned by recraft/create-task
filebinaryrequired (upload_source); multipart/form-data file; maximum 157286400 bytes
pageNumnumberQuery pagination; connection check uses 1
pageSizenumberQuery 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 fieldWhenValues
operationbackground_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
briaModeoperation=bria_image_replace_bghigh_control / base / fast
briaModeoperation=bria_product_lifestyle_by_texthigh_control / base / fast
placementTypeoperation=bria_product_lifestyle_by_textautomatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates
briaAspectRatiooperation=bria_product_lifestyle_by_text1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3
shapeoperation=video_roundrounded / circle
removeBgProvideroperation=video_remove_bgbria / auto / replicate
removeBgBackgroundColoroperation=video_remove_bgTransparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange
removeBgOutputCodecoperation=video_remove_bgwebm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265
briaOutputCodecoperation=bria_video_replace_bgmp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif
briaOutputCodecoperation=bria_video_erase_objectmp4_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.

OperationHTTP and pathMinimal JSON / notes
v1POST /franklab/api/franklab/jobs/subtitles{"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v1","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn"}
v2POST /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_fontsGET /franklab/api/franklab/integrations/text-sticker/fonts
lookup_subtitle-templatesGET /franklab/api/franklab/integrations/text-sticker/subtitle-templates
lookup_video-effectsGET /franklab/api/franklab/integrations/text-sticker/video-effects
lookup_safe-zone-platform-optionsGET /franklab/api/franklab/integrations/text-sticker/safe-zone-platform-options
lookup_safe-zone-placement-optionsGET /franklab/api/franklab/integrations/text-sticker/safe-zone-placement-options
get_taskGET /franklab/api/franklab/jobs/{taskId}
upload_sourcePOST /franklab/api/franklab/jobs/upload
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/stats
bash
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.

FieldTypeConditions and allowed values
videoUrlstringrequired (v1); URL; required (v2)
languagestringauto / ru / en; language
transcriptionEnginestringsubtitleSourceMode=auto; whisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper; transcription Engine
diarizebooleansubtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe OR subtitleSourceMode=auto; transcriptionEngine=elevenlabs_scribe; diarize
transcriptionFormatbooleansubtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; transcription Format
fillerWordsbooleansubtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; filler Words
keytermarraysubtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe OR subtitleSourceMode=auto; transcriptionEngine=elevenlabs_scribe OR subtitleSourceMode=auto; transcriptionEngine=local_whisper; max items 100; max length 50
keyterm[]stringrequired when subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; keyterm[]
subtitlesarrayrequired when subtitleSourceMode=manual; max items 500
subtitles[].textstringrequired when subtitleSourceMode=manual; subtitles[].text
subtitles[].startTimenumberrequired when subtitleSourceMode=manual; subtitles[].start Time
subtitles[].endTimenumberrequired when subtitleSourceMode=manual; subtitles[].end Time
subtitles[].wordsarraysubtitleSourceMode=manual; subtitles[].words
subtitles[].words[].wordstringrequired when subtitleSourceMode=manual; subtitles[].words[].word
subtitles[].words[].startnumberrequired when subtitleSourceMode=manual; subtitles[].words[].start
subtitles[].words[].endnumberrequired when subtitleSourceMode=manual; subtitles[].words[].end
translateTostringtranslationMode=translate; en / ru / de / fr / es / it / pt / zh / ja / ko / ar; translate To
dualLanguagebooleantranslationMode=translate; dual Language
videoEffectsarrayeffectsMode=custom; max items 20
videoEffects[].effectIdstringrequired when effectsMode=custom; rpc://getVideoEffects; video Effects[].effect Id
videoEffects[].scopestringeffectsMode=custom; clip / range; video Effects[].scope
videoEffects[].startTimenumbereffectsMode=custom; video Effects[].start Time
videoEffects[].endTimenumbereffectsMode=custom; video Effects[].end Time
videoEffects[].intensitynumbereffectsMode=custom; video Effects[].intensity
outputModestringburn / srt / vtt / ass / burn+srt / burn+vtt; output Mode
c2paSigningModestringoff / franklab / user_profile; c2pa Signing Mode
contentOriginstringfranklab 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
humanAuthorNamestringc2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Name
humanAuthorUrlstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; human Author Url
reviewedBystringc2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed By
reviewedAtstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; reviewed At
reviewMethodstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; review Method
sourceMaterialUrlsarrayc2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10
originalEvidenceUrlsarrayc2paSigningMode=franklab OR c2paSigningMode=user_profile; max items 10
verifiedIncomingC2paIngredientbooleanc2paSigningMode=franklab OR c2paSigningMode=user_profile; verified Incoming C2pa Ingredient
c2paActionDescriptionstringc2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Action Description
c2paDisclosurestringc2paSigningMode=franklab OR c2paSigningMode=user_profile; c2pa Disclosure
c2paSignerProfileIdstringrequired when c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; c2pa Signer Profile Id
callbackUrlstringURL
templateIdstringclean-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
highlightModestring/ none / keywords / karaoke / emoji; highlight Mode
platformstringv1PlacementMode=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
safeZonePresetstringv1PlacementMode=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)
positionXnumberv1PlacementMode=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
positionYnumberv1PlacementMode=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
fontSizenumberv1TextStyleMode=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
fontstringv1TextStyleMode=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
colorstringv1TextStyleMode=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
uppercasebooleanv1TextStyleMode=custom; uppercase
displayWordsnumberv1TextStyleMode=custom; min 1; max 6
maxLinesnumberv1TextStyleMode=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
maxCharsPerLinenumberv1TextStyleMode=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
gapSplitSecnumberv1TextStyleMode=custom; min 0.15; max 2
lingerMsnumberv1TextStyleMode=custom; min 0; max 500
captionEnginestring
presetOverrideModestringv2TemplateId=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
outlinenumberv2TemplateId=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
outlineColorstringv2TemplateId=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
shadownumberv2TemplateId=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
renderModestringv2TemplateId=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
animationIntensitystringv2TemplateId=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
highlightColorstringv2TemplateId=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
revealBaselinestringv2TemplateId=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
animationStylestringv2TemplateId=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
emojiAccentModestringv2TemplateId=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
activeColorstringv2TemplateId=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
activeBoxColorstringv2TemplateId=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
activeBoxPaddingnumberv2TemplateId=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
qualityModestringstandard / pro; quality Mode
emphasisModestringsemantic / manual / karaoke / none; emphasis Mode
emphasisWordsarrayv2EmphasisMode=manual; max items 50; max length 40
emphasisWords[]stringrequired when v2EmphasisMode=manual; emphasis Words[]
diagnosticsLevelstringbasic / full; diagnostics Level
visualQaModestringoff / contact_sheet; visual Qa Mode
glossaryarraymax items 50
glossary[].fromstringrequired (v2); glossary[].from
glossary[].tostringrequired (v2); glossary[].to
brandGlossaryarraymax items 50
brandGlossary[].fromstringrequired (v2); brand Glossary[].from
brandGlossary[].tostringrequired (v2); brand Glossary[].to
taskIdstringrequired (get_task); Path parameter: returned taskId, scoped to the same partner
filebinaryrequired (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 fieldWhenValues
languageauto / ru / en
captionEnginev1 / v2
v1TemplateIdcaptionEngine=v1clean-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
v1HighlightModecaptionEngine=v1/ none / keywords / karaoke / emoji
v1PlacementModecaptionEngine=v1tiktok_bottom_safe / bottom_center / center / top / exact_preset / exact_coordinates
v1PlatformcaptionEngine=v1; v1PlacementMode=exact_presetrpc://getSafeZonePlatforms
v1SafeZonePresetcaptionEngine=v1; v1PlacementMode=exact_presetrpc://getSafeZonePlacements
v1TextStyleModecaptionEngine=v1template / custom
v1FontcaptionEngine=v1; v1TextStyleMode=customrpc://getFonts
v2TemplateIdcaptionEngine=v2shorts_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
v2QualityModecaptionEngine=v2standard / pro
v2EmphasisModecaptionEngine=v2semantic / manual / karaoke / none
v2DiagnosticsLevelcaptionEngine=v2basic / full
v2VisualQaModecaptionEngine=v2off / contact_sheet
subtitleSourceModeauto / manual
transcriptionEnginesubtitleSourceMode=autowhisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper
translationModenone / translate
translateTotranslationMode=translateen / ru / de / fr / es / it / pt / zh / ja / ko / ar
effectsModenone / custom
videoEffects[].effectIdeffectsMode=customrpc://getVideoEffects
videoEffects[].scopeeffectsMode=customclip / range
outputModeburn / srt / vtt / ass / burn+srt / burn+vtt
c2paSigningModeoff / franklab / user_profile
contentOriginc2paSigningMode=franklabnot_declared / human_edited / ai_assisted / ai_generated
c2paSignerProfileIdc2paSigningMode=user_profilerpc://getC2paSignerProfiles
contentOriginc2paSigningMode=user_profilenot_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 fieldv2TemplateId presetsWhenValues
v2PresetControlModeAll 31captionEngine=v2preset / manual
v2CaptionPositionAll 31captionEngine=v2; v2PresetControlMode=preset/ bottom_safe / center / top_safe
v2FontAll 31captionEngine=v2; v2PresetControlMode=manualrpc://getFonts
v2PlacementModeAll 31captionEngine=v2; v2PresetControlMode=manual/ tiktok_bottom_safe / exact_preset / exact_coordinates
v2PlatformAll 31captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_presetrpc://getSafeZonePlatforms
v2SafeZonePresetAll 31captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_presetrpc://getSafeZonePlacements
v2RenderModeAll 31captionEngine=v2; v2PresetControlMode=manual/ static / phrase_pop / word_pop / active_word / word_reveal / active_box
v2AnimationIntensityAll 31captionEngine=v2; v2PresetControlMode=manuallow / medium / high
v2RevealBaselineAll except shorts_pro, creator_hook_v2captionEngine=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.

/en/docs/utilities-api.md
Need help?Contact support