Evom Labs API Reference

Loli 2.0

Progressive Speech-to-Text

Emits one complete JSON object per line as each chunk finishes, instead of waiting for the whole file. The response carries Content-Type application/x-ndjson.

POST/api/v1/stt/transcriptions?stream=true
On this page

Code examples

curl -N -X POST "https://studio.evomlabs.com/api/v1/stt/transcriptions?stream=true" \
  -H "Authorization: Bearer stt_sk_live_YOUR_KEY" \
  -F "audio=@meeting.mp3" \
  -F "language=vi"

Authorization

Bearer credential

Send the credential in the Authorization header. Account and voice keys are accepted only where the endpoint contract permits them.

Request

FieldTypeRequiredDefaultDescription
audiofileYes-Audio file, up to 100 MiB. file is accepted as an alias.
languagestringNoautoauto, one of the 30 single-language modes, or one of the three bilingual modes listed below.
streamquery booleanYestrueQuery parameter. Set true to receive NDJSON progressively.

Containers recognised at present: WAV 16-bit PCM, MP3, WebM, OGG and MP4 or M4A. Decoded duration must be between about 0.2 and 1,800 seconds. Which encoded formats decode depends on the deployment, so do not rely on the filename extension alone.

Response

NDJSON
{"type":"started","duration_seconds":42.5,"chunks_total":2,"provider":"loli-asr","model":"Loli 2.0"}
{"type":"chunk","index":1,"chunks_total":2,"text":"...","combined_text":"...","language":"vi"}
{"type":"chunk","index":2,"chunks_total":2,"text":"...","combined_text":"...","language":"vi"}
{"type":"final","text":"...","language":"vi","is_final":true,"provider":"loli-asr","model":"Loli 2.0","latency_ms":5230}

Errors

REST failures use the documented error envelope. Handle the error code instead of matching the human-readable message.

A stream can end with an error

If the pipeline fails after the response has started, the last line is an error object instead of a final one. Read line by line and handle both final and error.
Error codes

Was this page helpful?

Evom Labs API documentation