Skip to navigation

SpeechifyAI Build API

REST endpoints for text-to-speech, streaming, and voice cloning

The SpeechifyAI Build API is a REST API at https://api.speechify.ai. Use it to generate speech from text, stream long-form audio, and clone voices from a short reference sample.

A minimal call. The request and response are generated from the API spec, so they stay in sync with the live endpoint.

POST
/v1/audio/speech
from speechify import Speechify
client = Speechify(
token="YOUR_TOKEN_HERE",
)
client.audio.speech(
audio_format="mp3",
input="Hello! This is the Speechify text-to-speech API.",
model="simba-3.2",
voice_id="geffen_32",
)
Response
{
"audio_data": "example",
"audio_format": "wav",
"billable_characters_count": 10,
"speech_marks": {
"chunks": [
{}
],
"end": 1,
"end_time": 1,
"start": 1,
"start_time": 1,
"type": "example",
"value": "example"
}
}

Explore

Response format

Non-streaming endpoints return JSON. Speech synthesis returns base64-encoded audio in audio_data. The streaming endpoint returns raw audio chunks via HTTP chunked transfer encoding.

Errors

Every non-2xx response uses the same JSON envelope:

{
"error": {
"code": "voice_not_found",
"message": "Voice 'voice_demo0001' does not exist."
},
"request_id": "7f3a2c1b4d5e6f7a"
}

Check error.code in your SDK exception handler - it is a stable, machine-readable identifier you can branch on. error.message is human-friendly and may change between releases. error.fields carries per-field validation errors when relevant, error.details carries structured context a flat field map cannot express, and error.docs_url links the page that resolves the error where one exists (today, the plan-limit 429s). All three are omitted when empty. request_id echoes the Speechify-Request-Id response header; quote it when filing support tickets.

See Get started for authentication and limits, and Idempotency for retry-safe writes.