> 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

# `Idempotency-Key` on side-effect API calls

`Idempotency-Key` is now supported on side-effect API calls where a retry could otherwise create something twice. Mint a service-account key, or run another money-path `POST` with the same key and body, and the API replays the first result instead of running the operation again.

## When to send a key

Send one when your client might retry a request after the first attempt may already have reached Speechify:

- service-account key creation and minting paths
- spend and dispatch paths with external effects

Use a fresh opaque value per logical operation — a UUID is fine:

```http
Idempotency-Key: 4c7f0a78-0a61-42b4-8b8a-60b307b18f0c
```

## How retries behave

For 24 hours, the same key and body return the first response. A replay includes:

```http
Idempotent-Replayed: true
```

If the first request is still running, or the body differs, the API returns `409 idempotency_conflict`. If the first attempt failed with a server error before committing, the claim is released so you can retry.

Log both `Idempotency-Key` and `Speechify-Request-Id`: one identifies the operation you retried, the other the individual HTTP request. See the [idempotency reference](https://docs.speechify.ai/build/api-reference/get-started/idempotency) for full behavior.