Skip to main content
Upload a recording, get back a written transcript with each speaker labelled. These endpoints let you transcribe audio from your own systems, and list, fetch, redo and delete your transcripts.

Authentication

Send your API key in the X-API-KEY header on every request, to the base URL https://api-eg.olimi.ai. See API Authentication. You only ever see the transcripts that belong to the company your API key is issued to.

How it works

Transcription runs in the background:
  1. Upload: Upload audio returns an attachmentId for each file, straight away.
  2. Find the transcript: List transcripts and take the item whose attachmentId matches. Its id is the transcript’s ID.
  3. Poll: call Get a transcript with that id every few seconds until status is completed or failed.
Upload returns file IDs (attachmentId), but Get and Delete need the transcript ID (id). Passing an attachmentId to Get returns 404. Find the transcript’s id with List transcripts first. Regenerate is the one endpoint that accepts either.
Short clips usually finish within a few seconds; allow longer for long recordings.

Transcript fields

Responses also carry internal fields. They may change without notice, so rely only on the fields listed on this page.

Status values

Failure codes

Attachment object

Transcript format

Transcripts are speaker-labelled. Each turn starts with a label, and turns are separated by a blank line:
  • Numbering starts at 1.
  • Labels are anonymous. They tell speakers apart but carry no identity, and the same person isn’t guaranteed the same number across two uploads.
  • To get the turns, split on blank lines and read the Speaker N: prefix.

Translation

Set languageId when uploading or regenerating to translate the transcript. It’s a translation target, not a hint about the language being spoken; the spoken language is detected automatically.
  • With languageId: you get the translated text only. The original-language transcript isn’t returned alongside it.
  • Without it: you get the transcript in the language that was spoken.
Get language IDs from the public language list, which needs no API key:

Complete example

Upload a file, find its transcript, and wait for the result:
Python

Errors

Always branch on statusCode first. Errors from this API come in three shapes:
  • With an errorCode, like 404 stt_record_not_found: { "statusCode", "errorCode", "message" }.
  • Upload and Regenerate 400s: { "statusCode": 400, "message": "…", "error": "Bad Request" }. There’s no errorCode; the message says what went wrong. The exception is a languageId that isn’t a valid UUID, which returns 400 failed_update_data.
  • Validation (422): message is a list of what went wrong.
The message text is for humans and may change, so prefer errorCode wherever there is one.