Create Voice

Create a personal (cloned) voice for the user from a 10-30 second audio sample. Cloned voices are usable self-serve on `simba-english` and `simba-multilingual`. Synthesizing a cloned voice on `simba-3.2` currently requires manual Speechify review and approval of the voice key while we evaluate stronger safeguards, given the model's quality; contact Speechify to have a cloned voice approved for `simba-3.2`. Simba 3.0 does not accept cloned voices.

Authentication

AuthorizationBearer

Enter your API key with the Bearer prefix, e.g. ‘Bearer sk_…’.

Headers

Speechify-VersionstringOptional
Idempotency-KeystringOptional<=255 characters
A client-generated key (an opaque string, max 255 chars) that makes a side-effect POST safe to retry: the server runs the operation exactly once and replays the first response (its status and body) for 24 hours. Reusing a key with a different request body, or while the first request is still in flight, returns `409 idempotency_conflict`. A replayed response carries the `Idempotent-Replayed: true` header.

Request

This endpoint expects a multipart form with multiple files.
namestringRequired
Name of the personal voice
localestringOptionalDefaults to en-US

Native language (locale) of the personal voice (e.g. en-US, es-ES, etc.)

genderenumRequired

Gender marker for the personal voice male GenderMale female GenderFemale not_specified GenderNotSpecified

Allowed values:
samplefileRequired
Audio sample file
avatarfileOptional
Avatar image file
consentstringRequired

A string representing the user consent information in JSON format This should include the fullName and email of the consenting individual. For example, {"fullName": "John Doe", "email": "john@example.com"}

Response headers

X-Request-IDstring
Unique identifier for this request, present on every response (2xx and non-2xx alike). If the caller sends an `X-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.
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

A created voice
display_namestring
genderenum
localestring
idstring
modelslist of objects
typeenum
avatar_imagestring or null
preview_audiostring or null
tagslist of strings or null

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
409
Conflict Error
422
Unprocessable Entity Error
429
Too Many Requests Error
500
Internal Server Error
502
Bad Gateway Error
503
Service Unavailable Error