What it does
You send a recording — a file you upload or a public link — and the API gives you back a transcript with timings and speaker labels. The same engine that powers the apps does the work, so the accuracy, the languages and the diarization are identical.
curl https://heartotext.com/api/public/v1/transcriptions \
-H "Authorization: Bearer $H2T_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-F file=@meeting.m4a \
-F language=enWho can use it
Subscribers only. The API is included with a paid Hear2Text subscription — there is no separate API plan, no per-minute API pricing and no free tier for it. If the account is not subscribed, every request answers 403 subscription_required.
If a subscription lapses, your keys are kept. Requests start failing with that same 403 and start working again the moment the subscription is active, so a failed card is not a re-integration. Guest accounts cannot hold keys at all.
The shape of the API
- Base URL:
https://heartotext.com/api/public/v1 - Authentication:
Authorization: Bearer h2t_live_…, created in your profile and shown once. - Server-side only. CORS is switched off here on purpose. A key in a browser is a key in everybody’s browser.
- No webhooks in v1. You create a recording and poll it. The polling page says how to do that without wasting requests.
- No database identifiers. Recordings are addressed by an opaque
id, languages by ISO code, workspaces by name. - One error shape for every refusal:
{ "error", "message" }. - Machine-readable: OpenAPI 3.1 document and a Postman collection, both generated from the same source as these pages.
Where to go next
- Quickstart — Three requests: create a recording, poll it, read the transcript.
- Authentication & keys — Creating keys, where they belong, and what happens when a subscription lapses.
- Creating transcriptions — Files and URLs, supported sources, languages, limits.
- Polling — There are no webhooks in v1. How to wait well.
- Results — Segments, speakers, and the export formats.
- Errors — The envelope, and every code the API can answer with.
- Rate limits & fair use — The numbers, the headers, and what to do about a 429.
- Idempotency — Retrying a create without paying for it twice.
- Versioning & deprecation — What may change inside v1, and what we promise before it does.
- Changelog — Every change to the public API, newest first.
- API reference — Every endpoint, generated from the OpenAPI document.
