TranscribeItFree

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/v1

Authentication

Send your key as a bearer token:

Authorization: Bearer tif_live_xxxxxxxxxxxx

Or as a header:

X-API-Key: tif_live_xxxxxxxxxxxx

Create 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=25

Catalogue (no auth)

GET /api/v1/languages   # returns languages, plans, api tiers

Rate limits & quotas

Every response includes:

X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4987
X-RateLimit-Reset: 1737590400
TierRequests / moAudio minutes / moRate limitConcurrentWebhooks
Developer100605/min1
Starter · $19/mo5,0001,50030/min3
Pro · $79/mo30,00010,000120/min8
Scale · $299/mo200,00060,000600/min20

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();