For AI agents: a documentation index is available at the root level at /llms.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
The public AI detection tool. Ask whether a clip carries the watermark
Speechify seals into audio it generates, with no account, no API key and
no credential of any kind.
`verify` answers; `detect` measures. This route returns a bare yes or no,
the way verifying a signature does. Its sibling
`POST /v1/audio/watermark/detect` takes an API key and returns the
detector's confidence alongside the verdict.
This is the programmatic half of the tool published at
<https://speechify.ai/detect>, and it exists so the tool can be invoked
without visiting our website, as California's AI Transparency Act
(BPC 22757.2) requires. Nothing about the clip is stored, and nothing
identifying about you is collected or retained.
The answer is a bare verdict. `watermarked: true` is positive evidence
that the audio came from Speechify synthesis. `watermarked: false` is
NOT proof that it did not: only models redeployed since the watermark
shipped mark their output, the detector needs at least three seconds of
clear speech to judge, and re-encoding or changing the speed of a clip
degrades the mark. Treat a negative as the absence of evidence rather
than as evidence of absence.
Because the tool takes no credential, it is rate-limited per client
address and shares a platform-wide budget: expect a 429 under sustained
automated use, and retry after the interval the response advertises.
Use `POST /v1/audio/watermark/detect` with an API key for the detector's
confidence score and a per-workspace allowance of its own.
Headers
Speechify-VersionstringOptional
Request
This endpoint expects a multipart form containing a file.
audiofileRequired
The clip to check, at most 25MB. Give the detector at least
three seconds of clear speech; below that its answer is not
worth acting on.
Response headers
Speechify-Request-IdstringOptional
Unique identifier for this request, present on every response (2xx and
non-2xx alike). If the caller sends a `Speechify-Request-Id` request
header the server echoes it back (sanitized and length-capped) so one
logical request can be traced end-to-end; otherwise the server generates
a fresh value. Log it on every response and quote it in support requests
- it is the stable handle that ties your observation to Speechify's
server-side logs, and it matches the `request_id` field in the error
envelope.
The legacy alias `X-Request-ID` carries the same value and is still
accepted on requests, until 2027-07-24. Prefer the un-prefixed name
(RFC 6648).
RateLimit-Limitinteger
Request-rate budget: the maximum number of requests in the current
window (the bucket capacity). The IETF-draft un-prefixed name; the
legacy alias X-RateLimit-Limit carries the same value. Rides every
response.
RateLimit-Remaininginteger
Request-rate budget: requests left in the current window. Legacy
alias: X-RateLimit-Remaining.
RateLimit-Resetinteger
Request-rate budget: integer delta-seconds until the window fully
refills (same unit as Retry-After). Legacy alias:
X-RateLimit-Reset.
Response
The clip was checked.
watermarkedboolean
Whether the clip carries the Speechify watermark.
Errors
400
Bad Request Error
413
Content Too Large Error
422
Unprocessable Entity Error
429
Too Many Requests Error
500
Internal Server Error
502
Bad Gateway Error
The public AI detection tool. Ask whether a clip carries the watermark
Speechify seals into audio it generates, with no account, no API key and
no credential of any kind.
verify answers; detect measures. This route returns a bare yes or no,
the way verifying a signature does. Its sibling
POST /v1/audio/watermark/detect takes an API key and returns the
detector’s confidence alongside the verdict.
This is the programmatic half of the tool published at
<https://speechify.ai/detect>, and it exists so the tool can be invoked
without visiting our website, as California’s AI Transparency Act
(BPC 22757.2) requires. Nothing about the clip is stored, and nothing
identifying about you is collected or retained.
The answer is a bare verdict. watermarked: true is positive evidence
that the audio came from Speechify synthesis. watermarked: false is
NOT proof that it did not: only models redeployed since the watermark
shipped mark their output, the detector needs at least three seconds of
clear speech to judge, and re-encoding or changing the speed of a clip
degrades the mark. Treat a negative as the absence of evidence rather
than as evidence of absence.
Because the tool takes no credential, it is rate-limited per client
address and shares a platform-wide budget: expect a 429 under sustained
automated use, and retry after the interval the response advertises.
Use POST /v1/audio/watermark/detect with an API key for the detector’s
confidence score and a per-workspace allowance of its own.
Unique identifier for this request, present on every response (2xx and
non-2xx alike). If the caller sends a Speechify-Request-Id request
header the server echoes it back (sanitized and length-capped) so one
logical request can be traced end-to-end; otherwise the server generates
a fresh value. Log it on every response and quote it in support requests
it is the stable handle that ties your observation to Speechify’s
server-side logs, and it matches the request_id field in the error
envelope.
The legacy alias X-Request-ID carries the same value and is still
accepted on requests, until 2027-07-24. Prefer the un-prefixed name
(RFC 6648).