TranscribeAI APIbeta
Transcribe video links and files, create summaries and export subtitles from your own tools.
Quick start
The TranscribeAI API is included in the Unlimited plan. Create a key from the API button in the site header (when signed in), then send it in the Authorization header.
curl https://transcribeai.site/api/me \
-H "Authorization: Bearer tai_YOUR_KEY"Authentication and limits
- Header:
Authorization: Bearer tai_YOUR_KEY. Keys start withtai_; keep them secret and revoke them from the site if exposed. - Rate limit: 60 requests per minute per key. Over the limit you get
429with aRetry-Afterheader. - Usage counts against your plan minutes (Unlimited: fair use of 80 hours per month). Files up to 60 minutes; uploads up to 1 GB.
- Up to 5 active keys per account. A key stops working if the account is no longer on Unlimited.
Transcribe a video link
POST /api/v1/transcribe. Public TikTok, Instagram, Facebook and X links are supported. YouTube links are not supported.
curl -X POST https://transcribeai.site/api/v1/transcribe \
-H "Authorization: Bearer tai_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.tiktok.com/@user/video/123", "language": "fr"}'Response (shortened):
{
"transcript": "Bonjour à tous...",
"detected_language": "english",
"output_language": "fr",
"translated": true,
"platform": "tiktok",
"duration_seconds": 42.5,
"segments": [{"start": 0.0, "end": 3.2, "text": "Bonjour à tous"}],
"minutes_used_this_period": 1.2,
"minutes_limit": 4800
}language is the output language. auto keeps the original spoken language. A code translates the transcript and its segments: en, fr, es, ar, de, it, pt, nl, ru, zh, ja, ko, tr, hi, pl. The response includes detected_language (spoken), output_language, translated (true/false) and, if something went wrong, translation_error.
Transcribe an uploaded file
POST /api/v1/transcribe-file. Send the file as the raw request body. Accepted: MP3, WAV, M4A, AAC, OGG, OPUS, FLAC, WMA, MP4, MOV, MKV, WEBM, AVI, M4V, 3GP. The language query parameter works as above (output language, auto = no translation).
curl -X POST "https://transcribeai.site/api/v1/transcribe-file?language=auto&filename=meeting.mp3" \
-H "Authorization: Bearer tai_YOUR_KEY" \
-H "Content-Type: application/octet-stream" \
--data-binary @meeting.mp3AI summary
POST /api/v1/summary
curl -X POST https://transcribeai.site/api/v1/summary \
-H "Authorization: Bearer tai_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"transcript": "Full transcript text...", "language": "auto"}'Response: {"summary": "..."}
Export subtitles and documents
POST /api/v1/export/{format} where format is txt, docx, pdf, srt or vtt. Pass the transcript and the segments returned by the transcription call.
curl -X POST https://transcribeai.site/api/v1/export/srt \
-H "Authorization: Bearer tai_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"transcript": "Hello everyone", "segments": [{"start": 0.0, "end": 3.2, "text": "Hello everyone"}]}' \
-o subtitles.srtUse it in n8n or Python
n8n: add an HTTP Request node, method POST, URL https://transcribeai.site/api/v1/transcribe, header Authorization = Bearer tai_YOUR_KEY, body type JSON.
import requests
r = requests.post(
"https://transcribeai.site/api/v1/transcribe",
headers={"Authorization": "Bearer tai_YOUR_KEY"},
json={"url": "https://www.tiktok.com/@user/video/123", "language": "auto"},
timeout=300,
)
print(r.json()["transcript"])Errors
| Code | Meaning |
|---|---|
| 400 | Invalid request, unsupported file type, or the link could not be downloaded |
| 401 | Missing, invalid or revoked API key |
| 402 | Monthly minutes used up |
| 403 | The account is not on the Unlimited plan |
| 413 | File too large |
| 429 | Rate limit reached, retry after the delay in Retry-After |
| 502 | The transcription service returned an error, try again |
Errors are JSON: {"detail": "message"}
Get your API key
Sign in, open the API button in the header and create a key. API access is part of the Unlimited plan.
See the Unlimited plan