Turn any video into a breakdown a model can work from.

One API call. Video Analysis API reads the video once and returns what is in it as data: every word with its time, every cut and what kind it is, the shots and scenes, every caption and graphic with its box, and who is in it, with a picture of each.

Below: part of what the API returned for a 13-second vertical video. The whole result is 15 KB.

17-1003576625514683.mp42.7 MB
GET /v1/analyses/an_…/result15 KB
{
  "video": {"name":"17-1003576625514683.mp4","duration":13.467,"width":720,"height":1280,"fps":30},
  "transcript": { "language": "en", "words": [
    {"w":"Dental","s":0.24,"e":0.72,"c":0.983,"spk":0},
    {"w":"powder","s":0.72,"e":1.12,"c":0.965,"spk":0},
    {"w":"cleans","s":1.12,"e":1.52,"c":0.999,"spk":0},
    … 25 more ] },
  "cuts": [ {"frame":105,"t":3.5,"kind":"cut"}, {"frame":202,"t":6.733,"kind":"cut"}, … ],
  "shots": [ {"n":2,"s":3.5,"e":6.733,"scene":2,"kind":"cut"}, … ],
  "elements": [
    {"kind":"caption","text":"This effortless new way","s":3.5,"e":4.75,"box":{"x":0.104,"y":0.702,"w":0.791,"h":0.043}},
    … 11 more ],
  "characters": { "cast": [
    {"label":"A","name":"Golden retriever","kind":"animal","role":"pet","scenes":[3,5,6],"portrait_url":"https://…signed…/characters/A/scene-03-2.jpg"} ] }
}

How it works

Three calls with curl. The result is plain JSON, and the same facts as text when you ask for it.

1 · Upload

Send the video

Ask for an upload URL, then put the bytes to it. Up to 10 minutes and 300 MB. A public https URL works too.

POST /v1/uploads
{ "filename": "clip.mp4", "bytes": 2812322 }
2 · Analyze

Start the job

One request, nothing to choose: every job runs the whole analysis. The estimate is held on your credit.

POST /v1/analyses
{ "upload_id": "up_…" }
3 · Read

Get the breakdown

Poll the job until it is done. Then fetch the result and hand it to any model or program.

GET /v1/analyses/an_…/result
→ the breakdown, as JSON

Every route, with request and response bodies, is in the route reference.

What comes back

Five parts, all on one clock: seconds from the start of the video. Positions are boxes as fractions of the frame, so they hold at any resolution.

PartWhat it holds
TranscriptEvery word with its start, its end and its speaker, and the sentences they make.
CutsEvery cut on its frame, and what kind it is: a hard cut, a jump cut, a punch in or out, a zoom.
Shots and scenesThe shots between the cuts, grouped into scenes: a hard cut starts a scene, the rest stay inside one.
ElementsEvery caption, title, inserted image or clip, logo, sticker, arrow, price and button: its text, its box and its times.
CastWho the video is about, each with a label that holds across scenes, a description, and a crop of every appearance.

Measured where a number can be measured: the cuts come from the pixels, and a caption's start and end are put on the frame where its box changes. Observed where a model looked: what an element says and who a person is. The result, field by field.

Why not let the model watch the video?

It can, and it will tell you roughly what happens. It will not give you the frame a cut lands on, the box a caption sits in, or the same answer twice. The breakdown is the part a model is bad at, done once and written down.

Watch the videoRead the breakdown
TimesRough, and different on the next run.Cuts on their frame; words and elements to the hundredth of a second.
Positions"A caption near the bottom."A box for every element and every person, as fractions of the frame.
The second questionThe whole video again.The same 15 KB of text. Nothing to upload.
A different modelAnother upload, and possibly a different answer.The same file and the same facts.
A programNothing to parse.JSON: a script can cut, caption or re-time from it without a model.

Questions the example's result answers

Each answer below is read from the result on the Example page, with the times and boxes it records.

What people build with it

Anything that has to work on a video without watching it: the breakdown is the structure, ready for an agent or a script.

Start with $5 of credit

Enough for 5 minutes of video. No card needed to try it.