> 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.5` (48 languages under one id, English included; recommended), `simba-3.2` (English) 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

# Migrating off Simba 1.6

> The Simba 1.6 text-to-speech models simba-english and simba-multilingual retire at API version 2026-09-21, and from 2026-11-21 both ids are served by current Speechify models. This guide shows what changes, which model to move to, checking your languages first, and how to pin your API version to keep Simba 1.6 until then.

`simba-english` and `simba-multilingual` — the Simba 1.6 pair — are being withdrawn. This page is the one-stop migration guide: what changes, which model to move to, and how to buy time if you need it. The decision and the two dates were announced in the [changelog entry that kicked this off](/build/changelog/2026/9/21).

> **Warning**
>
> **If your synthesis requests set `model` to `simba-english` or `simba-multilingual`, they keep working after 2026-11-21, but the model behind them changes on that day.** From then `simba-multilingual` is served by Simba 3.5, and `simba-english` by `simba-3.2` for English and Simba 3.5 for any other language. To choose the model yourself and test your voices first, switch to `simba-3.5`, the recommended model, with 48 languages under one model id. The endpoint and request shape are otherwise unchanged. Already-generated audio is unaffected. **Not ready to switch the `model` string by `2026-09-21`?** Pin `Speechify-Version` to a date before `2026-09-21` and both ids keep responding: see [Buy time by pinning your API version](#buy-time-by-pinning-your-api-version).

## What is changing

Withdrawal is two dated steps, both published up front:

| When                              | What happens                                                                                                                                                                                                                                    |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **From API version `2026-09-21`** | The pair is no longer selectable: naming either model returns `400 model_retired`, and neither appears in `GET /v1/audio/models`. New workspaces are pinned at signup, so they can't select it at all.                                          |
| **From `2026-11-21`**             | Both ids keep answering on every API version that can still name them, served by our current models instead of their Simba 1.6 training: `simba-multilingual` by Simba 3.5, `simba-english` by `simba-3.2` for English and Simba 3.5 otherwise. |

`2026-11-21` is the date the audio changes for everyone still naming the pair, pinned or not. Nothing breaks, but the voice will not sound exactly as it does today. Two differences to plan for: SSML `<prosody pitch>`, `<prosody volume>`, `<emphasis>` and `<speechify:style emotion>` are not applied by the current models (breaks and `<prosody rate>` are), and a voice you tuned on Simba 1.6 is rendered by a different model.

## Are you affected?

You are affected if a synthesis request sends `model: "simba-english"` or `model: "simba-multilingual"` to `POST /v1/audio/speech` or either `/v1/audio/stream` route.

You are **not** affected if you name `simba-3.5`, `simba-3.2` or `simba-3.0`, or omit `model` entirely: an omitted `model` resolves to `simba-3.0`, which is unchanged.

## Where to go

| From                 | To              | Notes                                                                                                                               |
| -------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `simba-english`      | **`simba-3.5`** | The recommended model: 48 languages under one model id, English included. `simba-3.2` stays available if your text is English only. |
| `simba-multilingual` | **`simba-3.5`** | 48 languages under one model id. From `2026-11-21` it also serves requests that still name `simba-multilingual`.                    |

For most integrations this is a one-line change — swap the `model` string and keep everything else — but check two things first:

* **Your languages.** Check the languages you send against the [languages `simba-3.5` covers](/build/guides/text-to-speech/language-support) (see below).
* **Omitting `language`.** On `simba-multilingual`, leaving `language` out auto-detects the language from your input text. `simba-3.5` instead falls back to the voice's own locale. If you rely on detection, set `language` explicitly on the request when you move.

```json
{
  "input": "Hello from Speechify.",
  "voice_id": "your-voice-id",
  "model": "simba-3.5"
}
```

### Request

POST [https://api.speechify.ai/v1/audio/speech](https://api.speechify.ai/v1/audio/speech)

```curl
curl -X POST https://api.speechify.ai/v1/audio/speech \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "input": "Hello! This is the Speechify text-to-speech API.",
  "voice_id": "geffen_32",
  "audio_format": "mp3",
  "model": "simba-3.2"
}'
```

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

async function main() {
    const client = new SpeechifyClient({
        token: "YOUR_TOKEN_HERE",
    });
    await client.audio.speech({
        audioFormat: "mp3",
        input: "Hello! This is the Speechify text-to-speech API.",
        model: "simba-3.2",
        voiceId: "geffen_32",
    });
}
main();

```

```python
from speechify import Speechify

client = Speechify(
    token="YOUR_TOKEN_HERE",
)

client.audio.speech(
    audio_format="mp3",
    input="Hello! This is the Speechify text-to-speech API.",
    model="simba-3.2",
    voice_id="geffen_32",
)

```

## Check your languages first

`simba-3.5` speaks 48 languages under one model id, and from `2026-11-21` it also serves requests that still name `simba-multilingual`, so moving first lets you pick the voice and test it. Compare the languages you send with [its list](/build/guides/text-to-speech/language-support), set `language` explicitly on the request (see the note above on omitting it), and the switch is a one-liner.

## Buy time by pinning your API version

`2026-09-21` is the cut-over. From that API version, naming either model returns `400 model_retired`, so **send `Speechify-Version` set to a date before `2026-09-21`** on your synthesis requests to keep `simba-english` / `simba-multilingual` on their Simba 1.6 training until `2026-11-21`. The official SDKs expose this as a version option; and because a workspace's stored default only ever moves forward, the per-request header is how you hold an older shape. See [API Versioning](/build/guides/concepts/api-versioning) for how to read and set it.

> **Note**
>
> While your workspace is pinned below `2026-09-21`, both models still appear in `GET /v1/audio/models` carrying `retired_at: "2026-09-21"` and `sunset_at: "2026-11-21"`. Read `sunset_at` for the day the model behind the id changes.

The pin holds Simba 1.6 until `2026-11-21`, whatever you pin; from then the ids are served by our current models.

## Migration checklist

### Find where you name the models

Search your integration for `simba-english` and `simba-multilingual`. Requests that omit `model` are already on `simba-3.0` — no change needed.

### Pick the replacement

`simba-english` and `simba-multilingual` → `simba-3.5`, once your languages are in [its list](/build/guides/text-to-speech/language-support). `simba-3.2` remains an option for English-only text.

### Swap the model string and test

Change the `model` value and re-run your synthesis. The endpoint and request shape stay the same: confirm your voice lists the new model in its `models` array in `GET /v1/voices`, and set `language` explicitly if you were relying on auto-detection.

### If you need longer, pin instead

Set `Speechify-Version` to a date before `2026-09-21` to keep the Simba 1.6 training until `2026-11-21` while you plan.

## See also

* [Simba 1.6 retirement changelog](/build/changelog/2026/9/21) — the announcement and the two dates
* [Models](/build/guides/concepts/models#simba-16-and-your-api-version) — the model catalog and the `GET /v1/audio/models` fields
* [Language support](/build/guides/text-to-speech/language-support) - what each model covers
* [API Versioning](/build/guides/concepts/api-versioning) — reading and pinning `Speechify-Version`