---
title: "Create speech"
method: POST
path: "/audio/speech"
tags: ["TTS"]
---

# Create speech

`POST /audio/speech`

Synthesizes audio from the input text. Returns a raw audio bytestream in the requested format (e.g. mp3, pcm, wav).

## Request body

- SpeechRequest — Text-to-speech request input
  - `input` string, required — Text to synthesize
  - `model` string, required — TTS model identifier
  - `provider` object — Provider-specific passthrough configuration
    - `options` ProviderOptions — Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped.
      - `01ai` object
      - `ai21` object
      - `aion-labs` object
      - `akashml` object
      - `alibaba` object
      - `amazon-bedrock` object
      - `amazon-nova` object
      - `ambient` object
      - `anthropic` object
      - `anyscale` object
      - `arcee-ai` object
      - `atlas-cloud` object
      - `atoma` object
      - `avian` object
      - `azure` object
      - `baidu` object
      - `baseten` object
      - `black-forest-labs` object
      - `byteplus` object
      - `centml` object
      - `cerebras` object
      - `chutes` object
      - `cirrascale` object
      - `clarifai` object
      - `cloudflare` object
      - `cohere` object
      - `crofai` object
      - `crucible` object
      - `crusoe` object
      - `darkbloom` object
      - `decart` object
      - `deepgram` object
      - `deepinfra` object
      - `deepseek` object
      - `dekallm` object
      - `digitalocean` object
      - `enfer` object
      - `fake-provider` object
      - `featherless` object
      - `fireworks` object
      - `friendli` object
      - `gmicloud` object
      - `google-ai-studio` object
      - `google-vertex` object
      - `gopomelo` object
      - `groq` object
      - `heygen` object
      - `huggingface` object
      - `hyperbolic` object
      - `hyperbolic-quantized` object
      - `inception` object
      - `inceptron` object
      - `inferact-vllm` object
      - `inference-net` object
      - `infermatic` object
      - `inflection` object
      - `inocloud` object
      - `io-net` object
      - `ionstream` object
      - `klusterai` object
      - `lambda` object
      - `lepton` object
      - `liquid` object
      - `lynn` object
      - `lynn-private` object
      - `mancer` object
      - `mancer-old` object
      - `mara` object
      - `meta` object
      - `minimax` object
      - `mistral` object
      - `modal` object
      - `modelrun` object
      - `modular` object
      - `moonshotai` object
      - `morph` object
      - `ncompass` object
      - `nebius` object
      - `nex-agi` object
      - `nextbit` object
      - `nineteen` object
      - `novita` object
      - `nvidia` object
      - `octoai` object
      - `open-inference` object
      - `openai` object
      - `parasail` object
      - `perceptron` object
      - `perplexity` object
      - `phala` object
      - `poolside` object
      - `quiver` object
      - `recraft` object
      - `recursal` object
      - `reflection` object
      - `reka` object
      - `relace` object
      - `replicate` object
      - `sakana` object
      - `sambanova` object
      - `sambanova-cloaked` object
      - `seed` object
      - `sf-compute` object
      - `siliconflow` object
      - `sourceful` object
      - `stealth` object
      - `stepfun` object
      - `streamlake` object
      - `switchpoint` object
      - `targon` object
      - `tenstorrent` object
      - `together` object
      - `together-lite` object
      - `ubicloud` object
      - `upstage` object
      - `venice` object
      - `wafer` object
      - `wandb` object
      - `xai` object
      - `xiaomi` object
      - `z-ai` object
  - `response_format` 'mp3' | 'pcm' — Audio output format
  - `speed` number, double — Playback speed multiplier. Only used by models that support it (e.g. OpenAI TTS). Ignored by other providers.
  - `voice` string, required — Voice identifier (provider-specific).

## Response `200`

Audio bytes stream

## Other responses

- `400` — Bad Request - Invalid request parameters or malformed input
- `401` — Unauthorized - Authentication required or invalid credentials
- `402` — Payment Required - Insufficient credits or quota to complete request
- `404` — Not Found - Resource does not exist
- `429` — Too Many Requests - Rate limit exceeded
- `500` — Internal Server Error - Unexpected server error
- `502` — Bad Gateway - Provider/upstream API failure
- `503` — Service Unavailable - Service temporarily unavailable
- `524` — Infrastructure Timeout - Provider request timed out at edge network
- `529` — Provider Overloaded - Provider is temporarily overloaded

## Changes

- **2026-07-10** `ce36a3d995b6` — 1 info
  - added the new optional request property `provider/options/deepgram`
- **2026-07-09** `99841814a4f0` — 1 warning, 1 info
  - removed the request property `provider/options/sakana-ai`
  - added the new optional request property `provider/options/sakana`
- **2026-06-26** `7fd444475582` — 1 info
  - added the new optional request property `provider/options/quiver`
- **2026-06-24** `1de249ed4255` — 1 info
  - added the new optional request property `provider/options/heygen`
- **2026-06-24** `8758fa27fe84` — 1 info
  - added the new optional request property `provider/options/inferact-vllm`

[Full history](https://skmtc.dev/openrouterteam/apis/openrouter-api/changes/audio/speech/post.md)

---

[API](https://skmtc.dev/openrouterteam/apis/openrouter-api.md) · [All operations](https://skmtc.dev/openrouterteam/apis/openrouter-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openrouterteam/openrouter-api/revisions/9814733ca74d/schema)
