Skip to main content
POST
Generate speech audio from text using a public voice or a custom voice you can access. The result includes a task ID, audio URL, and a subtitle URL when available.

Choose a model

model_id is optional and applies only to ElevenLabs voices. Empty strings, whitespace, null, non-string values, and all other model IDs are rejected. For a voice from another provider, omit model_id to keep that provider’s existing behavior; explicitly choosing an ElevenLabs model is rejected. Find a voice_id in Get Voices or Get Custom Voices.

Pauses and audio tags

ElevenLabs documents different text controls for these models: Place the control directly in text; no additional tag parameter is needed. Pause tags do not specify a fixed number of seconds, so they are not an exact replacement for a timed SSML break. Delivery can vary with the voice and context. ElevenLabs also warns that excessive SSML breaks can cause faster speech or audio artifacts. Jogg adapts pause syntax when sending the synthesis request: Supported millisecond break values are converted to seconds before selecting the v4 Turbo pause tag. These are Jogg compatibility rules; ElevenLabs does not define an exact duration for each pause tag. Changing models can therefore change the length of the pause. Flash only converts these three pause tags and preserves other bracketed text. Delivery tags such as [whispers] need v4 Turbo. Conversion uses a copy for synthesis and preserves your original text. Model selection, request identity, and billing continue to follow the rules on this page. New v4 Turbo subtitles omit complete square-bracket audio tags and SSML breaks. When adapting v4 pause tags for Flash, subtitles omit those controls and their converted breaks while retaining other bracketed text. These v4 compatibility paths split words at explicit pauses and preserve the returned timing gap. Native Flash SSML breaks continue to use the existing subtitle processing. The input-text fallback uses the same filtering when word timestamps are unavailable. A control-only result has no subtitle text. Existing subtitles are not rewritten. Flash v2.5 with a timed break:
v4 Turbo with delivery and pause tags:
Official ElevenLabs references (checked November 5, 2026):

Example: select v4 Turbo

To use the default Flash v2.5 model, omit model_id:

Retry the same request

Keep the returned task_id. Use the same optional idempotency_key only when retrying the same request. A key already used with a different explicit model causes a conflict; use a new key when intentionally changing the model or text. Synthesis consumes API credits based on the generated audio duration. After a timeout, check the existing speech task when its ID is known, or retry the unchanged request with its original key. Avoid creating another paid request just because the connection timed out.

Use the same selection through MCP

The jogg_post_audio_tts_synthesize tool accepts the same optional field under body.model_id. See MCP speech model selection for a tools/call example.

Authorizations

x-api-key
string
header
required

API key for authentication. Obtain your key from the JoggAI dashboard.

Body

application/json
text
string
required

Text to synthesize.

Minimum string length: 1
voice_id
string
required

Public voice or an authorized custom voice ID.

Minimum string length: 1
model_id
enum<string>
default:eleven_flash_v2_5

ElevenLabs-only speech model. Omit to use eleven_flash_v2_5 for ElevenLabs voices and retain the voice provider's existing behavior otherwise. Explicit values for other providers, empty strings, null, and unsupported model IDs are rejected.

Available options:
eleven_flash_v2_5,
eleven_v4_turbo
idempotency_key
string

Stable key for retries of this request. Use a new key for a different model or text.

Maximum string length: 255

Response

200 - application/json

Speech task result. Check the business code before reading data.

code
integer
required

Business status code:

  • 0 - Success
  • 10104 - Record not found
  • 10105 - Invalid API key
  • 18020 - Insufficient credit
  • 18025 - No permission to call APIs
  • 40000 - Parameter error
  • 50000 - System error
Example:

0

msg
string
required

Response message

Example:

"Success"

data
object