/v1 (/v1/chat/completions, /v1/audio/speech, /v1/audio/transcriptions). Native routes sit at the root: /tts/*, /voices, /pronunciation-dicts, /jobs.
Authentication
Every request carries a key in theAuthorization header:
wss://api.withhopper.com/stt/websocket?api_key=sk_hopper_....
Errors
Every error uses the OpenAI envelope, so OpenAI SDK error handling works unchanged. A request without a key returns 401:insufficient_quota; a streaming STT session closes with code 1008. Full per-endpoint codes are on each endpoint page and in errors.
Spend headers
Metered responses report cost as 6-decimal USD strings:
LLM streaming responses carry only
x-hopper-credits-remaining-usd, the pre-request balance; the cost is unknown until the stream ends.
Rate limits
600 requests per minute per key. Past the limit, 429 with aRetry-After header giving the seconds to wait.
To make a first request, follow the quickstart.