Inworld TTS 2 API, Inworld TTS 1.5 Max API, Inworld TTS 1.5 Mini API: Pricing, Documentation
by Inworld
Inworld TTS API converts text into highly expressive character speech. It enables real-time vocal generation with customizable emotional depth and inflection. Developers can instantly integrate dynamic voice lines into interactive narrative experiences. This engine ensures low-latency playback for conversational AI and gaming assets.

Models Version
Inworld TTS 2 API Documentation
Inworld's flagship voice model, with 90+ voices and inline direction — write [whisper] or [say excitedly] straight into the text. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the audio.
POST https://gateway.pixazo.ai/inworld-tts-2/v1/text-to-speechAuthentication
All requests require an API key passed via header.
| Header | Type | Required | Description |
|---|---|---|---|
| Ocp-Apim-Subscription-Key | string | Yes | Your API subscription key |
Text to Speech - Inworld TTS 2
Request Code
POST https://gateway.pixazo.ai/inworld-tts-2/v1/text-to-speech
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
{
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}import requests
url = "https://gateway.pixazo.ai/inworld-tts-2/v1/text-to-speech"
headers = {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}
resp = requests.post(url, json=data, headers=headers)
print(resp.json())const res = await fetch("https://gateway.pixazo.ai/inworld-tts-2/v1/text-to-speech", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
},
body: JSON.stringify({
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
})
});
console.log(await res.json());curl -X POST 'https://gateway.pixazo.ai/inworld-tts-2/v1/text-to-speech' \
-H 'Content-Type: application/json' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
--data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "Dennis"}'Output
{
"request_id": "inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}Webhook (Optional)
Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.
| Header | Required | Description |
|---|---|---|
| X-Webhook-URL | To enable | HTTPS URL to receive the Webhook callback. |
| X-Webhook-Mode | No | terminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks). |
Example: enable Webhook
curl -X POST 'https://gateway.pixazo.ai/inworld-tts-2/v1/text-to-speech' \
-H 'Content-Type: application/json' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
-H 'X-Webhook-URL: https://your-server.com/webhook' \
--data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "Dennis"}'Callback Payload (success)
{
"request_id": "inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "inworld-tts-2",
"output": {
"media_url": [
"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
],
"media_type": "audio/mpeg"
},
"created_at": "2026-08-01T09:14:16.102Z",
"completed_at": "2026-08-01T09:14:22.870Z"
}Failure callback shape
{
"request_id": "inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "ERROR",
"model_id": "inworld-tts-2",
"error": "Description of the failure"
}Delivery semantics
- terminal mode: one Webhook callback when the request is COMPLETED or ERROR.
- sync mode: a Webhook callback on each status change.
- Callbacks are idempotent on
request_id— de-duplicate on it. - Respond
200within a few seconds; the Webhook endpoint must be HTTPS.
Request Parameters
| Parameter | Required | Type | Default | Allowed values / range | Description |
|---|---|---|---|---|---|
text | Yes | string | — | up to 2,000 characters | The text to speak. Note this limit is tighter than most models — split longer copy into several requests. |
voice_id | Yes | string | — | e.g. Dennis, Loretta, Hank | Which Inworld voice to use. |
output_format | No | string | mp3 | mp3, opus, wav, flac | Output container. |
temperature | No | number | 1.1 | 0.01 – 2 | Higher values give more expressive, more variable delivery; lower values are flatter and more consistent. |
speaking_rate | No | number | 1 | 0.5 – 1.5 | Speed multiplier. |
timestamp_type | No | string | none | none, word, character | Request word- or character-level timings alongside the audio. |
Voices
90+ voices across 15 production languages.
Example Request
{
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}Example Response
{
"request_id": "inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}Request Headers
| Header | Required | Description |
|---|---|---|
| Content-Type | Yes | application/json |
| Ocp-Apim-Subscription-Key | Yes | Your API subscription key. |
| X-Webhook-URL | No | Enable Webhook callbacks (see Webhook section). |
Response Handling
| Status Code | Meaning |
|---|---|
| 202 | Accepted — request queued; returns request_id and polling_url. |
| 400 | Bad request — a missing or out-of-range parameter. The message names the field. |
| 401 | Unauthorized — missing or invalid subscription key. |
| 402 | Insufficient balance. |
| 429 | Too many requests. |
| 500 | Internal server error. |
Retrieving Results
Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or ERROR), then download output.media_url.
curl 'https://gateway.pixazo.ai/v2/requests/status/inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'Completed response
{
"request_id": "inworld-tts-2_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "inworld-tts-2",
"output": {
"media_url": [
"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
],
"media_type": "audio/mpeg"
},
"created_at": "2026-08-01T09:14:16.102Z",
"completed_at": "2026-08-01T09:14:22.870Z"
}Response Fields
| Field | Type | Description |
|---|---|---|
| request_id | string | Unique request identifier. |
| status | string | QUEUED, PROCESSING, COMPLETED or ERROR. |
| model_id | string | The model that handled the request. |
| output.media_url | array | URL of the generated audio file. |
| output.media_type | string | MIME type of the audio. |
| created_at | string | Request creation timestamp. |
| completed_at | string | Completion timestamp. |
| error | string | Error message when status is ERROR. |
Status Values & Flow
QUEUED → PROCESSING → COMPLETED (success) or ERROR (failure).
Pricing
Billed at $0.025 per 1,000 characters of input text, rounded up to the next whole 1,000. You are charged for the text you submit, not the length of the audio produced.
| Input text | Billed blocks | Cost |
|---|---|---|
| A short sentence (~50 characters) | 1 | $0.025 |
| A paragraph (~800 characters) | 1 | $0.025 |
| A 3,000-character article | 3 | $0.075 |
| 10,000 characters | 10 | $0.25 |
Failed requests are not billed.
Inworld TTS 2 API Pricing
No data available
Could not load current pricing
Inworld TTS 1.5 Max API Documentation
The stability-focused Inworld tier: sub-250ms latency with the steadiest delivery of the 1.5 line. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the audio.
POST https://gateway.pixazo.ai/inworld-tts-1-5-max/v1/text-to-speechAuthentication
All requests require an API key passed via header.
| Header | Type | Required | Description |
|---|---|---|---|
| Ocp-Apim-Subscription-Key | string | Yes | Your API subscription key |
Text to Speech - Inworld TTS 1.5 Max
Request Code
POST https://gateway.pixazo.ai/inworld-tts-1-5-max/v1/text-to-speech
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
{
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}import requests
url = "https://gateway.pixazo.ai/inworld-tts-1-5-max/v1/text-to-speech"
headers = {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}
resp = requests.post(url, json=data, headers=headers)
print(resp.json())const res = await fetch("https://gateway.pixazo.ai/inworld-tts-1-5-max/v1/text-to-speech", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
},
body: JSON.stringify({
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
})
});
console.log(await res.json());curl -X POST 'https://gateway.pixazo.ai/inworld-tts-1-5-max/v1/text-to-speech' \
-H 'Content-Type: application/json' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
--data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "Dennis"}'Output
{
"request_id": "inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}Webhook (Optional)
Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.
| Header | Required | Description |
|---|---|---|
| X-Webhook-URL | To enable | HTTPS URL to receive the Webhook callback. |
| X-Webhook-Mode | No | terminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks). |
Example: enable Webhook
curl -X POST 'https://gateway.pixazo.ai/inworld-tts-1-5-max/v1/text-to-speech' \
-H 'Content-Type: application/json' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
-H 'X-Webhook-URL: https://your-server.com/webhook' \
--data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "Dennis"}'Callback Payload (success)
{
"request_id": "inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "inworld-tts-1-5-max",
"output": {
"media_url": [
"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
],
"media_type": "audio/mpeg"
},
"created_at": "2026-08-01T09:14:16.102Z",
"completed_at": "2026-08-01T09:14:22.870Z"
}Failure callback shape
{
"request_id": "inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "ERROR",
"model_id": "inworld-tts-1-5-max",
"error": "Description of the failure"
}Delivery semantics
- terminal mode: one Webhook callback when the request is COMPLETED or ERROR.
- sync mode: a Webhook callback on each status change.
- Callbacks are idempotent on
request_id— de-duplicate on it. - Respond
200within a few seconds; the Webhook endpoint must be HTTPS.
Request Parameters
| Parameter | Required | Type | Default | Allowed values / range | Description |
|---|---|---|---|---|---|
text | Yes | string | — | up to 2,000 characters | The text to speak. Note this limit is tighter than most models — split longer copy into several requests. |
voice_id | Yes | string | — | e.g. Dennis, Loretta, Hank | Which Inworld voice to use. |
output_format | No | string | mp3 | mp3, opus, wav, flac | Output container. |
temperature | No | number | 1.1 | 0.01 – 2 | Higher values give more expressive, more variable delivery; lower values are flatter and more consistent. |
speaking_rate | No | number | 1 | 0.5 – 1.5 | Speed multiplier. |
timestamp_type | No | string | none | none, word, character | Request word- or character-level timings alongside the audio. |
Voices
80+ voices across 15 languages.
Example Request
{
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}Example Response
{
"request_id": "inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}Request Headers
| Header | Required | Description |
|---|---|---|
| Content-Type | Yes | application/json |
| Ocp-Apim-Subscription-Key | Yes | Your API subscription key. |
| X-Webhook-URL | No | Enable Webhook callbacks (see Webhook section). |
Response Handling
| Status Code | Meaning |
|---|---|
| 202 | Accepted — request queued; returns request_id and polling_url. |
| 400 | Bad request — a missing or out-of-range parameter. The message names the field. |
| 401 | Unauthorized — missing or invalid subscription key. |
| 402 | Insufficient balance. |
| 429 | Too many requests. |
| 500 | Internal server error. |
Retrieving Results
Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or ERROR), then download output.media_url.
curl 'https://gateway.pixazo.ai/v2/requests/status/inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'Completed response
{
"request_id": "inworld-tts-1-5-max_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "inworld-tts-1-5-max",
"output": {
"media_url": [
"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
],
"media_type": "audio/mpeg"
},
"created_at": "2026-08-01T09:14:16.102Z",
"completed_at": "2026-08-01T09:14:22.870Z"
}Response Fields
| Field | Type | Description |
|---|---|---|
| request_id | string | Unique request identifier. |
| status | string | QUEUED, PROCESSING, COMPLETED or ERROR. |
| model_id | string | The model that handled the request. |
| output.media_url | array | URL of the generated audio file. |
| output.media_type | string | MIME type of the audio. |
| created_at | string | Request creation timestamp. |
| completed_at | string | Completion timestamp. |
| error | string | Error message when status is ERROR. |
Status Values & Flow
QUEUED → PROCESSING → COMPLETED (success) or ERROR (failure).
Pricing
Billed at $0.035 per 1,000 characters of input text, rounded up to the next whole 1,000. You are charged for the text you submit, not the length of the audio produced.
| Input text | Billed blocks | Cost |
|---|---|---|
| A short sentence (~50 characters) | 1 | $0.035 |
| A paragraph (~800 characters) | 1 | $0.035 |
| A 3,000-character article | 3 | $0.105 |
| 10,000 characters | 10 | $0.35 |
Failed requests are not billed.
Inworld TTS 1.5 Max API Pricing
No data available
Could not load current pricing
Inworld TTS 1.5 Mini API Documentation
The fastest and cheapest Inworld tier, around 120ms latency — built for live voice agents where responsiveness beats polish. Asynchronous: submit returns a request_id; poll the status endpoint until the request is COMPLETED, then download the audio.
POST https://gateway.pixazo.ai/inworld-tts-1-5-mini/v1/text-to-speechAuthentication
All requests require an API key passed via header.
| Header | Type | Required | Description |
|---|---|---|---|
| Ocp-Apim-Subscription-Key | string | Yes | Your API subscription key |
Text to Speech - Inworld TTS 1.5 Mini
Request Code
POST https://gateway.pixazo.ai/inworld-tts-1-5-mini/v1/text-to-speech
Content-Type: application/json
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
{
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}import requests
url = "https://gateway.pixazo.ai/inworld-tts-1-5-mini/v1/text-to-speech"
headers = {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}
resp = requests.post(url, json=data, headers=headers)
print(resp.json())const res = await fetch("https://gateway.pixazo.ai/inworld-tts-1-5-mini/v1/text-to-speech", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
},
body: JSON.stringify({
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
})
});
console.log(await res.json());curl -X POST 'https://gateway.pixazo.ai/inworld-tts-1-5-mini/v1/text-to-speech' \
-H 'Content-Type: application/json' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
--data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "Dennis"}'Output
{
"request_id": "inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}Webhook (Optional)
Instead of polling, you can receive a Webhook callback when the request reaches a terminal state. Provide a Webhook URL via header on the submit request.
| Header | Required | Description |
|---|---|---|
| X-Webhook-URL | To enable | HTTPS URL to receive the Webhook callback. |
| X-Webhook-Mode | No | terminal (default, one callback on COMPLETED/ERROR) or sync (per-poll callbacks). |
Example: enable Webhook
curl -X POST 'https://gateway.pixazo.ai/inworld-tts-1-5-mini/v1/text-to-speech' \
-H 'Content-Type: application/json' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY' \
-H 'X-Webhook-URL: https://your-server.com/webhook' \
--data-raw '{"text": "Hello from Pixazo. This is a text to speech demo.", "voice_id": "Dennis"}'Callback Payload (success)
{
"request_id": "inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "inworld-tts-1-5-mini",
"output": {
"media_url": [
"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
],
"media_type": "audio/mpeg"
},
"created_at": "2026-08-01T09:14:16.102Z",
"completed_at": "2026-08-01T09:14:22.870Z"
}Failure callback shape
{
"request_id": "inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "ERROR",
"model_id": "inworld-tts-1-5-mini",
"error": "Description of the failure"
}Delivery semantics
- terminal mode: one Webhook callback when the request is COMPLETED or ERROR.
- sync mode: a Webhook callback on each status change.
- Callbacks are idempotent on
request_id— de-duplicate on it. - Respond
200within a few seconds; the Webhook endpoint must be HTTPS.
Request Parameters
| Parameter | Required | Type | Default | Allowed values / range | Description |
|---|---|---|---|---|---|
text | Yes | string | — | up to 2,000 characters | The text to speak. Note this limit is tighter than most models — split longer copy into several requests. |
voice_id | Yes | string | — | e.g. Dennis, Loretta, Hank | Which Inworld voice to use. |
output_format | No | string | mp3 | mp3, opus, wav, flac | Output container. |
temperature | No | number | 1.1 | 0.01 – 2 | Higher values give more expressive, more variable delivery; lower values are flatter and more consistent. |
speaking_rate | No | number | 1 | 0.5 – 1.5 | Speed multiplier. |
timestamp_type | No | string | none | none, word, character | Request word- or character-level timings alongside the audio. |
Voices
80+ voices across 15 languages.
Example Request
{
"text": "Hello from Pixazo. This is a text to speech demo.",
"voice_id": "Dennis"
}Example Response
{
"request_id": "inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "QUEUED",
"polling_url": "https://gateway.pixazo.ai/v2/requests/status/inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}Request Headers
| Header | Required | Description |
|---|---|---|
| Content-Type | Yes | application/json |
| Ocp-Apim-Subscription-Key | Yes | Your API subscription key. |
| X-Webhook-URL | No | Enable Webhook callbacks (see Webhook section). |
Response Handling
| Status Code | Meaning |
|---|---|
| 202 | Accepted — request queued; returns request_id and polling_url. |
| 400 | Bad request — a missing or out-of-range parameter. The message names the field. |
| 401 | Unauthorized — missing or invalid subscription key. |
| 402 | Insufficient balance. |
| 429 | Too many requests. |
| 500 | Internal server error. |
Retrieving Results
Poll the status endpoint with the request_id from the submit response until status is COMPLETED (or ERROR), then download output.media_url.
curl 'https://gateway.pixazo.ai/v2/requests/status/inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY'Completed response
{
"request_id": "inworld-tts-1-5-mini_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "COMPLETED",
"model_id": "inworld-tts-1-5-mini",
"output": {
"media_url": [
"https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/{request_id}/output.mp3"
],
"media_type": "audio/mpeg"
},
"created_at": "2026-08-01T09:14:16.102Z",
"completed_at": "2026-08-01T09:14:22.870Z"
}Response Fields
| Field | Type | Description |
|---|---|---|
| request_id | string | Unique request identifier. |
| status | string | QUEUED, PROCESSING, COMPLETED or ERROR. |
| model_id | string | The model that handled the request. |
| output.media_url | array | URL of the generated audio file. |
| output.media_type | string | MIME type of the audio. |
| created_at | string | Request creation timestamp. |
| completed_at | string | Completion timestamp. |
| error | string | Error message when status is ERROR. |
Status Values & Flow
QUEUED → PROCESSING → COMPLETED (success) or ERROR (failure).
Pricing
Billed at $0.015 per 1,000 characters of input text, rounded up to the next whole 1,000. You are charged for the text you submit, not the length of the audio produced.
| Input text | Billed blocks | Cost |
|---|---|---|
| A short sentence (~50 characters) | 1 | $0.015 |
| A paragraph (~800 characters) | 1 | $0.015 |
| A 3,000-character article | 3 | $0.045 |
| 10,000 characters | 10 | $0.15 |
Failed requests are not billed.
Inworld TTS 1.5 Mini API Pricing
No data available
Could not load current pricing
⚡ 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).
〰 Uptime
Percent of generations that succeeded over the selected period, per model version.