Transcription
3 min read
OpenAI-compatible audio transcription - the same endpoint DevThrottle's own voice features use. Transcription is included in Pro and the 14-day Pro trial with no usage charge: the same entitlement that powers dictation in the app covers the calls you make with your own key. Every call needs a dt_ key - there is no keyless path to this endpoint.
/audio/transcriptionsRequest
| Parameter | Type | Required | Description |
|---|---|---|---|
file | file | Required | The audio to transcribe. Same formats as OpenAI: flac, m4a, mp3, mp4, mpeg, mpga, oga, ogg, wav, webm. Max 4 MB per request (see Limits). |
model | string | Optional | Accepted for OpenAI compatibility (clients send whisper-1, gpt-4o-transcribe, ...). DevThrottle serves the request with its active speech-to-text model regardless of this value; see GET /api/v1/models for the current id. |
response_format | string | Optional | json (default), text, or verbose_json - shaped to what you asked for. |
language | string | Optional | Optional language hint. |
curl https://devthrottle.com/api/v1/audio/transcriptions -H "Authorization: Bearer $DEVTHROTTLE_API_KEY" -F file=@recording.wav -F model=whisper-1What comes back is what was said
The endpoint returns the speech model's own words. Nothing between the model and you rewrites, summarises, translates or cleans up the transcript - it is shaped into the response format you asked for and returned as it was recognised. That is deliberate: your words become instructions to an agent, so a word you did not say is an instruction you did not give.
One consequence for API callers: the custom dictionary is applied by the DevThrottle app on your own machine, not by this endpoint. A direct call here gets no corrections at all - if you need your own terms fixed, apply your word list to the text you get back.
Response
json returns { "text": ... }, text returns the transcript as plain text, and verbose_json returns the fuller object the speech model produced - language, duration, text and, where the model supplies them, segments. Each request's audio duration appears in Usage.
Limits
Each request is a single, self-contained transcription with a 4 MB maximum body size. A larger upload returns 413 payload_too_large.
Included use is also bounded overall: transcription is an included AI feature, and included AI features share a monthly fair-use limit. An account that reaches it gets 402 with fair_use_limit_reached until the limit resets at the start of the next month. It is not a credit balance - loading credits does not lift it.
Who can call it
Transcription comes with Pro and the 14-day Pro trial. An account with no active subscription or trial is declined with 402 and subscription_required - a subscription enables it, not loading credits, because this endpoint never spends credits at all.
Status codes
- 400 - the upload could not be parsed, or the
filefield is missing. - 401 -
invalid_api_key: missing, malformed, or revoked key. - 402 -
subscription_requiredorfair_use_limit_reached, as above. - 404 -
not_found: wrong path or wrong method (this endpoint is POST only). - 413 -
payload_too_large: over 4 MB. - 500 -
internal_error. - 502 -
upstream_error: the speech service failed. - 504 -
upstream_unavailableorupstream_timeout: the speech service is unreachable or did not answer in time. Retry after a short back-off.
Full error shapes are on errors and limits.
model parameter is deliberately forgiving: OpenAI-shaped clients hard-code their own model names, so DevThrottle accepts them and uses its own speech model - your client works unmodified.