Developers

Transcription API and MCP

The API is the same engine as the site: one POST with the file, and you get back a transcript with the text, the segments and the times. The base URL is https://api.transcrib.si, the version prefix is /v1, and the same host serves an MCP server with four tools for Claude, ChatGPT and anything else that speaks MCP.

Updated 2026-10-21 · Author: Mark Vesyoly · 8 minutes

Try it live. The API playground takes your key, sends the request and shows the real answer — the status, the timings, the headers and the body — with the curl, Python and JavaScript snippets built from what you fill in. The machine-readable reference is api.md.

The endpoints

The REST API of Transcrib Si, version v1
MethodPathWhat it does
POST /v1/auth/register create an account, returns a session token
POST /v1/auth/login sign in, returns a session token
GET /v1/me the current user, the plan and the usage
POST /v1/api-keys create an API key; the value is shown once
GET /v1/api-keys the list of keys, without their values
DELETE /v1/api-keys/{id} revoke a key
POST /v1/transcripts upload a file (multipart), returns a queued transcript
GET /v1/transcripts the list of transcripts, ?limit=50&offset=0
GET /v1/transcripts/{id} the transcript: the text, the segments, the times, the speakers
PATCH /v1/transcripts/{id} save the edited text
DELETE /v1/transcripts/{id} delete the transcript and the file
GET /v1/transcripts/{id}/export export, ?format=txt|md|srt|vtt|csv|docx
POST /v1/uploads/init open a chunked upload, returns an upload id
PUT /v1/uploads/{id}/chunk?index=N send one piece of the file
POST /v1/uploads/{id}/complete assemble the pieces and queue the transcription
DELETE /v1/uploads/{id} drop an unfinished upload
GET /v1/usage the plan, the period, the minutes and the files used
POST /v1/billing/checkout start a Stripe checkout for pro_monthly or pro_yearly
POST /v1/billing/portal open the Stripe billing portal

A request in five lines

The whole API is one multipart POST for the file. Everything else reads the result back.

curl -X POST "https://api.transcrib.si/v1/transcripts" \
  -H "X-API-Key: $TRANSCRIB_API_KEY" \
  -F "file=@meeting.mp3" \
  -F "language=auto" \
  -F "diarize=true"

And the same call from Python:

import httpx

with open("meeting.mp3", "rb") as audio:
    response = httpx.post(
        "https://api.transcrib.si/v1/transcripts",
        headers={"X-API-Key": API_KEY},
        files={"file": ("meeting.mp3", audio, "audio/mpeg")},
        data={"language": "auto", "diarize": "true"},
        timeout=120.0,
    )

transcript_id = response.json()["id"]  # status: queued

The answer comes back as {"id": …, "status": "queued"}. The transcript is not ready yet: read it with GET /v1/transcripts/{id} until the status is done. The segments come in the same answer, each with start_s, end_s, the text and the speaker.

The errors

Every endpoint answers with the same shape, so one handler covers the whole API: {"error": {"code": "…", "message": "…"}}.

The error codes of the API and what to do with them
CodeHTTP statusWhen it happensWhat to do
unauthorized 401 no key, or a token that is not valid any more send X-API-Key, or a Bearer token
forbidden 403 the token belongs to another account check which account the key belongs to
not_found 404 no such transcript, upload or key check the id
limit_exceeded 402, 413 the daily file limit, the monthly allowance, a file over 64 MB or over 120 minutes split the file, or change the plan
invalid_request 400, 422 a field is wrong: a bad format, a bad id, a missing file the message says which field
provider_error 502 the transcription engine is unavailable or refused the file retry later; the file itself may be the problem
payment_required 402 this call needs the Pro plan create an API key on Pro or Team
billing_disabled 503 the server has no payment key configured not a client problem
not_ready 503 the database or the storage is not available yet retry in a moment

The limits

The limits of the API
LimitValueWhat happens when you cross it
Size of one file 64 MB the upload is rejected with a clear error
Length of one file 120 minutes (two hours) the upload is rejected with a clear error
Free plan 3 files a day, up to 30 minutes each the next upload is refused until the next day
Pro fair use 1,500 minutes of audio per calendar month a clear limit error, the account stays open
Team committed volume, written down agreed case by case
API metered by volume, no subscription billed on the audio you send

What the API costs

API usage is metered and billed by volume, separately from any subscription: there is no API plan with a monthly fee attached to it. We do not publish a per-hour rate — write to us with your monthly volume and we will send the rate for it.

The MCP server and the plugins

The same host serves an MCP server at /mcp with four tools — transcribe_audio, summarize_transcript, extract_actions and list_transcripts — and the plugins for Claude and ChatGPT use it. The details, the OAuth flow and the tool schemas are on the page for developers and agents. The page Transcrib in ChatGPT and Claude tells you what works with the two assistants today, what is still missing and how to connect the server yourself.

The keys

An API key is created in the app and its value is shown exactly once; we store only its hash. Send it in the X-API-Key header, or send a session token as Authorization: Bearer …. A key can be revoked from the app at any moment, and a revoked key stops working immediately.

The browser extension uses the same two ways to authenticate: paste the API key or the access token into its settings, and it is sent in the same headers.

Try it now

Put a file on the page and read the first lines.

The widget below is the same one as on the home page: file → transcript with timecodes and speakers → export. The transcript is saved to your account.

Drop an audio or video file

or — mp3, wav, m4a, mp4, up to 64 MB and two hours

No account yet? The free plan needs no card. Create a free account or sign in.

FAQ

Questions this page answers.

Where do I get an API key?

In the app, on the Pro or Team plan. The value is shown once at creation and we store only its hash, so it cannot be shown again.

Which authentication should I use?

X-API-Key for a server-to-server call, Authorization: Bearer for a session. Both work on the same endpoints.

Do you have an SDK?

No SDK: it is a plain REST API with one file-upload endpoint, multipart. requests or httpx is enough, as the example above shows.

Can I upload a file bigger than 64 MB?

Not in one request, but in parts: POST /v1/uploads/init, then PUT /v1/uploads/{id}/chunk?index=N for each piece, then POST /v1/uploads/{id}/complete. The limits on the finished file are the same 64 MB and 120 minutes.

Is there a live stream or a websocket?

No. The service takes files: you send the file and read the transcript when it is done.

Can an agent call the API?

Yes. The MCP server exposes the same engine as four tools, and there are plugins for Claude and ChatGPT.

Keep reading

Related pages.

For developers and agents

The MCP server, the four tools, OAuth and the plugins.

API для разработчиков

То же самое на русском.

Transcribe audio to text

The general guide, with the upload widget.

Pricing

Every plan, every limit, in one table.

Open the app

Where the keys are created.

Browser extension

Records a tab or a microphone and sends it to the same API.

Written by a person

Mark Vesyoly, Founder.

Every number on this page comes from the service contract, the pricing page or our own measurements. The author of the page and the publisher of the site are the same person. Questions and corrections: support@transcrib.si.