All toolsvideo to text description API

Describe a Video as Text

Turn a video into a summary and a list of timestamped scene descriptions, so an agent can decide what to trim, split or caption without watching the footage or sending frames to a model on every call. Run the preset directly on this page or call the same agent-ready endpoint from your product.

LIVE TOOL
Run describe video
Drop a video, adjust the defaults if you need to, and download the result here.

or ·

Already have an account? Sign in

BEFORE / AFTER

See what the tool changes.

A real example: the after side is the unedited output of a KinoPipe job. Run the live form above to generate the same result from your own media.

BeforeSource video
WebM · VP9
mountain.webm
AfterCompatible MP4
Ready
MP4 · H.264
mountain.mp4

Demo footage: public-domain timelapses (Bureau of Land Management, Oregon · NASA SVS). Processed by the same pipeline the API and MCP tools call.

Useful defaults, typed options.

The tool slug stays stable while your agent supplies named media inputs and a narrow set of documented options.

  • One call replaces frame-by-frame vision passes
  • Timestamps line up with trim-video and split-video
  • Optional focus for what to look for
What this preset does
  1. 01Detect shot changes and build the scene list
  2. 02Extract one frame per scene, or one every 8 seconds when there are no cuts
  3. 03Describe the frames with a vision model in the language you choose
  4. 04Return a summary and timestamped scenes as JSON
Stable endpointPOST /api/v1/tools/describe-video
Live API request
{
  "inputs": [{ "id": "main", "url": "https://example.com/product-demo.mp4" }],
  "options": { "max_scenes": 12, "language": "en", "focus": "on-screen text and product shots" }
}
Successful output example
{
  "result": {
    "output": {
      "filename": "describe-video-output.mp4",
      "contentType": "video/mp4",
      "byteSize": 437021,
      "downloadUrl": "https://cdn.kinopipe.com/…"
    }
  }
}

Know the boundaries before you run.

Visual descriptions come from one frame per scene: motion between frames is not part of the result. Speech is transcribed separately (25 European languages) and returned with timestamps.
Up to 30 scenes per call; longer videos fold neighbouring cuts together, so raise max_scenes or describe a trimmed section for finer detail.

About describe video

What does the result look like?

A JSON object with a two-sentence summary, retrieval tags, the SHA-256 and byte size of the source, a scenes array (start, end, duration, what is visible, legible on-screen text, shot type, number of cuts covered) and, when the file has audio, a transcript with timestamped segments.

Why describe instead of sending frames to my own model?

The description is computed once and returned as a small JSON file you can keep next to the video; the hash tells you when it is stale. Every later decision, which seconds to trim, where to split, what to caption, reads text instead of re-uploading frames, which is faster and much cheaper in tokens.

Does it transcribe speech?

Yes, with a self-hosted Parakeet model (25 European languages, auto-detected). Set transcript to false to skip it, or call transcribe-video alone when you only need the text and an SRT file.

Related media tools