{"service":"yt-transcript-api","auth":"Bearer token required on /v1/*","endpoints":{"GET /v1/transcript":{"params":{"url":"YouTube URL (watch/youtu.be/shorts/embed/live)","videoId":"11-char YouTube ID (alternative to url)","lang":"ISO 639-1 preference, optional","text":"true|false — default true (plain text); false returns timestamped chunks","mode":"native|auto|generate — default auto (native captions, AI fallback)","chunkSize":"50-10000 chars per chunk, only when text=false","nocache":"1 to bypass the KV cache"},"responses":{"200":"transcript (X-Cache: HIT|MISS)","202":"{ jobId, poll } for async processing"}},"GET /v1/job/:jobId":"poll async jobs — status: queued|active|completed|failed","GET /health":"liveness"}}