Video limits
Both 1920 × 1080 landscape and 1080 × 1920 portrait videos are supported. A square video must fit within 1080 × 1080. Odd pixel dimensions may be rounded down by one pixel during encoding.
The API inspects the video automatically. Videos longer than 600 seconds fail validation; the API does not trim them. Credits are reserved for the actual duration rounded up to a whole second before caption preparation starts.
Use an existing SRT file
Include the file’s text in the optionalsrt JSON field of POST /v1/subtitles. This skips ElevenLabs transcription entirely, so the video may have no audio. The language field is ignored when srt is present.
jq --rawfile:
HH:MM:SS,mmm --> HH:MM:SS,mmm timestamps. UTF-8 text, a BOM, multiline captions, and LF or CRLF line endings are accepted. The SRT limit is 256 KiB UTF-8 and 8192 words; the full JSON body may be up to 512 KiB. Supply file contents, not a URL or base64 data. Empty or malformed SRT returns 400 INVALID_REQUEST.
Cue times must fit within the source video. A job whose cues extend beyond the inspected duration fails with INVALID_SRT and releases its reserved credits. The SRT download preserves the supplied file contents. Rendered captions keep cue boundaries, with wrapping and splitting determined by the selected preset. Basic SRT formatting tags are removed from rendered text in favor of the preset’s styling. Since SRT has no word timings, animated captions and the JSON transcript use word timings estimated evenly within each cue.
Billing remains based on the video duration, rounded up to whole seconds.
Direct HTTPS URLs
The API downloadsvideo_url from the processing server. The URL must:
- Use HTTPS on the standard port, with a public hostname.
- Return the video directly with HTTP
200and no redirect. - Be reachable without cookies or additional authorization headers.
- Contain no embedded username/password or URL fragment.
- Remain valid while the job is waiting and downloading.