GitHubLog in
Get your first transcript

Get your first transcript

Create a key, send one POST with a video URL, and read the transcript from the JSON response. No YouTube Data API key, quota or OAuth.

  1. Create an API key

    Sign up with no card required, then create a key under API keys. Keep it in a server-side environment variable so it stays out of browser code and source control.

    Go to API keys
    Terminal
    export TRANSCRIPTFETCH_API_KEY=tf_live_YOUR_KEY
  2. Choose an endpoint

    Each endpoint does one job, with the same bearer key and the same response envelope. Pick one and the request and response below follow it.

    Browse all endpoints
  3. Make a request

    POST a YouTube, TikTok or Instagram URL, a direct media file URL, or a YouTube video ID as video. It is the only required field.

    AI Fallback Transcription is on by default. With mode: "auto", a video with no captions is transcribed at 1 credit per started 5 minutes of audio, minimum 1, charged on delivery. Send mode: "captions" to never pay for audio.

    POST/api/v2/transcripts/video
    curl https://transcriptfetch.com/api/v2/transcripts/video \
      -H "Authorization: Bearer $TRANSCRIPTFETCH_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"video":"dQw4w9WgXcQ"}'
  4. Read the response

    A 200 carries the transcript in data. The fields you will use most:

    data.segments
    Timestamped cues, each with start, duration and text
    data.source
    captions, or audio when AI Fallback Transcription ran
    usage
    Credits spent on this call and your remaining balance
    request_id
    Include it when you contact support

    Send "timestamps": false to get one joined data.text string instead.

    200 OK
    {
      "ok": true,
      "request_id": "req_…",
      "data": {
        "kind": "transcript",
        "video_id": "dQw4w9WgXcQ",
        "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
        "platform": "youtube",
        "title": "Example video",
        "channel": "Example Channel",
        "duration": 212,
        "language": "en",
        "thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg",
        "source": "captions",
        "segments": [
          { "start": 0, "duration": 3.5,
            "text": "We're no strangers to love" }
        ]
      },
      "usage": {
        "credits_spent": 1,
        "balance": 49,
        "bytes": 14233
      }
    }
  5. Handle long videos

    Videos without captions go to AI Fallback Transcription. Under 20 minutes, the request waits up to 45 seconds and returns a 200. Longer videos, or a transcription still running after the wait, return 202 with a job. Collect it one of two ways:

    Poll the job

    Call the poll_url from the 202 until the status is completed or failed.

    GET /api/v2/transcripts/jobs/{jobId}

    Receive a callback

    Send a public https callback_url and the finished transcript is POSTed to it. The job stays pollable either way.

    "callback_url": "https://…"

Next steps