JustTranscribe API
The same engine as the app, over HTTPS: send an audio/video file or a public video link, poll until the transcript is ready, export it in any of 7 formats. It powers the n8n, Make and Zapier integrations — or call it directly.
Authentication
Create a key in your profile (free account, no card during the beta) and send it as a Bearer token. Keys act as your account: transcripts land in your library with the same limits as the app.
curl https://justtranscribe.ai/api/v1/me \ -H "Authorization: Bearer jt_live_…"
Limits (beta)
- Files up to 150 minutes and 500 MB; public links from YouTube, TikTok, Instagram, Facebook, Pinterest, Google Drive.
- 3 new transcripts per hour per account, processed one at a time; 120 requests/minute per key.
- Transcription is asynchronous: creation returns immediately, poll the transcript until
statusiscompleteorfailed. A short recording takes about a minute; long ones take several. - Errors are JSON:
{"error": "human-readable message"}with a meaningful HTTP status (401, 404, 413, 415, 422, 429).
Endpoints
POST/api/v1/transcripts
Create a transcript from a public video link (JSON) or a file (multipart). Returns 201 with the id; queued: true means the daily capacity window is closed and the job starts automatically when it reopens.
# From a link
curl -X POST https://justtranscribe.ai/api/v1/transcripts \
-H "Authorization: Bearer jt_live_…" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw"}'
# From a file (MP3, WAV, M4A, OGG/OPUS, FLAC, MP4, MOV, WEBM, MKV)
curl -X POST https://justtranscribe.ai/api/v1/transcripts \
-H "Authorization: Bearer jt_live_…" \
-F "file=@meeting.m4a"
# → {"id": "3f1c…", "status": "pending", "queued": false}Completion webhook. Add webhookUrl (JSON) or a webhook_url form field (multipart) and we POST the finished transcript — the same JSON as GET below plus event (transcript.completed or transcript.failed, also in the X-JustTranscribe-Event header) — once, with 3 delivery attempts (immediately, +30 s, +5 min; 10 s timeout). HTTPS and public hosts only. Use an unguessable URL; this is what the Zapier integration uses to wait for long transcripts.
GET/api/v1/transcripts/{id}
Status and, once complete, the transcript as plain text and as word-timed segments, detected language, cached speaker turns, and the AI analysis (summary, key moments — and for social videos the hook/scene/pacing breakdown).
curl https://justtranscribe.ai/api/v1/transcripts/3f1c… \
-H "Authorization: Bearer jt_live_…"
# → {"id": "3f1c…", "status": "complete", "language": "spanish",
# "durationSec": 42, "text": "…full transcript…",
# "transcript": {"segments": [
# {"start_s": 0, "end_s": 6.4, "text": "…", "words": [...]}, …]},
# "speakers": null, "analysis": {…}, "metrics": {…}}GET/api/v1/transcripts
Your transcripts, newest first. ?limit= (1–100, default 20), ?offset=, ?status=complete|failed|pending|…. The response carries hasMore for pagination.
GET/api/v1/transcripts/{id}/export/{format}
The finished transcript as a file — txt, srt, vtt, csv, md, pdf, docx. Options: ?ts=0 drops timestamps (SRT/VTT keep cue timings), ?sp=1 adds speaker labels when the transcript has been diarized, ?full=1folds the AI analysis into document formats. Byte-identical to the app's export menu.
curl -L -o subtitles.srt \ "https://justtranscribe.ai/api/v1/transcripts/3f1c…/export/srt" \ -H "Authorization: Bearer jt_live_…"
DELETE/api/v1/transcripts/{id}
Deletes the transcript and its stored media. Irreversible.
Integrations
n8n: install the community node n8n-nodes-justtranscribe (Settings → Community Nodes), add a JustTranscribe API credential with your key, and use the Transcript resource — create from URL or binary file with an optional wait-for-completion, get, list, export, delete. Make and Zapier apps wrap the same endpoints. Anything that speaks HTTP works with the reference above.
Fair use & support
The beta is free — the brakes above exist so it stays that way. If a limit blocks a real workflow, write to the address on the About page and we'll raise it. Paid plans (metered minutes) arrive after the beta and will be published on Pricing first.