Skip to main content
POST
Create a captioned video
Requires subtitles:write. Submit a direct HTTPS video URL and poll the returned status_url every five seconds. Each accepted submission creates a new job, even with identical input. Choose any of the 16 presets and optionally override typography, layout, background, outline, shadow, and applicable highlight colors through style. Omitted fields inherit the preset, including fields within nested objects. Caption styles explains all controls and preset-specific behavior.
Creating a job requires a positive prepaid balance. After inspecting the video, the API reserves its actual duration rounded up before transcription. If credit is insufficient, the job fails with INSUFFICIENT_CREDITS. Successful jobs consume the reservation; failed and canceled jobs release it. Videos can be up to 600 seconds long.
See Quickstart for a full submission and download example, and Media requirements for accepted sources.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
video_url
string<uri>
required

Direct HTTPS MP4, MOV, or WebM URL. No redirects or extra auth headers. Maximum 500 MiB; must remain valid until downloaded.

Maximum string length: 4096
Example:

"https://your-cdn.example/video.mp4"

preset
enum<string>
default:classic

Caption preset. Omitted style properties use this preset's defaults.

Available options:
classic,
highlight,
smash,
box,
push,
elegant,
ogre,
outline,
paper-ink,
action,
prompter,
storytelling,
karaoke,
glow,
thin&bold,
background
language
string

Optional lowercase two- or three-letter language code supported by transcription. Omit for automatic language detection. Does not translate.

Pattern: ^[a-z]{2,3}$
Example:

"en"

style
object

Optional caption style overrides. Omitted fields (including nested fields) inherit the selected preset. Font size is derived from font_family and text_width; horizontal caption placement follows the preset. Direct font_size and horizontal_position overrides are not accepted. GET /v1/presets lists defaults, supported controls and preset-specific behavior.

Response

Accepted; poll status_url every five seconds

id
string
required
status
string
required
status_url
string<uri>
required