Skip to main content
These routes need an API key or client token with the inference scope. Each call spends credits. A call that fails before producing anything isn’t charged.

Languages

Use these codes wherever a route asks for a language. You can also fetch them with GET /v1/languages.

Voices

Pass one of these as voice when generating speech. You can also fetch them with GET /v1/voices. Pidgin voices can also speak Nigerian English. Send "language": "en-NG" with a Pidgin voice.

Limits

To work with longer content, split it into separate requests. When the models are busy you’ll get 503 model_busy, with a Retry-After header. See Rate limits for request limits.

Transcribe audio

The response has the transcript in text. Audio with no speech returns 422 no_speech and isn’t charged.

Refinement

We refine every transcript for accuracy, in all languages, at no extra charge. text has the refined version, raw_text has the original, and refined says whether they differ. Refinement is on by default. To turn it off for your organization, use PUT /v1/organization/transcript-refinement.

Generate speech

The response is audio, in WAV by default or raw PCM with "format": "pcm". The X-Credits-Charged and X-Sample-Rate headers give the cost and sample rate. See Voices for the options.

Stream speech

Send "stream": true to receive server-sent events as the audio is generated: You’re charged for the audio generated, including when you disconnect early.

Translate text

See Languages for the codes.

Credits

Each call places a hold on your balance before it runs, then charges the actual cost when it finishes. If your balance can’t cover the hold, you’ll get 402 insufficient_credits. See Billing to buy more. Check your balance with GET /v1/billing/balance, your prices with GET /v1/billing/rates and your spending with GET /v1/usage. These need the billing:read and usage:read scopes.