API Reference
Transcript API
Get video transcripts from YouTube, TikTok, Instagram, and Facebook with a single API call.
Getting Started
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"}' Authentication
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 Endpoints
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
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 objectssegments Timed segments with start/end timestamps (when available)title Video title (when available)credits Your remaining credit balance after this requestErrors
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
Limits
Rate Limits
60 requests per minute per API key. These headers are included in every response:
X-RateLimit-Remaining Requests left in the current windowX-RateLimit-Reset Unix timestamp when the window resetsRetry-After Seconds to wait (only on 429 responses)