Verbatik LogoVerbatik
Developer API

Speech API

Render up to 50 speaker blocks into one audio result.

Use POST /speech with generations:write scope. Speech is asynchronous and uses the same workspace credits as app generation.

Models and voices

  • verbatik/speech-lite: preset voices from the Speech Lite catalog.
  • fal-ai/minimax/speech-2.8-turbo: Speech Cloning presets and workspace custom voices.

Use GET /voices/catalog for preset IDs. For custom voices, use the resource ID returned by /voices with the Speech Cloning model.

Create speech

curl --fail-with-body https://app.verbatik.com/api/v1/speech \
  -H "Authorization: Bearer $VERBATIK_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: narration-001' \
  -d '{
    "model": "fal-ai/minimax/speech-2.8-turbo",
    "blocks": [
      {"text":"Welcome to our new collection.","voice":"Wise_Woman"},
      {"text":"Let us show you how it was made.","voice":"Deep_Voice_Man"}
    ],
    "settings": {"speed":1,"volume":1,"loudness_normalization":true},
    "delivery":"signed_url"
  }'

Each request contains 1–50 blocks. Each block requires non-empty text and can provide a voice. The total text across the request is limited to 25,000 characters for Speech Lite and 5,000 for Speech Cloning. Split longer scripts into smaller requests.

Settings

SettingRange or default
speed0.5–2, default 1
volume0.1–10, default 1
loudness_normalizationDefault true
text_normalizationDefault false
tag_compatibleDefault true

These are JSON fields, not legacy X-Voice-ID headers. Use supported expressive tags for the model; do not send an old SSML request body to this endpoint.

Retrieve the result

Creation returns 202. Poll GET /speech/{id} with generations:read, or inspect the job through GET /jobs/{id}. Read the completed outputs and any errors before using the audio.

A new request creates a new charged generation. Reuse the same idempotency key and body when retrying the same request after a network failure.

On this page