> 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

# API: `safety_identifier` attributes a request to your own end user

`POST /v1/audio/speech`, `POST /v1/audio/stream` and `POST /v1/audio/stream/with-timestamps` accept an optional `safety_identifier`: a stable, opaque id for the end user of your application on whose behalf the request is made.

Send it when many of your own users share one workspace. Abuse can then be attributed to, limited for, or blocked for that one end user instead of your whole workspace.

- **Send a hash, never personal data.** The field takes 1 to 64 characters of letters, digits and `. _ - : | + / =`, so an email address is rejected with `400 validation_failed`. A keyed hash of your internal user id is the recommended value.
- **It is metadata, not content.** It is recorded with the request even under zero data retention.
- **Per-end-user limits** can be set for your workspace, nested inside its own limits. Over one, a request returns `429` naming the `safety_identifier`.
- **A blocked end user** returns `403 safety_identifier_blocked`. Your other end users are unaffected.

Omitting the field changes nothing. No API version change is needed. See [Safety Identifiers](/build/guides/concepts/safety-identifiers).