Introduction
Send the text to be read and, optionally, one of nine voices, a short note on delivery and a language. The task returns one MP3 file (24 kHz mono) with the script read in that voice. instructions takes plain-language direction such as tone, emotion or pace and is not read aloud. SpicyAPI applies no content filter: NSFW scripts are read as written. You are billed per 1,000 characters of the text you send, with a minimum of 100 characters.
| Field | Value |
|---|---|
| Input | Text |
| Output | Audio |
| Required field | text — 1 to 2,000 characters |
| Optional fields |
|
| Result | One MP3 file, 24 kHz, mono |
| Billed quantity | Characters of text sent, per 1,000; minimum 100 |
| Typical time | About 30 seconds for 300 characters |
| Retention | Generated audio is kept for 14 days |
Request parameters
| Parameter | Required | Description |
|---|---|---|
text | Yes | The words to be spoken, exactly as written. Billed per 1,000 characters, minimum 100 per request. at least 1 characters · at most 2000 characters |
voice_id | No | One of nine preset voices. Defaults to Serena. |
instructions | No | Plain-language direction on tone, emotion or pace. Shapes the delivery and is not spoken. at most 1000 characters |
language | No | Language of the reading. auto detects it from the script. |
Pricing
$0.068 / 1,000 characters
Billed per 1,000 characters of text sent, counting spaces and punctuation, with a minimum of 100 characters per request. The quote before the run is the final price.
Use cases
Character and companion voices
Nine distinct voices — from bright and edgy to low and mellow — each with a short note on how they talk, kept the same for a whole series.
Chinese, Japanese and Korean lines
Dylan and Eric speak Beijing and Sichuan dialects, and Ono_Anna and Sohee are native Japanese and Korean speakers, so lines in those languages sound natural rather than accented.
Uncensored audio stories
NSFW scripts are read as written. In our tests the model spoke every word of the monologues and narration we sent without skipping or cutting the clip short.
Voice tracks for video
Generate the line here, then hand the MP3 to a talking-avatar or lip-sync model so a face performs it.
Prompt guide & pro tips
Send the script in text
Write it exactly as it should be spoken, with punctuation for pauses. Up to 2,000 characters; shorter than 100 is billed as 100.
Pick a voice
voice_iddefaults to Serena, a warm, gentle female voice. Ryan and Aiden are English male voices; Ono_Anna and Sohee are Japanese and Korean; Dylan and Eric speak Beijing and Sichuan dialects.Describe the delivery
Put a sentence or two in instructions — for example 'breathless and teasing, close to the microphone'. It is not read aloud.
What it returns
One MP3 file per task, 24 kHz mono. The file is copied to SpicyAPI storage and kept for 14 days. There are no word timings or subtitles in the result.
Choosing a voice
voice_id takes one of nine preset voices and defaults to Serena:
Serena— warm, gentle young femaleVivian— bright, slightly edgy young femaleUncle_Fu— seasoned male with a low, mellow timbreRyan— dynamic male with strong rhythmic driveAiden— sunny American maleOno_Anna— playful Japanese femaleSohee— warm, emotional Korean femaleDylan— youthful male speaking Beijing dialectEric— lively male speaking Sichuan (Chengdu) dialect
Directing the delivery
instructions takes a sentence or two of plain language about how to read: tone, emotion, pace. It shapes the performance and is not spoken. Speed and pitch sliders are not exposed; ask for them in instructions.
Language
language defaults to auto, which detects the language from the script. Set zh, en, de, fr, es, it, pt, ru, ja or ko when a short or mixed script is read in the wrong one.
Billing
Billed per 1,000 characters of text, counting spaces, punctuation and line breaks, with a minimum of 100 characters per request; instructions is free. The character count is known before the task starts, so the quote is the final charge. Failed requests are not charged.
Content
SpicyAPI adds no content filter. In our tests unfiltered scripts were read word for word, with nothing skipped and no clip ended early.
SpicyAPI adds no content filter: NSFW scripts are read as written. You are responsible for the scripts you send and for how you use the resulting audio, including not passing it off as a real person's words.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "alibaba/qwen-3-tts/text-to-speech",
"input": {
"text": "Welcome back. Your files finished rendering a minute ago and are ready to download.",
"language": "auto",
"voice_id": "Serena"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.





