# transcribed.dev > Transcribe any YouTube video — even without captions. Search your library, send transcripts to an LLM, or pull them via API. ## API Base URL: https://transcribed.dev Auth: Bearer token via `Authorization` header. Keys start with `ytt_sk_`. ### Transcribe a Video (async) POST /api/transcripts - Body: `{"url": "YOUTUBE_URL"}` - Returns 202 with `{"id", "videoId", "status": "processing"}` - Poll GET /api/transcripts/:id every 2-3 seconds until `status` is `"done"` ### Get Transcript GET /api/transcripts/:id - Returns JSON with title, author, videoUrl, transcript (JSON segments), source, status - Append `?format=text` for plain text (recommended for LLM input) ### List Transcripts GET /api/transcripts - Optional: `?q=SEARCH_TERM` ### Delete Transcript DELETE /api/transcripts/:id ## Error Codes - 202: Processing — poll until done - 400: Invalid or unsupported URL - 401: Missing or invalid API key - 402: Quota exceeded — response includes `upgradeUrl` - 404: Video not found or unavailable - 429: Rate limited — wait 30-60s ## Notes - Submitting the same URL twice returns the cached transcript (no re-processing, no quota charge) - `source` is `"youtube_captions"` or `"whisper"` - Supported formats: youtube.com/watch?v=, youtu.be/, youtube.com/shorts/, youtube.com/embed/ - Free tier: 25 transcripts/month. Pro ($9/mo): 1,000/month. Power ($19/mo): 5,000/month. ## Docs - [API docs](https://transcribed.dev/docs/api) - [Getting started](https://transcribed.dev/docs/getting-started) - [MCP server](https://transcribed.dev/docs/mcp) - [Developers](https://transcribed.dev/developers) - [Pricing](https://transcribed.dev/pricing)