Captions with real word timings
Point Renderly at any audio or video URL and get back captions where every word carries its own start and end time. Burn them in during the render, or take the timings and do your own thing with them.
Two renders of the same clip, from the same source video. Only the one you are watching is downloaded.
Word-synced, not line-synced
Most captioning returns blocks of text with a start and end time for the block. That is enough to put a line on screen, and not enough to highlight the word being spoken.
Renderly returns both representations of the same result. The captions array holds caption pages of a few words each, and every word inside carries its own startMs, endMs and confidence. Word-by-word highlighting works with no extra timing work.
Alongside it, captionOverlay comes back as a ready-to-paste caption overlay you can drop straight into a composition.
{
"text": "coastal",
"startMs": 2140,
"endMs": 2530,
"confidence": 0.99
}Frame timings default to 30 fps; pass fps to change it.
You pay for the clip, not the file
Highlight clips come out of long recordings. A three-hour podcast yields a nine-second moment worth posting, and transcribing the whole recording to caption nine seconds of it is the kind of waste that quietly decides whether a pipeline is affordable.
Pass startTime and endTime in seconds and only that window is transcribed. Word timings come back clip-relative, so zero is the start of your clip and the result drops onto a caption overlay already aligned.
Nine seconds costs 0.25 credits even if the file is an hour long. When the source is a trimmed clip in a composition, the window is inferred for you and timings auto-align, including speed changes.
{
"sourceUrl": "https://your-bucket.s3.amazonaws.com/full-podcast.mp4",
"startTime": 76,
"endTime": 85
}Transcribes and bills seconds 76 to 85 only.
- 0.25
- credits per started minute
- 5 GB
- maximum file size
- 3 hrs
- maximum audio length
Two ways in
Inside a render
Give the template a caption overlay marked isDynamic, then name the overlay you want transcribed. The captions are generated, placed and burned in as part of the same call. Point source at a narration overlay filled by AI voiceover in the same request and the captions cannot drift from the audio.
{
"projectId": "your_project_id",
"replacements": {
"subtitles": {
"transcribe": { "source": "clip" }
}
}
}As a standalone call
POST /api/v1/ai/captions takes a URL and returns the captions and a ready-made overlay without rendering anything. Useful when you want the timings for something else - a transcript, a search index, chapter markers - or when you want to inspect the result before committing to a render.
{
"sourceUrl": "https://your-bucket.s3.amazonaws.com/full-podcast.mp4",
"startTime": 76,
"endTime": 85
}Omit startTime and endTime to transcribe the whole file.