Terminal & cURL
For shell scripts and one-off jobs, use POST /api/v1/transcribe. You stream the raw audio bytes as the request body (options go in the query string); the server streams the upload straight to storage, then holds the connection open and streams job progress back as SSE until the transcript is ready.
When to use this
Use /transcribe from terminals and simple scripts. Use the SDK (/api/v1/upload flow) inside applications — it handles large uploads, heartbeats, and SSE reconnects for you.
Basic example
export SPEECHREVOLUTIONS_API_KEY=stt_...
curl -N -X POST \
"https://api.speechrevolutions.com/api/v1/transcribe?output_type=json&word_timestamps=true&speaker_labels=true&nltk=true" \
-H "X-API-Key: $SPEECHREVOLUTIONS_API_KEY" \
--data-binary @./meeting.mp3The -N flag disables buffering so progress events stream as they arrive. --data-binary sends the file bytes unmodified as the request body.
Query parameters
Options are passed in the query string (the request body is the raw audio). Same options as upload:
| Field | Type | Default | Description |
|---|---|---|---|
output_type | string | json | txt | json | srt | vtt | docx | pdf |
word_timestamps | bool | true | Per-word timing |
speaker_labels | bool | true | Diarization |
nltk | bool | true | Punctuation / cleanup |
tier | string | standard | standard — the only tier currently available |
custom_vocabulary | string | — | Comma-separated terms (optional) |
Progress stream
While the job runs, the response body streams events. Progress is reported as steps completed out of a total, not a percentage — divide to get one:
event: accepted
data: {"job_id": "...", "download_url": "https://..."}
event: progress
data: {"completed":1,"total":4,"step":"preprocess"}
event: progress
data: {"completed":2,"total":4,"step":"chunk:1"}
event: progress
data: {"completed":3,"total":4,"step":"chunk:0"}
event: progress
data: {"completed":4,"total":4,"step":"aggregation"}
event: completed
data: {"download_url": "https://...", "job_id": "..."}
event: transcript
data: <the transcript, one data: line per line of output>total is the number of pipeline steps for your file, so it depends on how many chunks the audio is split into — don't hard-code it. Chunk steps are named chunk:N and can arrive out of order (they finish in whatever order the workers do). A short file that finishes in one pass may emit no progress events at all, going straight from accepted to completed; treat progress as advisory and drive completion off the completed event.
Unlike the SDK upload flow, there is no separate /upload/progress or /upload/complete step — the file upload and job wait happen on one connection.
Full field reference: API → Transcribe.