Skip to content

API Documentation

Captain Transcribe API v1 -- transcribe audio and video files programmatically.

API access is available on the Pro plan. Generate your API key in Settings.

Authentication

All API requests must include your API key in the Authorization header as a Bearer token.

curl https://captaintranscribe.com/api/v1/transcriptions \
  -H "Authorization: Bearer ct_your_api_key_here"

Your API key starts with ct_. Keep it secret -- do not expose it in client-side code.

POST /api/v1/transcribe

Transcribe an audio or video file. This is a synchronous endpoint -- the response is returned once transcription completes.

Request

Send a multipart/form-data request with the following fields:

FieldTypeRequiredDescription
fileFileYesAudio/video file (mp3, wav, mp4, etc.)
languagestringNoLanguage code (e.g. "fr", "en"). Default: "auto"
speakerDetectionstringNoSet to "true" to enable speaker detection

Example

curl -X POST https://captaintranscribe.com/api/v1/transcribe \
  -H "Authorization: Bearer ct_your_api_key_here" \
  -F "[email protected]" \
  -F "language=fr" \
  -F "speakerDetection=true"

Response

{
  "id": "abc123",
  "text": "Full transcription text...",
  "segments": [
    { "start": 0.0, "end": 3.5, "text": "Hello world" }
  ],
  "words": [
    { "start": 0.0, "end": 0.5, "word": "Hello" },
    { "start": 0.6, "end": 1.0, "word": "world" }
  ],
  "language": "en",
  "duration": 125.4,
  "speakers": [
    {
      "label": "A",
      "segments": [{ "start": 0.0, "end": 3.5, "text": "Hello world" }]
    }
  ]
}

The speakers field is only present when speaker detection is enabled. The X-RateLimit-Remaining header indicates remaining quota minutes.

GET /api/v1/transcriptions

List your transcriptions with pagination.

Query Parameters

ParamDefaultDescription
limit20Number of results (max 100)
offset0Number of results to skip

Example

curl https://captaintranscribe.com/api/v1/transcriptions?limit=10&offset=0 \
  -H "Authorization: Bearer ct_your_api_key_here"

Response

{
  "transcriptions": [
    {
      "id": "abc123",
      "fileName": "interview.mp3",
      "language": "fr",
      "duration": 125.4,
      "createdAt": "2026-04-01T10:30:00.000Z"
    }
  ],
  "limit": 10,
  "offset": 0,
  "count": 1
}

GET /api/v1/transcription/:id

Get the full transcription result by ID.

Example

curl https://captaintranscribe.com/api/v1/transcription/abc123 \
  -H "Authorization: Bearer ct_your_api_key_here"

Response

{
  "id": "abc123",
  "text": "Full transcription text...",
  "segments": [...],
  "words": [...],
  "language": "fr",
  "duration": 125.4
}

Rate Limits

LimitValue
Concurrent requests3
Requests per hour10
Monthly quota (Pro plan)2400 minutes (40 hours)
Max file size100 MB (larger soon)

The X-RateLimit-Remaining response header shows your remaining quota minutes after each transcription.

Error Handling

All errors return a JSON object with an error field.

StatusMeaning
400Bad request (missing file, invalid format)
401Invalid or missing API key
403Quota exceeded or plan not eligible
404Transcription not found
429Rate limit exceeded
500Server error

Example error response

{
  "error": "Monthly quota exceeded"
}