Transcriptions V2

NOUVEAU

V2 is the streamlined, user-owned transcript model. It prioritizes fast cache hits, consistent responses, and no surprise translations unless you request a language.

POSThttps://www.youtubetranscript.dev/api/v2/transcribe
POSThttps://www.youtubetranscript.dev/api/v2/batch
GEThttps://www.youtubetranscript.dev/api/v2/jobs/{job_id}
GEThttps://www.youtubetranscript.dev/api/v2/batch/{batch_id}

Spécification OpenAPI (V2)

V2 OpenAPI 3.0 specification for tooling, SDK generation, and testing.

Flux V2 (Simple et Prévisible)

1. Check your owned transcripts (0 credits).
2. If not owned, fetch captions (1 credit).
3. If you requested a language and captions are different, return ASR confirmation (or fall back to ASR if allowed).
4. If captions fail and allow_asr=true, process with ASR (async).
5. If source="asr", always process with ASR (async).

En-têtes

Authorizationrequis

Bearer API token generated in your dashboard.

Content-Typerequis

Must be set to application/json.

Champs de requête

videorequis

YouTube URL or 11-character video ID (single video endpoint).

video_idsLot

Array of IDs or URLs (batch endpoint). Limit: up to 100 videos per request.

languageoptionnel

ISO 639-1 language code (e.g., "es", "fr"). If omitted, V2 returns the best available captions without translation.

sourceoptionnel

auto (default), manual, or asr.
auto uses captions (manual + auto). If allow_asr=true, it will fall back to ASR when captions fail.manual requires manual captions only.asr forces audio transcription (async).

allow_asroptionnel

When true and source="auto", V2 will automatically fall back to ASR if captions fail (no captions, language mismatch, or transient fetch errors).Required with webhook_url for batch requests.

formatoptionnel

Control extra output:timestamp,paragraphs,words.

webhook_urloptionnel

When provided, V2 responds with status: "processing" and delivers results to your webhook once finished.Required for source="asr" and batch requests with allow_asr=true.

Comportement du Webhook

1. Requests with webhook_url return immediately with status: "processing".
2. Batch requests return cached results immediately and queue only the missing items.
3. Your webhook receives the final results when processing completes.

Codes d'erreur

Statut HTTPCode d'erreurDescription
400invalid_requestInvalid JSON or missing required fields
400invalid_parameterInvalid video ID or parameter value
401invalid_api_keyMissing or invalid API key
402payment_requiredInsufficient credits for requested operation
404no_captionsNo captions available and ASR not used
429rate_limit_exceededToo many requests, check Retry-After
500internal_errorServer error, retry with backoff

Coûts de crédit

MéthodeCoûtVitesseRemarques
Native Captions1 credit5-10 secondsBest quality, exact language
Translation1 credit per 2,500 chars5-10 secondsOnly when language is requested
ASR (Audio)1 credit per 90 seconds2-20 minutesAsync via webhook

Support et contact

POST /api/v2/transcribe
curl -X POST https://www.youtubetranscript.dev/api/v2/transcribe \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video": "dQw4w9WgXcQ",
    "language": "en",
    "format": { "timestamp": true, "paragraphs": true }
  }'
Response (200)
{
  "request_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "completed",
  "data": {
    "video_id": "dQw4w9WgXcQ",
    "video_title": "Example Title",
    "transcript": {
      "text": "Welcome to this tutorial...",
      "language": "en",
      "source": "manual",
      "segments": [
        { "text": "Welcome to this tutorial.", "start": 0, "end": 2500 }
      ]
    }
  },
  "credits_used": 1
}
POST /api/v2/batch
curl -X POST https://www.youtubetranscript.dev/api/v2/batch \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_ids": ["dQw4w9WgXcQ", "jNQXAC9IVRw"],
    "source": "auto",
    "allow_asr": true,
    "webhook_url": "https://your-domain.com/webhook",
    "format": { "timestamp": true }
  }'
Response (202)
{
  "batch_id": "7b9b86a4-7b14-4b5a-8b1b-8b7de7b52003",
  "status": "processing",
  "results": [
    {
      "request_id": "req-1",
      "status": "completed",
      "data": {
        "video_id": "dQw4w9WgXcQ",
        "transcript": {
          "text": "Welcome to this tutorial...",
          "language": "en",
          "source": "manual"
        },
        "video_title": "Example Title"
      },
      "credits_used": 0
    },
    {
      "request_id": "req-2",
      "status": "processing",
      "data": {
        "video_id": "jNQXAC9IVRw",
        "transcript": {
          "text": "",
          "language": "en",
          "source": "asr"
        }
      },
      "credits_used": 0,
      "job_id": "job_123"
    }
  ],
  "summary": {
    "total": 2,
    "succeeded": 1,
    "failed": 0,
    "processing": 1
  },
  "credits_used": 1,
  "poll_url": "https://www.youtubetranscript.dev/api/v2/batch/7b9b86a4-7b14-4b5a-8b1b-8b7de7b52003"
}
GET /api/v2/jobs/{job_id}
curl -X GET https://www.youtubetranscript.dev/api/v2/jobs/JOB_ID \
  -H "Authorization: Bearer YOUR_API_KEY"
Response (202 Processing)
{
  "job_id": "2c7c2d18-3a8f-4f3d-9d1b-7a1c3f5d2c90",
  "status": "processing",
  "data": {
    "video_id": "dQw4w9WgXcQ",
    "transcript": {
      "text": "",
      "language": "en",
      "source": "asr"
    },
    "video_title": "Example Title"
  },
  "created_at": "2026-02-03T23:40:00Z",
  "started_at": "2026-02-03T23:40:12Z"
}
Response (200 Completed)
{
  "job_id": "2c7c2d18-3a8f-4f3d-9d1b-7a1c3f5d2c90",
  "status": "completed",
  "data": {
    "video_id": "dQw4w9WgXcQ",
    "transcript": {
      "text": "Welcome to this tutorial...",
      "language": "en",
      "source": "manual",
      "segments": [
        { "text": "Welcome to this tutorial.", "start": 0, "end": 2500 }
      ]
    },
    "video_title": "Example Title"
  },
  "created_at": "2026-02-03T23:40:00Z",
  "started_at": "2026-02-03T23:40:12Z",
  "completed_at": "2026-02-03T23:40:20Z"
}
GET /api/v2/batch/{batch_id}
curl -X GET https://www.youtubetranscript.dev/api/v2/batch/BATCH_ID \
  -H "Authorization: Bearer YOUR_API_KEY"
Response (202 Processing)
{
  "batch_id": "7b9b86a4-7b14-4b5a-8b1b-8b7de7b52003",
  "status": "processing",
  "results": [
    { "video_id": "dQw4w9WgXcQ", "status": "completed" },
    { "video_id": "jNQXAC9IVRw", "status": "processing" }
  ],
  "summary": {
    "total": 2,
    "succeeded": 1,
    "failed": 0,
    "processing": 1
  },
  "credits_used": 1,
  "poll_url": "https://www.youtubetranscript.dev/api/v2/batch/7b9b86a4-7b14-4b5a-8b1b-8b7de7b52003",
  "webhook_delivered": false,
  "webhook_failed": false,
  "webhook_attempts": 0,
  "created_at": "2026-02-03T23:41:00Z",
  "started_at": "2026-02-03T23:41:05Z",
  "completed_at": null
}
Response (200 Completed)
{
  "batch_id": "7b9b86a4-7b14-4b5a-8b1b-8b7de7b52003",
  "status": "completed",
  "results": [
    { "video_id": "dQw4w9WgXcQ", "status": "completed" },
    { "video_id": "jNQXAC9IVRw", "status": "completed" }
  ],
  "summary": {
    "total": 2,
    "succeeded": 2,
    "failed": 0,
    "processing": 0
  },
  "credits_used": 2,
  "poll_url": "https://www.youtubetranscript.dev/api/v2/batch/7b9b86a4-7b14-4b5a-8b1b-8b7de7b52003",
  "webhook_delivered": true,
  "webhook_failed": false,
  "webhook_attempts": 1,
  "created_at": "2026-02-03T23:41:00Z",
  "started_at": "2026-02-03T23:41:05Z",
  "completed_at": "2026-02-03T23:41:30Z"
}
    Documentation API - API de Transcription YouTube