✦ Production Ready

FastCaption API

Integrate AI-powered transcription and subtitle generation into your apps, bots, and workflows. Get word-level timestamps, multi-language support, and TikTok-style ASS subtitles via a simple REST API.

Base URLhttps://fastcaption.app/api/v1
Fast Processing
10-min audio processed in ~30 seconds. GPU-accelerated WhisperX.
🌍
15+ Languages
Thai, English, Japanese, Korean, Chinese, and more with auto-detection.
💰
Pay Per Use
No subscriptions. Credits never expire. Start free with 5,000 credits.

🚀 Quick Start

Get up and running with the FastCaption API in under 2 minutes.

1
Get Your API Key
Go to Dashboard → API Keys and create a new key. Save it securely.
2
Send a Request
Upload audio via POST /api/v1/transcribe with your API key as Bearer token.
3
Get Results
Receive JSON with word-level timestamps, or generate ASS subtitles directly.
curl -X POST https://fastcaption.app/api/v1/transcribe \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -F "audio=@./test.mp3" \
  -F "language=th"

🔐 Authentication

All API requests require a valid API key sent as a Bearer token in the Authorization header.

🔑 Authorization Header

Include your API key in every request using the Authorization header:

Authorization: Bearer fc-YOUR_API_KEY

⚠️ Keep your API key secret. Do not expose it in client-side code or public repositories. If compromised, delete the key immediately from your Dashboard and create a new one.

📡 Endpoints

Two endpoints available — transcription (uses credits) and ASS generation (free).

POST/api/v1/transcribeUses Credits

Upload an audio or video file and receive a transcription with word-level timestamps. Supports both transcription (auto-detect speech) and alignment (match your script to audio). Credits are deducted based on audio duration. Failed jobs are automatically refunded.

Request Body (multipart/form-data)
ParameterTypeRequiredDescription
audioFileRequiredAudio or video file (MP3, WAV, M4A, MP4, etc.). Max 50MB.
languagestringOptionalLanguage code, e.g. "th", "en", "ja", "ko", "zh". Default: "th"
modestringOptional"transcribe" (default) or "align" — align requires scriptText
scriptTextstringOptionalYour own transcript text. Required when mode is "align"
timestampModestringOptional"chunk" (default) or "word" — word-level timestamps
assMaxCharsnumberOptionalMax characters per subtitle line. Default: 24
assModestringOptional"smart" (default), "pause", or "word" — subtitle splitting mode
assOrientationstringOptional"portrait" (default) or "landscape"
Code Examples
curl -X POST https://fastcaption.app/api/v1/transcribe \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -F "audio=@./my-audio.mp3" \
  -F "language=th" \
  -F "timestampMode=word"
Success Response (200)
{
  "success": true,
  "jobId": "cm3xyz...",
  "creditsUsed": 200,
  "balanceAfter": 4800,
  "result": {
    "text": "สวัสดีครับ ยินดีต้อนรับ...",
    "segments": [
      {
        "start": 0.0,
        "end": 2.45,
        "text": "สวัสดีครับ",
        "words": [
          { "word": "สวัสดี", "start": 0.0, "end": 1.2 },
          { "word": "ครับ", "start": 1.3, "end": 2.45 }
        ]
      }
    ],
    "language": "th"
  }
}
Error Response (402)
{
  "error": "Insufficient credits",
  "creditsNeeded": 500,
  "balance": 200
}
POST/api/v1/assFree — No Credits

Convert a transcription JSON (from the transcribe endpoint) into a TikTok-style ASS subtitle file. This endpoint is free — no credits are consumed. It runs CPU-only processing. Accepts either a JSON file upload (multipart) or a JSON body.

Request Body
ParameterTypeRequiredDescription
jsonFileFileRequired*JSON file from transcription result (multipart mode)
jsonobjectRequired*JSON body with segments (JSON mode)
assModestringOptional"smart" (default), "pause", or "word"
orientationstringOptional"portrait" (default) or "landscape"
maxCharsnumberOptionalMax characters per line. Default: 24
languagestringOptionalLanguage code. Default: "th"

* Either jsonFile (multipart upload) or json (JSON body) is required — not both.

Code Examples
curl -X POST https://fastcaption.app/api/v1/ass \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -F "jsonFile=@./result.json" \
  -F "assMode=smart" \
  -F "orientation=portrait" \
  -F "maxChars=24"
Success Response (200)
{
  "success": true,
  "ass": "[Script Info]\nTitle: FastCaption...",
  "captionCount": 42
}

⚠️ Error Codes

Standard HTTP status codes are used. All error responses include a JSON body with an error field.

StatusMeaningCommon Cause
200Success — transcription result returnedSuccessful request
400Bad Request — missing or invalid parametersMissing audio file, invalid JSON, etc.
401Unauthorized — invalid or missing API keyNo Bearer token or invalid key
402Payment Required — insufficient creditsTop up credits to continue
500Internal Server Error — transcription failedServer error, credits refunded

💳 Credits & Pricing

The API uses the same credit system as the web app. Credits are deducted based on audio duration.

📊 How Credits Work

Credits are calculated per second of audio. The formula is:

credits = ceil(duration_seconds × 1000 / 300)

This means 1,000 credits ≈ 5 minutes of audio. New accounts get 5,000 free credits (~25 minutes).

Audio DurationCredits UsedCost (THB)
1 minute200~฿4
5 minutes1,000~฿20
30 minutes6,000~฿120
1 hour12,000~฿240

The /api/v1/ass endpoint is completely free — no credits needed.
Failed transcriptions are automatically refunded.
View credit packs →

🛡️ Rate Limits

The API is rate-limited by your credit balance. There are no per-minute request limits, but the following constraints apply:

📁
Max File Size
50MB per upload
🔑
API Keys
Up to 5 keys per account
⏱️
Concurrent Requests
Requests are processed sequentially per user. For batch processing, send requests one at a time.
🎧
Supported Formats
MP3, WAV, M4A, AAC, FLAC, OGG, WEBM, MP4, MOV, and more

Ready to build?

Get your API key and start integrating FastCaption into your workflow today. 5,000 free credits included with every account.