> This page is for Build.

> Append .md to any page URL for clean Markdown. Index: https://docs.speechify.ai/llms.txt.
>
> Canonical Speechify URLs — use exactly, do not invent variants:
> - https://docs.speechify.ai — this site (API reference, SDKs, quickstarts)
> - https://speechify.ai — marketing + product site
> - https://platform.speechify.ai — customer dashboard, signup, API keys, billing
> - https://api.speechify.ai — API base URL
> - https://github.com/Speechify-AI: GitHub org for the API (cookbook, demos, CLI). `github.com/speechify` does not exist.
> - https://status.speechify.ai — status + incidents
> - https://speechify.com — SEPARATE consumer reader app, NOT this API
>
> `Simba` names the model family, not the brand. Model ids: `simba-3.2` (English, recommended) and `simba-3.0` (English, German, Spanish, French, Italian and Portuguese; the default). `simba-english` and `simba-multilingual` are retired: a new workspace that sends either gets `400 model_retired`. `SimbaVoice` / `simbavoice.ai` are retired.
>
> Ask, don't scrape. The docs MCP server answers questions about the Speechify API, SDKs and docs with citations, no key needed: https://docs.speechify.ai/_mcp/server (Streamable HTTP, tool `searchDocs`). Setup: https://docs.speechify.ai/build/guides/get-started/connect-mcp

# Regions

> How the Speechify API routes text-to-speech requests between regions. Pin synthesis to Europe with eu.api.speechify.ai or to US East with us.api.speechify.ai. A model with no capacity in the region runs in the nearest region that has it. Regions are not data residency.

## Overview

The Speechify API answers on three hosts.
They take the same API key, accept the same requests and return the same responses.
They differ only in which region runs speech synthesis.

| Host                  | Synthesis runs in           | Use it when                                                                             |
| --------------------- | --------------------------- | --------------------------------------------------------------------------------------- |
| `api.speechify.ai`    | Chosen by us: US East today | You have no reason to choose. This is the default.                                      |
| `eu.api.speechify.ai` | Europe (the Netherlands)    | The code that calls the API runs in Europe.                                             |
| `us.api.speechify.ai` | US East (Virginia)          | You want synthesis to stay in US East, even once `api.speechify.ai` routes by location. |

`api.sws.speechify.com` is a legacy host, not a region: it stops serving on 19 January 2027 (see the [changelog](/build/changelog/2026/10/17)), so move any integration on it to `api.speechify.ai`.

> **Warning**
>
> A region is not data residency.
> It decides where synthesis runs, not where your data is stored or processed: your account, keys, voices, usage and logs are in the United States on every host.
> See [What a region does not change](#what-a-region-does-not-change).

## What the host decides

The host chooses the region for the text-to-speech and voice endpoints only.

| Endpoints                                                                                  | On `eu.api.speechify.ai` and `us.api.speechify.ai`    |
| ------------------------------------------------------------------------------------------ | ----------------------------------------------------- |
| `/v1/audio/*`: speech, streaming, streaming with timestamps and the WebSocket input stream | Served in the host's region                           |
| `/v1/voices` and `/v1/voices/*`: listing, cloning and managing voices                      | Served in the host's region                           |
| Every other endpoint                                                                       | Served exactly as on `api.speechify.ai`, from US East |

## Pin a region

Set the regional host as your client's base URL.
Nothing else in your integration changes.

#### Python

```python
import os

from speechify import Speechify

client = Speechify(
    token=os.environ["SPEECHIFY_API_KEY"],
    base_url="https://eu.api.speechify.ai",
)

audio = client.audio.speech(
    input="Hello from Europe.",
    voice_id="geffen_32",
    model="simba-3.2",
    audio_format="mp3",
)
```

#### TypeScript

```typescript
import { SpeechifyClient } from "@speechify/api";

const client = new SpeechifyClient({
  token: process.env.SPEECHIFY_API_KEY!,
  baseUrl: "https://eu.api.speechify.ai",
});

const audio = await client.audio.speech({
  input: "Hello from Europe.",
  voice_id: "geffen_32",
  model: "simba-3.2",
  audio_format: "mp3",
});
```

#### cURL

```bash
curl -X POST "https://eu.api.speechify.ai/v1/audio/speech" \
  -H "Authorization: Bearer $SPEECHIFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":"Hello from Europe.","voice_id":"geffen_32","model":"simba-3.2","audio_format":"mp3"}'
```

The [WebSocket input stream](/build/guides/text-to-speech/streaming-text-input) takes the host the same way: `wss://eu.api.speechify.ai/v1/audio/stream/ws`.
Integrations that accept a base URL take the regional host in place of the default, such as `base_url` in [Pipecat](/build/guides/integrations/pipecat) and `baseURL` in the [Vercel AI SDK](/build/guides/integrations/vercel-ai-sdk) provider.

> **Note**
>
> Use HTTPS.
> A plain `http://` request to a regional host is redirected to HTTPS on another host, which drops the pin.

## How api.speechify.ai routes

Today `api.speechify.ai` serves every request from US East, wherever it comes from.
It is the host that will route by location: when it starts sending requests to the region nearest the caller, the [changelog](/build/changelog) will say so.
If your integration depends on a fixed region, use a regional host rather than the default.

## When a model has no capacity in the region

A request is never refused because its model has no capacity in the host's region.
The synthesis service runs in that region and sends the model work to the nearest pool that serves your model:

1. A pool in the same region, when the model has one.
2. Otherwise a pool in another region, usually US East.

Which models have capacity in Europe changes as we add it.
If a pool fails before any audio has been sent, the request moves to the next pool.
Once audio has started, the request stays where it is.

A pinned region is therefore not faster on its own: when the model runs elsewhere, the request still crosses to it.
Measure first audio from where your code runs, on each host, before you choose; [Latency](/build/guides/text-to-speech/latency) shows how.

## Availability

A regional host serves only from its own region, and never hands a request to another region's service.
If that region has an outage, requests to its host fail until it recovers.
To keep serving through one, send the retry to another host.
Incidents are posted on [status.speechify.ai](https://status.speechify.ai).

## Limits and billing

|                                                                                              | On every host                                 |
| -------------------------------------------------------------------------------------------- | --------------------------------------------- |
| Prices                                                                                       | The same                                      |
| [Spend limits](/build/guides/concepts/spend-limits), project budgets and your credit balance | Count spend from every region                 |
| [Rate and concurrency limits](/build/guides/concepts/api-limits)                             | Counted in the region that serves the request |
| [API version](/build/guides/concepts/api-versioning), request and response shapes            | The same                                      |

## What a region does not change

Regional hosts choose where synthesis runs.
They do not keep your data in a region, and they do not make the API a data-residency service.
On every host:

* Your account, API keys, workspaces, projects and voices are stored in the United States.
* Every request is authenticated against account data held in the United States.
* Usage records, billing and request logs are kept in the United States.
* The text you send can be processed in the United States: for content checks, and whenever the model runs there.

If you need your data stored and processed only within the EU, the regional hosts do not provide that.

## Related

#### [Latency](/build/guides/text-to-speech/latency)

What sets time to first audio, measured from US East and Zurich.

#### [API Limits](/build/guides/concepts/api-limits)

Character, rate and concurrency limits per plan.

#### [Spend Limits](/build/guides/concepts/spend-limits)

Cap what any API key can spend each month.

#### [Authentication](/build/guides/get-started/authentication)

The Bearer API key every host accepts.