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 the app's API tab (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": {"language": "spanish",
#      "segments": [{"start": 0, "end": 6.4, "text": "…"}, …],
#      "words": [{"w": "hola", "s": 0.1, "e": 0.4}, …]},
#    "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.

?sort=completedAtorders by when each transcript finished and returns only finished ones. Use it — with each item's completedAt— whenever you keep a “since last seen” cursor: transcripts do not always finish in the order they were created, so a cursor on createdAt can skip one. ?include=textadds the plain transcript to every row, so a “when a transcript finishes” poller doesn't need a second call.

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: a community node verified by n8n. On n8n Cloud, search JustTranscribe in the nodes panel and add it from the canvas; on a self-hosted instance, install 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. Verified and published on n8n Cloud since 2026-09-17. Details →

Zapier: a trigger fires when a transcript finishes, and actions create one from a public link or a file — both wait for the result before the Zap continues. Live in Zapier's app directory (beta) since 2026-09-08. Details →

Make: nine modules, including an instant webhook trigger that sidesteps Make's 40-second module limit for a job that takes minutes. Built and tested against production; not yet in Make's public app directory. Details →

Chrome extension: transcribe the video open in the current tab in one click, into the same account and library as the app. Live in the Chrome Web Store since September 2026. Install and details →

MCP: an AI assistant (Claude, ChatGPT, Cursor) can call the API itself through the Model Context Protocol server — same key, same limits, transcribe a link without leaving the chat.

Anything else that speaks HTTP works directly with the endpoint reference above. Machine-readable spec (OpenAPI 3.1, imports straight into GPT Actions and API tooling): /api/v1/openapi.json.

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.