JustTranscribe

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 status is complete or failed. 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.