Transcribe Online Video
Transcribe online videos (e.g., Instagram, TikTok) using speech-to-text models when a transcript is not available.
Instagram Carousel Posts:
- For posts with multiple videos, the URL can include
?img_index=Nto select a specific video - Example:
https://www.instagram.com/p/ABC123/?img_index=2transcribes the second video - Without
img_index, the first video is transcribed - Set
all_videos=trueto transcribe ALL videos in a carousel post
Options:
transcript_text=true: Returns transcript as a single text string instead of segmentsall_videos=true: For carousel posts, returns all videos with their transcripts
Billing: on cache miss, one standard_request or residential_request is charged for the metadata fetch (residential for Instagram, Facebook-watch, Rumble; standard otherwise), plus transcription_hour proportional to the audio duration. On cache hit (same URL transcribed before for any user), only transcription_hour is charged — the metadata fetch is skipped. Users with the free_on_cache_hit sponsorship flag get the cache-hit transcription_hour waived (waived: true in the per-charge entry). Set include_usage=true to see the breakdown.
Overview
This endpoint is designed for videos where a pre-existing transcript or caption file cannot be retrieved. It downloads the video content and processes it through an AI speech-to-text model to generate a new transcript. This is particularly useful for social media platforms where direct transcript extraction is not possible, such as Instagram Reels that don’t have captions.Billing
Speech-to-text processing consumestranscription_hour usage. 1 credit covers 3 hours of video/audio transcription.
On a cache miss, one standard_request or residential_request is also charged for the metadata fetch (residential for Instagram, Facebook-watch, Rumble; standard otherwise), plus transcription_hour proportional to the audio duration. On a cache hit (same URL transcribed before, by any user), only transcription_hour is charged — the metadata fetch is skipped. Users with the free_on_cache_hit sponsorship flag get the cache-hit transcription_hour waived (waived: true in the per-charge entry).
Set include_usage: true to receive a usage block with the breakdown.
Supported Platforms
VidNavigator can generate transcripts from these platforms using speech-to-text:- X / Twitter (just copy the tweet video link)
- Facebook (public videos only)
- TikTok
- Dailymotion
- Loom
- Vimeo
Request Parameters
Instagram Carousel Behavior
Instagram carousel posts (e.g.https://www.instagram.com/p/.../) may contain multiple videos and/or images.
- Select a specific item: Append
?img_index=Nto the URL to select a specific item (1-based).
Example:https://www.instagram.com/p/ABC123/?img_index=2selects the second item. - Transcribe all videos: Set
all_videos=trueto transcribe all videos in the carousel. The response format changes (see “Success Response”).
400 with error=no_videos_found.Example Usage
Instagram Carousel (select a specific video with ?img_index=2)
Instagram Carousel (transcribe all videos with all_videos=true)
Success Response (200 OK)
This endpoint has two success response shapes (aoneOf), depending on whether you set all_videos=true:
- Single-video response (default): returns
data.video_info+data.transcript - All-videos response (
all_videos=true): returnsdata.carousel_info+data.videos[]
transcript_text=true affects the shape of each returned transcript (string vs segments) in both response types.Single-video response (default)
All-videos response (all_videos=true)
Error Responses
400 can include (per OpenAPI): missing_parameter, invalid_parameter, no_videos_found, unsupported_platform.Authorizations
API key authentication. Include your VidNavigator API key in the X-API-Key header.
Body
URL of the video to transcribe. For Instagram carousel posts, append ?img_index=N to select a specific video.
"https://www.instagram.com/reel/C86ZvEaqRmo/"
When true, returns the transcript as a single plain-text string instead of an array of segments.
For carousel posts only. When true, transcribes ALL videos in the post and returns them in an array. Ignored for non-carousel URLs (reels, TikTok, etc.).
When true, the response includes a usage block listing every meter charged during this request, the total credits deducted, and the user's remaining balance.
Response
Video transcribed successfully. Response format depends on all_videos parameter.
- Option 1
- Option 2
Single video response (default)
success Per-call usage disclosure. Returned only when the caller passes include_usage=true in the request body. Lists every meter that fired during this request and the credits actually deducted. Multiple charges of the same meter inside one request are consolidated into a single entry (their quantities and credits are summed). When a charge was waived through a cache-hit sponsorship (e.g. NGO), it carries waived: true + credits_saved, and a top-level waived.credits_saved summary appears.
For endpoints that involve LLM analysis (/extract/video, /extract/file, /analyze/video, /analyze/file, /youtube/search), the consolidated analysis_request charge entry carries a nested tokens object reporting the LLM input/output token tally for the request.

