Transcription API v1
A clean REST API for transcribing and translating audio & video. 99 languages, accurate timestamps, free Developer tier.
→ Create your API key · View tier pricing
Base URL
https://transcribeitfree.com/api/v1Authentication
Send your key as a bearer token:
Authorization: Bearer tif_live_xxxxxxxxxxxxOr as a header:
X-API-Key: tif_live_xxxxxxxxxxxxCreate a transcription job
POST /api/v1/jobs — multipart upload or JSON with a remote URL.
curl -X POST https://transcribeitfree.com/api/v1/jobs \
-H "Authorization: Bearer $TIF_KEY" \
-F "file=@interview.mp3" \
-F "sourceLanguage=en" \
-F "targetLanguage=es" \
-F "includeTimestamps=true"JSON variant (fetches the audio for you):
curl -X POST https://transcribeitfree.com/api/v1/jobs \
-H "Authorization: Bearer $TIF_KEY" \
-H "Content-Type: application/json" \
-d '{
"audioUrl": "https://example.com/audio.mp3",
"sourceLanguage": "auto",
"targetLanguage": "en",
"includeTimestamps": true,
"cleanAudio": true,
"webhookUrl": "https://your.app/transcribe-callback"
}'Response (202):
{
"jobId": "GxK4P5...",
"status": "uploaded",
"statusUrl": "/api/v1/jobs/GxK4P5..."
}Poll job status
GET /api/v1/jobs/:id
curl https://transcribeitfree.com/api/v1/jobs/GxK4P5... \
-H "Authorization: Bearer $TIF_KEY"Status progresses: uploaded → queued → analyzing → transcribing → translating → completed.
Webhooks (paid tiers)
When a job reaches a terminal state we POST the full job JSON to your webhookUrl. Includes a X-TIF-Signature HMAC header so you can verify authenticity.
List recent jobs
GET /api/v1/jobs?limit=25Catalogue (no auth)
GET /api/v1/languages # returns languages, plans, api tiersRate limits & quotas
Every response includes:
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4987
X-RateLimit-Reset: 1737590400| Tier | Requests / mo | Audio minutes / mo | Rate limit | Concurrent | Webhooks |
|---|---|---|---|---|---|
| Developer | 100 | 60 | 5/min | 1 | — |
| Starter · $19/mo | 5,000 | 1,500 | 30/min | 3 | ✅ |
| Pro · $79/mo | 30,000 | 10,000 | 120/min | 8 | ✅ |
| Scale · $299/mo | 200,000 | 60,000 | 600/min | 20 | ✅ |
Error model
{ "error": "monthly request quota exceeded" }HTTP codes: 400 bad input · 401 auth · 403 forbidden · 404 not found · 429 quota · 5xx server.
Node example
import fs from 'node:fs';
const form = new FormData();
form.set('file', new Blob([fs.readFileSync('audio.mp3')]), 'audio.mp3');
form.set('sourceLanguage', 'en');
const r = await fetch('https://transcribeitfree.com/api/v1/jobs', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.TIF_KEY}` },
body: form
});
const { jobId } = await r.json();