CuebaseYouTube transcript API

API reference

Cuebase is a YouTube transcript API. Base URL https://cuebaseapi.com. Send the API key as a bearer token. The local demo key is cb_live_demo_local_only_key_0001 when SEED_DEMO=1. See the YouTube transcript API guide and the YouTube transcript MCP guide.

Get one transcript

curl -G "https://cuebaseapi.com/api/v1/transcript" \
  --data-urlencode "video=https://www.youtube.com/watch?v=cbDemoVide1" \
  -d "format=json" \
  -H "Authorization: Bearer cb_live_demo_local_only_key_0001"

`video` accepts a watch URL, a youtu.be URL, a shorts URL, an embed URL, or an 11 character id. `url` and `id` are accepted aliases. `language` is a BCP 47 tag. `format` is json, txt, srt, or vtt. `timestamps=true` adds times to txt output. JSON always includes segments.

JSON responses include `creditsCharged`, `cacheHit`, and `balance`. Text responses put the same facts in X-Credits-Charged, X-Cache-Hit, and X-Credit-Balance.

Batch

curl -X POST "https://cuebaseapi.com/api/v1/transcripts" \
  -H "Authorization: Bearer $CUEBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"videos":["cbDemoVide1","https://youtu.be/cbDemoVide1"],"format":"txt"}'

Send 1 to 10 videos. The response is JSON. Each result has `ok`, and a success includes `transcript` plus `rendered` in the format you asked for. A batch is refused before any fetch when the balance is below the number of cache misses.

Video metadata

curl "https://cuebaseapi.com/api/v1/videos/cbDemoVide1" \
  -H "Authorization: Bearer $CUEBASE_API_KEY"

The metadata call fills the same cache as a transcript call. A later transcript for that video and language costs 0 credits.

Account

curl "https://cuebaseapi.com/api/v1/account" -H "Authorization: Bearer $CUEBASE_API_KEY"

MCP

The streamable HTTP endpoint is https://cuebaseapi.com/api/mcp. Responses use JSON. Send the same bearer token, and send `Accept: application/json, text/event-stream`.

{
  "mcpServers": {
    "cuebase": {
      "url": "https://cuebaseapi.com/api/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

Tools: `get_transcript`, `get_video`, `get_transcripts`, `get_account`. `get_account` is free.

Credits and limits

  • A cache miss that returns captions costs 1 credit.
  • A cache hit costs 0 credits.
  • not_found, no_captions, and upstream failures cost 0 credits and are not cached.
  • Manual caption tracks stay cached. Auto-generated tracks refresh after 30 days.
  • Each key can record 60 usage rows per minute. A batch writes one row per video.
  • The public paste box allows 5 successful transcripts per IP per UTC day.

Errors

{ "error": { "code": "insufficient_credits", "message": "..." } }
  • 400 invalid_request
  • 401 unauthorized
  • 402 insufficient_credits
  • 404 not_found, no_captions, age_restricted, or video_unavailable
  • 408 timeout, with Retry-After, when the fetch budget runs out
  • 429 rate_limited or daily_limit
  • 502 upstream, or 503 when every proxy attempt is blocked or the monthly proxy budget is nearly spent