{"service":"yt-transcript-api","auth":"transcripts open (rate-limited); summaries and process require 'Authorization: Bearer <API key>'","cache":"KV edge cache, 30-day TTL (X-Cache: HIT|MISS); ?nocache=1 to bypass","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 /v1/patterns":"list available Fabric patterns (Bearer)","POST /v1/summarize":{"auth":"Bearer","body":{"url":"YouTube URL (or videoId)","pattern":"summarize|extract_wisdom|extract_business_ideas|extract_insights|analyze_claims","lang":"ISO 639-1 preference, optional","nocache":"true to bypass the summary cache"},"params":{"stream":"1 for SSE (data: {text} deltas, then [DONE])"},"responses":{"200":"{ videoId, pattern, model, strategy, summary } (X-Summary-Strategy: single|map-reduce; X-Summary-Truncated: 1 when the output hit the token cap and was not cached)","202":"transcript still processing — poll /v1/job/:jobId, then retry"}},"POST /v1/process":{"auth":"Bearer","body":{"url":"YouTube URL (or videoId)","promptUrl":"https URL on prompt.promptbrowser.cc (default https://prompt.promptbrowser.cc)","lang":"ISO 639-1 preference, optional","nocache":"true to bypass the process cache"},"params":{"stream":"1 for SSE (data: {text} deltas, then [DONE])"},"responses":{"200":"{ videoId, model: 'openrouter/free', strategy, output, promptUrl }","202":"transcript still processing — poll /v1/job/:jobId, then retry"}},"GET /health":"liveness"}}