Video intelligence API

Upload a video.
Ask it anything.
Get timestamps.

Index any video into a per-second description, then question it, search it, and pull structured data with one API.

Get an API keyPOST /v1/videos {"source_url": "https://…/demo.mp4"}

Per-second index. Transcript included. Credits reset monthly.

Animation: ten video frames sampled one second apart settle into a contact sheet while a scan line marks the current second.

big-buck-bunny.mp410:3464 segmentsqueued
01:50
  1. 01:50–02:00

    A purple butterfly lands on the rabbit's face in the meadow, then leads it off between the trees.

    • 01:50butterfly lands on the rabbit
    • 01:57shot widens to the meadow

    A purple butterfly lands on the rabbit's nose as it stands in the meadow.

  2. 02:00–02:10

    Three rodents watch from the grass as the rabbit follows the butterfly to a large tree.

    • 02:02three rodents appear
    • 02:08squirrel peeks around the tree

  3. 02:10–02:20

    At the tree the rabbit watches the butterfly while the small squirrel creeps up beside it.

    • 02:16squirrel appears beside the rabbit
    • 02:18flying squirrel drops in

GET /v1/search

    POST /v1/videos/:id/ask

    Real output from a real video. Sample footage: Big Buck Bunny, Blender Foundation, CC BY 3.0.

    How it works

    1. Upload or link a video

      Send a file through a presigned upload, or point us at a public URL. Anything ffmpeg can read works, up to your plan's length limit.

    2. We index every second

      A worker samples one frame per second and tiles ten into a contact sheet. Each sheet and its slice of the transcript become one structured ten-second segment.

    3. Ask, search, extract

      Ask a question and get an answer with the segments that support it. Search for a moment across every video you own, or read the whole index as JSON.

    What you get

    Per-second descriptions
    One line for every second of the video, written from the frames.
    Transcript on the same clock
    Speech is transcribed and cut into the same ten-second segments as the frames.
    On-screen text
    Titles, captions, slides and signs are read and stored per segment.
    Events with timestamps
    Notable moments and scene changes carry the second they happen.
    Search across your library
    Full-text search over descriptions, transcript and on-screen text, ranked, with matches highlighted.
    Webhooks when a video is ready
    A signed POST to your URL when indexing finishes or fails.

    Every second, as JSON

    One ten-second segment from the index: what happened each second, what was on screen, and what was said.

    Search and ask run on exactly this, so every answer can point back to a second.

    {
      "index": 17,
      "start_s": 170,
      "end_s": 180,
      "summary": "Drags a video file into the upload area; progress bar fills.",
      "seconds": [
        { "t": 170, "description": "Cursor hovers over a dashed upload area." },
        { "t": 171, "description": "A file icon is dragged toward the area." },
        { "t": 172, "description": "File dropped; a progress bar appears at 0%." }
      ],
      "objects": ["laptop screen", "upload area", "progress bar"],
      "on_screen_text": ["Drop a video here", "demo.mp4"],
      "people_count": 0,
      "events": [
        { "t": 172, "event": "file dropped" },
        { "t": 178, "event": "upload completes" }
      ],
      "scene_change": false,
      "transcript": "so let me just drop the file in here and you can watch it go"
    }

    Four plans. One credit is about a cent.

    Credits reset every month with your plan. Need more before the reset? Buy a pack of 100 credits for $10 any time; packs never expire.

    What credits buy

    Credit costs
    Index one minute, standard10 credits
    Index one minute, precise25 credits
    Ask a question5 credits
    Search1 credit

    Search and reads of your index are nearly free; indexing is where the credits go.

    Indexing is billed per started minute; nothing is charged if a job fails.