> 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

# API: watermark detection with your API key

`POST /v1/audio/watermark/detect` now answers, for any credentialed workspace, whether a clip carries the watermark Speechify seals into the audio it generates. This check was previously operator-only; it is now on the API and in the console. Upload the clip as `audio` (`multipart/form-data`, at most 25MB) and get back `WatermarkDetectionResponse` — `{ watermarked, confidence }`, with `confidence` a score in `[0, 1]`. Nothing about the upload is stored, and no voice is read or written.

Read the answer in one direction only. `watermarked: true` is positive evidence the audio came from Speechify synthesis. `watermarked: false` is the **absence** of that evidence, not proof of a negative: only models redeployed since the watermark shipped mark their output, the detector needs at least three seconds of clear speech, and re-encoding or changing the speed of a clip degrades the mark. Confidence scores are comparable only between checks against the same detector version.

Detection is capped at 20 requests per hour per workspace — a forensic question, not a data-plane call.

- **`422 watermark_audio_unusable`** — the clip could not be read (an undecodable container, or too little audio to judge). Deliberately not a negative verdict: "we could not tell" and "this is not ours" are different answers.
- **`502 watermark_detection_unavailable`** — the detector could not answer. Nothing about the request is wrong; retry the same bytes.

The credential-free sibling `POST /v1/audio/watermark/verify` — a bare boolean with no confidence score — follows the next day (see 2026-08-29); use `detect` with an API key when you want the score.