AI transcription
Most YouTube videos have a caption track to read. Short-form video and podcasts usually do not. When there are no captions, the audio is transcribed instead — asynchronously, because it takes real time.
1. A fetch with no captions tells you so
A transcript request for a source with no caption track fails with a reason code, and the failure carries an ai_fallback block saying whether transcription could serve it instead. Failed requests are not charged.
When available is false, an unavailable_reason says why — the input is not something we can transcribe, for instance — and retrying will not help.
2. Ask for transcription
Repeat the request with ai_fallback: true. This skips the caption lookup entirely and goes straight to the audio.
You get 202 Accepted with a job to poll, not a transcript. Nothing is charged at this point — the credit is taken when the transcript is delivered.
ai_fallback is single-video only. Sending it to /channel, /playlist or /search returns invalid_request.3. Poll the job
Poll poll_url until status is no longer processing. Note that a still-running job returns 200, not 202 — branch on status, never on the HTTP code.
Jobs are scoped to the key that created them: polling someone else's job id returns 404, not the transcript.
Webhook instead of polling
Pass callback_url (https only) with the transcription request and the finished transcript is POSTed to it, so you can skip polling entirely.
ai_fallback flag is for when you want to skip the caption attempt — because you already know it will fail, or because you want the audio transcribed rather than the uploader's captions.