Documentation
All endpoints require an API key via Authorization: Bearer ytt_sk_... header unless noted otherwise.
/api/transcriptsTranscribe a YouTube video. Returns the transcript immediately for caption-only, or 202 with a job ID for Whisper/Gemini jobs.
Request body
{ "url": "https://youtube.com/watch?v=...", "lang": "en" }Query params
?format=text — returns plain text instead of JSON
Responses
200/201Transcript returned (sync)202Job queued (async, poll for result)401Missing or invalid auth402Quota exceeded or Whisper required (upgrade)429YouTube rate limit/api/transcriptsList your transcripts. Supports search via ?q= parameter.
Query params
?q=search+term
Responses
200Array of transcript summaries401Missing or invalid auth/api/transcripts/:idGet a single transcript by ID. Use for polling async jobs.
Responses
200Transcript (status: done) or job status (status: processing)401Missing or invalid auth404Not found/api/healthHealth check. No auth required.
Responses
200{ "status": "ok" }