API: list available TTS models with `GET /v1/audio/models`

GET /v1/audio/models returns the text-to-speech models you can pass as the model parameter, so you can populate a model picker at runtime instead of hardcoding the list.

1{
2 "models": [
3 { "id": "simba-english", "name": "Simba English", "default": true, "recommended": false, "description": "English-only synthesis; the model used when a request omits `model`.", "languages": ["en"] },
4 { "id": "simba-multilingual", "name": "Simba Multilingual", "default": false, "recommended": false, "description": "Synthesis across 30+ languages, including mixed-language input.", "languages": ["en", "fr-FR", "de-DE", "es-MX", ""] },
5 { "id": "simba-3.0", "name": "Simba 3.0", "default": false, "recommended": false, "description": "Earlier streaming-native model, English only. Superseded by simba-3.2.", "languages": ["en"] },
6 { "id": "simba-3.2", "name": "Simba 3.2", "default": false, "recommended": true, "description": "Streaming-native model with the lowest time-to-first-byte and richest expressivity, English only today.", "languages": ["en"] }

API: New `simba-3.2` streaming model (recommended)

simba-3.2 is now available on POST /v1/audio/speech and POST /v1/audio/stream via the model field. It is the go-forward Simba 3 model — streaming-native, with lower TTFB and richer expressivity than simba-3.0. We recommend simba-3.2 for new English integrations.

simba-3.2 serves from a curated voice allow-list. Pass one of its registered voice IDs as voice_id: beatrice_32, dominic_32, edmund_32, geffen_32, harper_32, hugh_32, imogen_32, wyatt_32.

API: voice-gender value `notSpecified` is now `not_specified`

The voice-gender enum value notSpecified is renamed not_specified so the gender vocabulary is consistent snake_case across the API. This affects the gender field on GET /v1/voices, GET /v1/voices/{voice_id}, and POST /v1/voices (request enum and response), and the male/female values are unchanged.

  • Before (pin 2026-06-27 or earlier): the unspecified gender is notSpecified.
  • After (2026-06-28+): the unspecified gender is not_specified.

API: `GET /v1/voices` returns an object envelope

GET /v1/voices now returns an object envelope instead of a bare JSON array, so the list can carry pagination and future sibling fields without another breaking change.

Before (pin 2026-06-26 or earlier): a bare array of voice objects.

After (2026-06-27+):

1{
2 "voices": [ { "id": "george", "display_name": "George", "...": "..." } ],
3 "next_cursor": null,
4 "has_more": false
5}

API version pinning with `Speechify-Version`

The API now supports date-based version pinning with the Speechify-Version request header.

  • Current version: 2026-06-25
  • Header format: YYYY-MM-DD
  • Resolution order: request header, workspace default, oldest supported version
  • Migration path: official SDKs pin their build-date version automatically; raw HTTP callers should send Speechify-Version explicitly.

Docs: response-streaming behaviour on `POST /v1/audio/stream` clarified

The documentation for POST /v1/audio/stream now describes the endpoint’s response shape accurately:

  • The response body is the raw audio bytes delivered over HTTP chunked transfer encoding. There is no JSON envelope and no Base64 encoding — that shape is what POST /v1/audio/speech returns.

  • The Accept header selects the container/codec. Each format’s response Content-Type and codec are now listed explicitly:

    AcceptResponse Content-TypeCodec
    audio/mpegaudio/mpegMP3, 64 kbps
    audio/oggaudio/oggOpus
    audio/aacaudio/aacAAC-LC
    audio/pcmaudio/L16; rate=24000; channels=1Raw 16-bit signed little-endian PCM
  • audio/pcm returns the IANA-registered audio/L16 type with rate and channels parameters per RFC 4856. Byte order is little-endian (industry convention, not the big-endian default the RFC specifies). The 200 response in the API reference now lists audio/L16 alongside audio/mpeg / audio/ogg / audio/aac.

API: New `simba-3.0` streaming model

simba-3.0 is now available on POST /v1/audio/speech and POST /v1/audio/stream via the model field. It’s the new streaming-native voice model with lower TTFB and richer expressivity, including direct support for per-voice speaking-rate and ADV (Arousal, Dominance, Valence) emotion controls inherited from the voice catalog.

1{
2 "input": "Hello, world!",
3 "voice_id": "george",
4 "model": "simba-3.0"
5}

New API Domain: api.speechify.ai

The Speechify API is now available at https://api.speechify.ai.

API: Concurrency Limits for TTS Endpoints

We’ve introduced concurrency limits to prevent abuse and ensure fair usage across all users. These limits restrict the number of simultaneous in-flight text-to-speech requests per user.

API: Differentiated Rate Limits for Free and Paid Users

We’ve introduced differentiated rate limiting based on user plan type to ensure fair usage and optimal performance for all users.

API: Added Support for PCM Audio Format

Support for the PCM audio format is now available for both the Speech and Stream endpoints.

SDK: New Typescript SDK

We’ve published a new Typescript SDK. Try it out:

$npm install @speechify/api

Together with the release, the old @speechify/api-sdk package is now deprecated.

API: Deprecated POST /v1/auth/token endpoint

The POST /v1/auth/token endpoint is now deprecated. We will only support API Key authentication moving forward.

API: Download Personal Voice Sample

We’ve added a new endpoint to download personal cloned voice sample file

API: Text Normalization

We’ve added a new option to the API to normalize the text. If enabled, it will transform numbers, dates, etc. into words. For example, “55” is normalized into “fifty five”. This can increase latency due to additional processing required for text normalization.

API: Loudness Normalization Update

Previously, the loudness normalization was enabled by default. Now it’s disabled by default as we believe, together with our internal model improvements, it will improve the overall quality of the audio.

SDK: Python

We’ve released a new Python SDK. Checkout the repository for more information.

API: Locale support for personal voices

When creating a personal voice, the locale can be specified. Please refer to the full API reference.

API: Streaming format fallback

Streaming endpoint now defaults to audio/mpeg when the Accept header is not provided or is invalid.

API: Voices avatar and gender support

When cloning the voice, avatar and gender can be specified. Please refer to the full API reference.