---
title: "Synthesize raw PCM with cross-provider routing"
method: POST
path: "/v1/synthesize"
---

# Synthesize raw PCM with cross-provider routing

`POST /v1/synthesize`

## Headers

- `X-Speko-Objective` 'latency' | 'quality' | 'cost' | 'balanced'
- `X-Speko-Language` string
- `X-Speko-Allow` string
- `X-Speko-Deny` string
- `X-Speko-Max-Price` number

## Request body

- object
  - `text` string, required
  - `model` string
  - `instructions` string — Optional TTS delivery direction. Used by Gemini TTS to control speaking style or accent without changing the transcript.
  - `voice` string — Provider voice id. Omit to use the provider default where supported.

## Response `200`

Signed 16-bit mono PCM audio

## Other responses

- `502` — Every attempted upstream failed before the router could complete the request. Route, reason, and failover-count headers are present; X-Speko-First-Byte-Ms is omitted.
- `default` — Router-generated errors use the Speko JSON error schema. A non-retryable upstream 4xx is passed through after response-header sanitization with its upstream status, media type, and body, which can be non-JSON.

---

[API](https://skmtc.net/speko/apis/speko-voice-router-api.md) · [All operations](https://skmtc.net/speko/apis/speko-voice-router-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/speko/speko-voice-router-api/revisions/ef3d201df72e/schema)
