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
curl -X POST https://api.speechify.ai/v1/audio/speech \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"input": "Hello! This is the Speechify text-to-speech API.",
"voice_id": "geffen_32",
"audio_format": "mp3",
"model": "simba-3.2"
}'
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. 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.