Authentication
Send your API key in theX-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:- Upload: Upload audio returns an
attachmentIdfor each file, straight away. - Find the transcript: List transcripts and take the item whose
attachmentIdmatches. Itsidis the transcript’s ID. - Poll: call Get a transcript with that
idevery few seconds untilstatusiscompletedorfailed.
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
SetlanguageId 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.
Complete example
Upload a file, find its transcript, and wait for the result:Python
Errors
Always branch onstatusCode first. Errors from this API come in three shapes:
- With an
errorCode, like404stt_record_not_found:{ "statusCode", "errorCode", "message" }. - Upload and Regenerate
400s:{ "statusCode": 400, "message": "…", "error": "Bad Request" }. There’s noerrorCode; themessagesays what went wrong. The exception is alanguageIdthat isn’t a valid UUID, which returns400failed_update_data. - Validation (
422):messageis a list of what went wrong.
The
message text is for humans and may change, so prefer errorCode wherever there is one.