Tada TTS 3B API, Tada TTS 1B API: Pricing, Documentation

by Tada

Expressive voice cloning from a reference clip, in two sizes. The 3B model trades speed for a more natural read; the 1B is the budget tier.

Get API Key
Tada TTS API

Models Version

WELCOME BONUS

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

Tada 3B TTS API Documentation

https://gateway.pixazo.ai/tada-3b-tts/v1/text-to-speech

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Tada 3B TTS generate request - Tada 3B TTS

Request Code

POST https://gateway.pixazo.ai/tada-3b-tts/v1/text-to-speech
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "audio_url": "https://imagesai.appypie.com/7686410/K1D5kDJQ68R3DGvo6aKQ_017731469361782.mp3",
  "prompt": "Under the starlit sky, the storyteller began weaving tales of ancient kingdoms and forgotten heroes.",
  "language": "en"
}
import requests

url = "https://gateway.pixazo.ai/tada-3b-tts/v1/text-to-speech"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "audio_url": "https://imagesai.appypie.com/7686410/K1D5kDJQ68R3DGvo6aKQ_017731469361782.mp3",
    "prompt": "Under the starlit sky, the storyteller began weaving tales of ancient kingdoms and forgotten heroes.",
    "language": "en"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/tada-3b-tts/v1/text-to-speech';

const data = {
  audio_url: 'https://imagesai.appypie.com/7686410/K1D5kDJQ68R3DGvo6aKQ_017731469361782.mp3',
  prompt: 'Under the starlit sky, the storyteller began weaving tales of ancient kingdoms and forgotten heroes.',
  language: 'en'
};

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/tada-3b-tts/v1/text-to-speech" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "audio_url": "https://imagesai.appypie.com/7686410/K1D5kDJQ68R3DGvo6aKQ_017731469361782.mp3",
    "prompt": "Under the starlit sky, the storyteller began weaving tales of ancient kingdoms and forgotten heroes.",
    "language": "en"
  }'

Output

{
  "request_id": "tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "tada-3b-tts",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.wav"
    ],
    "media_type": "audio/wav"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "tada-3b-tts",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - Tada 3B TTS generate request

Field Type Required Default Description
audio_url string Yes URL to an audio file containing a voice sample for cloning. Must be accessible publicly.
prompt string Yes The text to be synthesized into speech.
language string Yes Language code for synthesis (e.g., "en", "es", "fr").
temperature number No 0.7 Controls randomness in generation. Lower values produce more deterministic outputs.
top_p number No 0.9 Nucleus sampling parameter. Limits sampling to the most probable tokens whose cumulative probability exceeds this value.
repetition_penalty number No 1.0 Penalizes repeated tokens. Values > 1.0 reduce repetition.
acoustic_cfg_scale number No 1.5 Controls adherence to the acoustic conditioning (voice clone). Higher values increase fidelity to the source voice.
noise_temperature number No 0.8 Controls the amount of stochastic noise added during generation. Higher values increase variability.
num_inference_steps integer No 20 Number of refinement steps during audio generation. Higher values improve quality at the cost of speed.
speed_up_factor number No 1.0 Factor by which to accelerate the output audio. Values > 1.0 speed up playback.
output_format string No wav Output audio format. Supported values: "wav", "mp3", "flac".

Minimum Request

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'tada-3b-tts' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "tada-3b-tts",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "tada-3b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "tada-3b-tts",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/tada-3b-tts_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Request Headers

HeaderValue
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_API_KEY

Tada 3B TTS API Pricing

Your request will cost $0.08 per 1,000 characters.
the higher-quality Tada voice at $0.08 per 1,000 characters
equivalent to $80 per 1M characters
2. Tada 1B TTS

Tada 1B TTS API Documentation

https://gateway.pixazo.ai/tada-1b-tts/v1/text-to-speech

Authentication

All requests require an API key passed via header.

Header Type Required Description
Ocp-Apim-Subscription-Key string Yes Your API subscription key

Tada 1B TTS generate request - Tada 1B TTS

Request Code

POST https://gateway.pixazo.ai/tada-1b-tts/v1/text-to-speech
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "audio_url": "https://imagesai.appypie.com/7686410/tTbP36zSI0eJJ1VF3cQ8_017731468841358.mp3",
  "prompt": "The morning news anchor delivered the breaking story with calm authority and measured precision.",
  "language": "en"
}
import requests

url = "https://gateway.pixazo.ai/tada-1b-tts/v1/text-to-speech"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "audio_url": "https://imagesai.appypie.com/7686410/tTbP36zSI0eJJ1VF3cQ8_017731468841358.mp3",
    "prompt": "The morning news anchor delivered the breaking story with calm authority and measured precision.",
    "language": "en"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
fetch('https://gateway.pixazo.ai/tada-1b-tts/v1/text-to-speech', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Cache-Control': 'no-cache',
    'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
  },
  body: JSON.stringify({
    audio_url: 'https://imagesai.appypie.com/7686410/tTbP36zSI0eJJ1VF3cQ8_017731468841358.mp3',
    prompt: 'The morning news anchor delivered the breaking story with calm authority and measured precision.',
    language: 'en'
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/tada-1b-tts/v1/text-to-speech" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "audio_url": "https://imagesai.appypie.com/7686410/tTbP36zSI0eJJ1VF3cQ8_017731468841358.mp3",
    "prompt": "The morning news anchor delivered the breaking story with calm authority and measured precision.",
    "language": "en"
  }'

Output

{
  "request_id": "tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your submit request to receive a POST callback when the job completes — no polling required.

Using curl? These are HTTP request headers — pass each with -H, e.g. -H "X-Webhook-URL: https://your-server.com/webhook/callback". Do not paste them as bare lines, and end every line of a multi-line command with \.

Webhook Headers

HeaderRequiredDefaultDescription
X-Webhook-URLYes (to enable)HTTPS endpoint on your server that will receive the POST callback. Must respond 2xx within a few seconds (process async if needed).
X-Webhook-ModeNoterminalterminal — fires once at the final status (COMPLETED/FAILED/ERROR). sync — fires on every poll cycle plus the terminal event, and caps the queue’s polling delay at 15s for tighter progress updates.

Example: enable webhook

X-Webhook-URL: https://your-server.com/webhook/callback
X-Webhook-Mode: terminal

Callback Payload

Your endpoint receives a POST application/json with the same shape as the GET /v2/requests/status/{request_id} response. Example terminal callback (mode terminal):

{
  "request_id": "tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "tada-1b-tts",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/output.wav"
    ],
    "media_type": "audio/wav"
  },
  "created_at": "2026-05-22T13:17:32.110Z",
  "updated_at": "2026-05-22 13:19:23",
  "completed_at": "2026-05-22 13:19:23"
}

Failure callback shape

{
  "request_id": "tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "tada-1b-tts",
  "error": "Description of the error",
  "output": null,
  "created_at": "...",
  "updated_at": "...",
  "completed_at": "..."
}

Delivery semantics

  • terminal mode (default) — exactly one POST when the request reaches a terminal status. No callback during PROCESSING.
  • sync modePOST on every status poll (with delay capped at ~15s) plus a final POST at terminal status. Use when you want progress updates.
  • Idempotency — use request_id as your idempotency key. Network retries can deliver the same callback more than once; your handler must tolerate duplicates.
  • Response — respond 200 OK within a few seconds. The queue does not block on slow handlers, but persistent failures may stop further deliveries.
  • HTTPS required — plain http:// URLs are rejected.

Request Parameters - Tada 1B TTS generate request

Field Type Required Default Description
audio_url string Yes URL to an audio file containing the voice sample to clone. Must be accessible publicly.
prompt string Yes The text to be synthesized into speech.
language string Yes Language code for synthesis (e.g., "en", "es", "fr").
temperature number No 0.7 Controls randomness in generation. Higher values increase diversity.
top_p number No 0.9 Nucleus sampling parameter. Limits sampling to the most probable tokens.
repetition_penalty number No 1.0 Penalizes repeated tokens. Values >1 reduce repetition.
acoustic_cfg_scale number No 1.5 Controls adherence to the reference audio. Higher values increase similarity.
noise_temperature number No 0.8 Controls stochasticity in the acoustic model. Higher values add more variation.
num_inference_steps integer No 20 Number of refinement steps during synthesis. Higher values improve quality.
speed_up_factor number No 1.0 Factor to accelerate or decelerate speech. Values >1 speed up, <1 slow down.
output_format string No wav Output audio format: wav, mp3, ogg, flac.

Minimum Request

{
  "audio_url": "https://imagesai.appypie.com/7686410/tTbP36zSI0eJJ1VF3cQ8_017731468841358.mp3",
  "prompt": "The morning news anchor delivered the breaking story with calm authority and measured precision.",
  "language": "en"
}

Full Request (all options)

{
  "audio_url": "https://imagesai.appypie.com/7686410/tTbP36zSI0eJJ1VF3cQ8_017731468841358.mp3",
  "prompt": "The morning news anchor delivered the breaking story with calm authority and measured precision.",
  "language": "en",
  "temperature": 0.6,
  "top_p": 0.9,
  "repetition_penalty": 1.1,
  "acoustic_cfg_scale": 1.6,
  "noise_temperature": 0.9,
  "num_inference_steps": 20,
  "speed_up_factor": 1,
  "output_format": "wav"
}

Response

{
  "request_id": "tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Type application/json
Cache-Control no-cache
Ocp-Apim-Subscription-Key Your API subscription key

Response Handling

Common status codes for Tada 1B TTS generate request.

Code Meaning
202 Accepted — Request queued
Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
Too Many Requests
500 Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'tada-1b-tts' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "tada-1b-tts",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "tada-1b-tts_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "tada-1b-tts",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/tada-1b-tts_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Tada 1B TTS API Pricing

Your request will cost $0.05 per 1,000 characters.
the budget Tada tier; generation can take several minutes
equivalent to $50 per 1M characters

⚡ Performance

Live usage measured on Pixazo's gateway, split by model version. Generation time is how long a generation takes end-to-end (lower is better). Success rate is the percent of generations that complete (higher is better).

Show data for the last
Generations
900last 30d
~30 per day
Success rate
66.7%
of completed generations
Generation time
7.1minavg
p95 8.3min
Requests
Jul 16max 300Aug 14
Tada 1B TTSAvg 17/day
Tada 3B TTSAvg 13/day
Generation Time
Jul 16max 9.9minAug 14
Tada 1B TTSAvg 6.7min
Tada 3B TTSAvg 7.4min
Error Rate
Jul 16max 66.7%Aug 14
Tada 1B TTSAvg 40.0%
Tada 3B TTSAvg 25.0%

〰 Uptime

Percent of generations that succeeded over the selected period, per model version.

Avg. Success Rate (30d)
66.67%
across all generations of this model family
Uptime
Jul 16max 100%Aug 14
Tada 1B TTSAvg 60.00%
Tada 3B TTSAvg 75.00%