REST API
Fast Transcriber API
Create transcription jobs for public links or uploaded media, then retrieve structured text and timestamped segments.
Media uploads go directly to object storage. Large files do not pass through a Next.js request body.
Base URL
https://fast-transcriber.com/api/v1The machine-readable OpenAPI 3.1 document is available at /api/v1/openapi.
Authentication
Send an active Fast Transcriber API key in the bearer header. The full secret is shown only once when it is created.
Authorization: Bearer ft_live_replace_meEndpoints
| Method | Path | Purpose |
|---|---|---|
| POST | /uploads | Prepare a direct upload |
| POST | /uploads/multipart | Complete a multipart upload |
| DELETE | /uploads/multipart | Abort a multipart upload |
| POST | /transcriptions | Queue a URL or uploaded file |
| GET | /transcriptions | List recent jobs |
| GET | /transcriptions/{id} | Retrieve status and result |
Transcribe a URL
Provide exactly one source_url. Supported public links use the same link-resolution pipeline as the browser feature.
curl --request POST https://fast-transcriber.com/api/v1/transcriptions \
--header "Authorization: Bearer $FAST_TRANSCRIBER_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"source_url": "https://www.youtube.com/watch?v=example",
"speaker_diarization": false
}'A successful request returns 202 Accepted and a Location header containing the polling URL.
Upload a file
First request a presigned target using the exact filename, byte size, and MIME type.
curl --request POST https://fast-transcriber.com/api/v1/uploads \
--header "Authorization: Bearer $FAST_TRANSCRIBER_API_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"filename": "interview.mp3",
"content_type": "audio/mpeg",
"size": 1234567
}'- Upload the bytes to the returned single or multipart target.
- Keep the returned storage key and storage provider.
- Queue a transcription with that upload reference.
The server verifies object ownership, stored size, and media type before queueing. Keys created for another account are rejected.
Results
Poll the job URL until status is completed or failed. Completed jobs include text and timestamped segments.
{
"data": {
"id": "95c3fdd8-...",
"filename": "interview.mp3",
"status": "completed",
"created_at": "2026-08-24T16:30:00.000Z",
"duration_seconds": 1842,
"text": "Completed transcript text...",
"segments": []
}
}Errors
Every API error uses a stable envelope with a code and message.
{
"error": {
"code": "daily_limit_reached",
"message": "You've reached your daily upload limit."
}
}| 400 | Invalid request or source |
|---|---|
| 401 | Missing, invalid, or revoked API key |
| 403 | Feature unavailable on the current plan |
| 413 | File exceeds the account limit |
| 429 | Daily usage limit reached |
| 503 | Processing backend unavailable |
Limits
API jobs share account plan limits with browser jobs. List requests accept a limit from 1 to 100 and default to 25. Speaker diarization requires Pro.