API Reference

Transcript API

Get video transcripts from YouTube, TikTok, Instagram, and Facebook with a single API call.

Quick Start

1
Get your API key Create one in your dashboard
2
Make a request Send a POST with the video URL
3
Get the transcript Receive JSON with the full text
Example Request
curl -X POST https://api.transcriptmagic.com/api/youtube/transcript \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'

API Key

Include your API key in the Authorization header of every request. Each call uses 1 credit.

Header
Authorization: Bearer sk_live_your_api_key_here

Platforms

All endpoints use POST with a JSON body. Base URL: https://api.transcriptmagic.com

YouTube
POST /api/youtube/transcript
cURL
curl -X POST https://api.transcriptmagic.com/api/youtube/transcript \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
Python
import requests

response = requests.post(
    "https://api.transcriptmagic.com/api/youtube/transcript",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
)

data = response.json()
print(data["transcript"])
JavaScript
const response = await fetch("https://api.transcriptmagic.com/api/youtube/transcript", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }),
});

const data = await response.json();
console.log(data.transcript);
TikTok
POST /api/tiktok/transcript
cURL
curl -X POST https://api.transcriptmagic.com/api/tiktok/transcript \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.tiktok.com/@user/video/7123456789"}'
Python
import requests

response = requests.post(
    "https://api.transcriptmagic.com/api/tiktok/transcript",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"url": "https://www.tiktok.com/@user/video/7123456789"},
)

data = response.json()
print(data["transcript"])
JavaScript
const response = await fetch("https://api.transcriptmagic.com/api/tiktok/transcript", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://www.tiktok.com/@user/video/7123456789" }),
});

const data = await response.json();
console.log(data.transcript);
Instagram
POST /api/instagram/transcript
cURL
curl -X POST https://api.transcriptmagic.com/api/instagram/transcript \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.instagram.com/reel/ABC123/"}'
Python
import requests

response = requests.post(
    "https://api.transcriptmagic.com/api/instagram/transcript",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"url": "https://www.instagram.com/reel/ABC123/"},
)

data = response.json()
print(data["transcript"])
JavaScript
const response = await fetch("https://api.transcriptmagic.com/api/instagram/transcript", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://www.instagram.com/reel/ABC123/" }),
});

const data = await response.json();
console.log(data.transcript);
Facebook
POST /api/facebook/transcript
cURL
curl -X POST https://api.transcriptmagic.com/api/facebook/transcript \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.facebook.com/user/videos/123456789/"}'
Python
import requests

response = requests.post(
    "https://api.transcriptmagic.com/api/facebook/transcript",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"url": "https://www.facebook.com/user/videos/123456789/"},
)

data = response.json()
print(data["transcript"])
JavaScript
const response = await fetch("https://api.transcriptmagic.com/api/facebook/transcript", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://www.facebook.com/user/videos/123456789/" }),
});

const data = await response.json();
console.log(data.transcript);

Response Format

Successful responses return a JSON object with the transcript and your remaining credits.

200 OK
{
  "transcript": "Full transcript text here...",
  "segments": [
    {
      "text": "First segment",
      "startMs": "0",
      "endMs": "3500",
      "startTimeText": "0:00"
    }
  ],
  "title": "Video Title",
  "credits": 42
}
transcript Full transcript as a string, or array of segment objects
segments Timed segments with start/end timestamps (when available)
title Video title (when available)
credits Your remaining credit balance after this request

Error Codes

Errors return a JSON object with an error field describing the issue.

400
Bad Request Missing or invalid video URL
401
Unauthorized Invalid or missing API key
403
Forbidden No credits remaining
429
Rate Limited 60 requests/min exceeded
502
Bad Gateway Upstream service error

Rate Limits

60 requests per minute per API key. These headers are included in every response:

X-RateLimit-Remaining Requests left in the current window
X-RateLimit-Reset Unix timestamp when the window resets
Retry-After Seconds to wait (only on 429 responses)
Dashboard Pricing Get Extension