Documentation Index

Fetch the complete documentation index at: https://cloudinary.com/documentation/llms.txt

Use this file to discover all available pages before exploring further.

Image & Video APIs

AI Video Analysis API (Beta)

Last updated: Jul-22-2026

Important
The AI Video Analysis API is currently in Beta. There may be minor changes to parameter names or other implementation details before the general access release. We invite you to try it out. We would appreciate any feedback via our support team.

Overview

The AI Video Analysis API uses AI to generate a visual transcription of a video: a sequence of timestamped, natural-language descriptions of what's visible on screen. Unlike video transcription, which converts spoken audio to text, a visual transcription describes the visual content itself, such as scenes, subjects, actions, and settings, even when the video has no audio.

You submit a video asset that's already stored in your product environment, optionally guide the analysis with a prompt, and receive a transcript file containing one entry per scene segment.

Common use cases include:

  • Accessibility: Use the descriptions as the basis for an audio description (AD) script that helps people who are blind or have low vision understand the visual content. See using the output for accessibility.
  • Visual search and tagging: Feed the descriptions into a MediaFlows workflow or an LLM to map visual content to your own tags or taxonomy.
  • Content understanding: Generate scene-by-scene summaries of video content for editorial or cataloging workflows.

How it works

Analysis runs asynchronously:

  1. Send a POST request with the asset to analyze. The response returns a job_id and an initial status of pending.
  2. Poll the job using the job_id until the status is completed.
  3. The completed response includes a visual_transcription object that points to a raw file containing the timestamped descriptions.

Generate a visual transcription

Send a POST request to the ai_video_analysis endpoint:

https://api.cloudinary.com/v2/video/<cloud_name>/ai_video_analysis

Authenticate using your API key and secret. Include the following parameters in your JSON request body:

Parameter Type Required Description
video_asset_id String Yes The unique identifier of the video asset to analyze. The video must already be stored in your product environment. You can retrieve an asset's ID from the upload response or by using the Admin API.
visual_transcription_prompt String No A natural-language instruction that guides the description style or focus, for example "focus on describing colors". If omitted, a default prompt is used.

Example request

Example response

The request returns a 201 response with a job_id and a status of pending:

Check the analysis status

To retrieve the result, send a GET request to the same endpoint with the job_id appended to the path:

https://api.cloudinary.com/v2/video/<cloud_name>/ai_video_analysis/<job_id>

Example request

While the analysis is in progress, the status is pending. Once it finishes, the status is completed and the response includes a visual_transcription object:

The visual_transcription object describes the generated transcript file, which is stored as a raw asset in your product environment:

Field Description
asset_id The unique identifier of the generated transcript file.
public_id The public ID of the transcript file.
resource_type The resource type of the file. Always raw.
delivery_type The delivery type of the file, for example upload.
url The URL to fetch the transcript file contents.

The visual transcription file

Fetch the file at the returned url to retrieve the descriptions. The file contains a JSON array of segments, where each segment describes a portion of the video over a time range (in seconds).

For example, analyzing this video:

produces the following transcript:

Field Description
transcript A natural-language description of what's visible during the segment.
start_time The start of the segment, in seconds.
end_time The end of the segment, in seconds.

Guiding the output with a prompt

By default, the API produces a general description of each segment. Use the optional visual_transcription_prompt parameter to steer what the descriptions focus on or how they're phrased.

For example, analyzing the same video with the prompt "focus on describing colors":

produces color-rich descriptions:

You might instead focus the model on actions, settings, or on-screen objects, depending on your use case.

Using the output for accessibility

A visual transcription provides the raw material for an audio description (AD) script, which conveys important visual information to people who are blind or have low vision. Because each segment is timestamped, you can present the descriptions as a time-aligned text track or as text alongside the video for screen readers.

For example, the color-focused turtle transcription above maps directly onto a WebVTT file, with each segment's start_time and end_time becoming a cue:

Upload this file to your product environment and supply it as a descriptions text track in the Cloudinary Video Player, as shown in Audio descriptions as captions. Review and edit the generated text before publishing, so that the descriptions are accurate and fit within the available gaps in any existing audio.

Note
The API produces descriptive text, not a synthesized audio track. To deliver the descriptions as spoken audio, pair the text with a text-to-speech step in your own workflow.

Error handling

If a request can't be processed, the response includes an error object with a message. For example, an invalid asset identifier returns:

Beta limitations

During Beta, the API returns the visual transcription file only. Additional outputs, such as a summary, title, or tags derived from the analysis, are planned for a future phase.

Related topics

✔️ Feedback sent!

Rate this page:

one star two stars three stars four stars five stars