The Transcript24 API lets you submit a public social media URL and receive the transcript in one request.
The API automatically decides whether to:
mode: "raw")mode: "asr")The response can also include video metadata such as platform, post ID, duration, views, and likes.
https://api.transcript24.com
Send your API key in the Authorization header.
Authorization: Bearer <API_KEY>
POST /transcribe
Content-Type: application/json
Authorization: Bearer <API_KEY>
{
"url": "https://www.youtube.com/watch?v=..."
}
Only url is required.
Optional fields:
{
"url": "https://www.youtube.com/watch?v=...",
"prefer": "auto"
}
Supported prefer values:
auto (default)asr{
"ok": true,
"mode": "raw",
"taskCredits": 1,
"history": false,
"meta": {
"platform": "ytb",
"id": "abc123",
"title": "Video title",
"desc": "Short description",
"duration": 125,
"views": 12345,
"likes": 456,
"image": "https://..."
},
"caption": [
{
"start_time": "00:00:00.000",
"end_time": "00:00:03.200",
"text": "..."
}
]
}
Field meanings:
mode
raw: existing platform captions were usedasr: AI transcription was usedtaskCredits
history is truehistory
true when this API key's user recently requested the same transcript, the transcript result was available to reuse, and this request was not charged againfalse for first-time requests, requests charged from a shared cached transcript, or requests that must fetch or transcribe the result againmeta
{
"ok": true,
"mode": "asr",
"taskCredits": 3,
"history": false,
"meta": {
"platform": "tik",
"id": "7345678901234567890",
"title": "Video title",
"duration": 165,
"views": 99887,
"likes": 3201
},
"caption": [
{
"start_time": "00:00:00.000",
"end_time": "00:00:03.200",
"text": "..."
}
]
}
const res = await fetch("https://api.transcript24.com/transcribe", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer <API_KEY>",
},
body: JSON.stringify({
url: "https://www.youtube.com/watch?v=...",
}),
});
const data = await res.json();
console.log(data.mode);
console.log(data.meta);
console.log(data.caption);
import requests
res = requests.post(
"https://api.transcript24.com/transcribe",
headers={
"Authorization": "Bearer <API_KEY>",
"Content-Type": "application/json",
},
json={"url": "https://www.youtube.com/watch?v=..."},
)
data = res.json()
print(data["mode"])
print(data["meta"])
print(data["caption"])
{
"error": "Invalid API key"
}
Common error messages:
Invalid API keyMissing urlFailed to fetch video infoFailed to fetch caption dataFailed to transcribeInsufficient credits. Please buy more credits.Billing follows the same logic as the website:
raw mode: 1 credit per videoasr mode: 1 credit per minute, rounded up with ceil(duration_seconds / 60)Examples for asr mode:
00:00:59 -> 1 credit00:01:10 -> 2 credits00:02:00 -> 2 creditsNotes:
taskCreditshistory: true means this request reused a recent transcript for the same API key user without charging again; shared cached transcripts for other users can still be chargedIf you have questions, please contact support with the URL you tested and the timestamp of your request.