Developer documentation

REST API and Model Context Protocol

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

text
https://fast-transcriber.com/api/v1

The 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.

http
Authorization: Bearer ft_live_replace_me

Endpoints

MethodPathPurpose
POST/uploadsPrepare a direct upload
POST/uploads/multipartComplete a multipart upload
DELETE/uploads/multipartAbort a multipart upload
POST/transcriptionsQueue a URL or uploaded file
GET/transcriptionsList 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.

bash
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.

bash
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
  }'
  1. Upload the bytes to the returned single or multipart target.
  2. Keep the returned storage key and storage provider.
  3. 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.

json
{
  "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.

json
{
  "error": {
    "code": "daily_limit_reached",
    "message": "You've reached your daily upload limit."
  }
}
400Invalid request or source
401Missing, invalid, or revoked API key
403Feature unavailable on the current plan
413File exceeds the account limit
429Daily usage limit reached
503Processing 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.