Video File Transcript API
Whisper transcription of an uploaded file — 1 credit/min; durationSeconds + creditsCharged in the response.
POST request to /v1/video/transcript that responds with clean JSON and costs 1 credit/min. Upload via multipart form (see the cURL sample). Start with 100 free credits — no credit card.What is the Video File Transcript API?
POST multipart form field `file` (not a query string). Returns transcript, transcriptSegments[{text,start,duration,timestamp}], wordCount, segments, language, durationSeconds (alias duration), creditsCharged, and noSpeech. Optional form fields: language (ISO-639-1 hint), translate=true (English), timestampGranularity=segment|word. Limits: 200MB / 60 minutes. No speech → empty transcript + noSpeech=true (still billed for duration). Billed 1 credit per minute of audio (rounded up, min 1) — verify with creditsCharged.
What you get
- Full transcript text with start/end timestamps when available
- Auto-detected language and segment count
- AI audio transcription fallback when no captions exist
- Clean JSON ready for search, subtitles, or AI pipelines
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl -X POST "https://api.captapi.com/v1/video/transcript" \
-H "Authorization: Bearer capt_live_..." \
-F "file=@video.mp4"
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"filename": "sample.mp4",
"transcript": "Hey everyone, welcome back to the channel. Today we're breaking down structured data APIs.",
"transcriptSegments": [
{
"text": "Hey everyone, welcome back to the channel.",
"start": 0,
"duration": 4.12,
"end": 4.12,
"timestamp": "00:00"
},
{
"text": "Today we're breaking down structured data APIs.",
"start": 4.12,
"duration": 4.28,
"end": 8.4,
"timestamp": "00:04"
}
],
"wordCount": 14,
"segments": 2,
"language": "english",
"durationSeconds": 8.4,
"duration": 8.4,
"creditsCharged": 1,
"noSpeech": false
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success, cached, creditsUsed, and a data object with the following fields:
Top-level fields
filenameFilename. Example: "sample.mp4".transcriptComplete text transcript (file-upload endpoints). Timed caption/ASR endpoints use text instead.wordCountWord count of the returned transcript (matches the text — not a truncated preview).segmentsNumber of timed segments in transcriptSegments.languageDetected (or hinted) speech language from Whisper.durationSecondsAudio duration in seconds from Whisper — basis for per-minute billing.durationAlias of durationSeconds (same number) for bill verification.creditsChargedCredits billed for this call: ceil(durationSeconds/60), minimum 1.noSpeechtrue when Whisper found no trustworthy speech (empty transcript; still billed for duration).
Transcript segments
Each item in transcriptSegments contains:
textText content.startStart time in seconds.durationAlias of durationSeconds (same number) for bill verification.endEnd time in seconds.timestampHuman-readable timestamp (MM:SS format).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| file | file | Yes | Video or audio file (multipart form field — use -F file=@path, not a query string). Max 200MB / 60 minutes. |
| language | string | No | ISO-639-1 Whisper language hint, e.g. "en" or "tr". Omit to auto-detect. |
| translate | boolean | No | When true, translate speech to English (Whisper translations API). Default false. |
| timestampGranularity | string | No | segment (default) or word — word-level timings when Whisper exposes them. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 1 credit/min. Upload with multipart form field file (see cURL).
How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/video/transcriptand parse the JSON response.
Use cases
Bring-your-own media
Transcribe uploaded podcasts or meeting recordings without a social URL.
Bill verification
Read durationSeconds and creditsCharged to confirm the per-minute invoice line.
Word timings
Pass timestampGranularity=word when you need karaoke-style captions.
Frequently asked questions
What does the Video File Transcript API do?+
The Video File Transcript API lets you extract the full, timestamped transcript from a public Utilities uploaded video or audio file using one POST request to /v1/video/transcript. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Video File Transcript API cost?+
Billing is 1 credit per minute of audio (rounded up, minimum 1). Failed or empty results are never charged.
Do I need a Utilities API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Is the Video File Transcript API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON. Upload via multipart form field file (POST) — see the cURL sample. Use durationSeconds / creditsCharged to verify per-minute billing.
More Utilities APIs
Ready to use the Video File Transcript API?
Sign up, grab your key, and make your first call in 60 seconds.