Text to speech API · xAI
TTS V1 API pricing per 1,000 characters
Turn text into speech with xAI's TTS V1 through the Cut.Pro API. You see the price before you generate and pay only for what you use.
- Pay as you go, no subscription
- 15 free credits on a new account
- Free quote before every call
From$0.039per 1,000 charactersR$0.13 · 3 credits10,000 characters: $0.39Updated November 07, 2026
Pricing
TTS V1 pricing by mode and resolution
| Mode | Price per 1,000 characters | In reais | Credits |
|---|---|---|---|
| Text only | $0.039 | R$0.13 | 3 credits |
Updated November 07, 2026. Prices use the cheapest credit pack: 1 credit costs $0.0179 (R$0.0599).
Limits
What TTS V1 accepts in each request
- Modes
- Text only
- Billing
- by the characters read
Code
How to call TTS V1 free quote, generation and result
VOICE=$(curl -s "https://api.cut.pro/api/v1/models?endpoint=generations&kind=speech" \
-H "X-Api-Key: $CUTPRO_API_KEY" | jq -r '.models[] | select(.id == "xai/tts-v1") | .voices[0].id')
BODY=$(jq -cn --arg voice "$VOICE" '{"model":"xai/tts-v1","prompt":"Hi! This audio was generated with the Cut.Pro API.","voice":$voice}')
CREDITS=$(curl -s -X POST https://api.cut.pro/api/v1/generations/quote \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d "$BODY" | jq .credits)
curl -X POST "https://api.cut.pro/api/v1/generations?wait=60" \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d "$(jq -c --argjson credits "$CREDITS" '. + {credits: $credits}' <<< "$BODY")"const api = "https://api.cut.pro/api/v1";
const headers = { "X-Api-Key": process.env.CUTPRO_API_KEY, "Content-Type": "application/json" };
const { models } = await fetch(`${api}/models?endpoint=generations&kind=speech`, { headers }).then((res) => res.json());
const voice = models.find((model) => model.id === "xai/tts-v1").voices[0].id;
const body = {
model: "xai/tts-v1",
prompt: "Hi! This audio was generated with the Cut.Pro API.",
voice,
};
const quote = await fetch(`${api}/generations/quote`, { method: "POST", headers, body: JSON.stringify(body) }).then((res) => res.json());
let generation = await fetch(`${api}/generations?wait=60`, {
method: "POST",
headers: { ...headers, "Idempotency-Key": crypto.randomUUID() },
body: JSON.stringify({ ...body, credits: quote.credits }),
}).then((res) => res.json());
while (generation.status === "processing") {
generation = await fetch(`${api}/generations/${generation.id}?wait=60`, { headers }).then((res) => res.json());
}
console.log(generation.output?.url ?? generation.error_code);import os, uuid, requests
API = "https://api.cut.pro/api/v1"
headers = {"X-Api-Key": os.environ["CUTPRO_API_KEY"]}
models = requests.get(f"{API}/models", params={"endpoint": "generations", "kind": "speech"}, headers=headers).json()["models"]
voice = next(model for model in models if model["id"] == "xai/tts-v1")["voices"][0]["id"]
body = {
"model": "xai/tts-v1",
"prompt": "Hi! This audio was generated with the Cut.Pro API.",
"voice": voice,
}
quote = requests.post(f"{API}/generations/quote", json=body, headers=headers).json()
generation = requests.post(
f"{API}/generations",
params={"wait": 60},
json={**body, "credits": quote["credits"]},
headers={**headers, "Idempotency-Key": str(uuid.uuid4())},
).json()
while generation["status"] == "processing":
generation = requests.get(f"{API}/generations/{generation['id']}", params={"wait": 60}, headers=headers).json()
print(generation["output"]["url"] if generation["status"] == "ready" else generation["error_code"])Read the docsQuestions
API questions before your first call
- Each 1,000 characters cost $0.039, so 10,000 characters come to $0.39 (R$1.30, 22 credits).
- Create an account, make a key and send the request to the quote, which charges nothing. The 15 free credits cover 6,800 characters with TTS V1.
- No. Buy a credit pack by card, or in reais with Pix from Brazil, and spend it on TTS V1 and every other model with the same key.
- No. The Cut.Pro key calls TTS V1 without a xAI account, with one balance for every model in the catalog.
- Yes. With a CPF or CNPJ and full address in your billing details, the nota fiscal is issued after each payment is confirmed.
Still missing one? Help center
Compare
Other models of the same kind
- Gemini 3.1 Flash TTSGoogle · from $0.0724 per 1,000 charactersSee price
- Gemini 3.8 Flash TTSGoogle · from $0.0811 per 1,000 charactersSee price
- Qwen Audio 3 TTS FlashAlibaba · from $0.0292 per 1,000 charactersSee price
- Gemini 2.5 Pro TTSGoogle · from $0.0851 per 1,000 charactersSee price
- MiniMax Speech 2.8 TurboMiniMax · from $0.11 per 1,000 charactersSee price
- MiniMax Speech 2.6 HDMiniMax · from $0.21 per 1,000 charactersSee price
Generate with TTS V1 today
Create a key, get a free quote and pay only for what you generate.
Create API key