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=trueOn 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"Request
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
audio | file | Yes | - | Audio file, up to 100 MiB. file is accepted as an alias. |
language | string | No | auto | auto, one of the 30 single-language modes, or one of the three bilingual modes listed below. |
stream | query boolean | Yes | true | Query 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.
Was this page helpful?