CosyVoice3 API — How to Call Multilingual Zero-Shot TTS
CosyVoice3 uses asynchronous reference-based speech synthesis. Supply the target text, a reference audio URL and its exact transcript.
CosyVoice3 is a speech / audio model on KeyoAPI, a prepaid AI API gateway: call it at POST /v1/async/audio/speech, billed at $1.37 / 10K characters from the same balance that covers chat, vision, OCR and video models.
Overview
CosyVoice3 is an asynchronous text-to-speech option on KeyoAPI. Submit text with your existing API key, save the returned task identifier, and retrieve the finished audio when processing completes. It shares the account wallet with speech recognition, chat and avatar tasks, but each capability has its own request fields and result rules.
POST /v1/async/audio/speech with model=CosyVoice3 and a string inputs containing the target text. Both prompt_wav_url and prompt_text are required. The reference must be a downloadable WAV or MP3, at most 30 seconds, sampled at least at 16 kHz. Replace the example URL with a real file that the server can download without signing in, and replace prompt_text with the exact reference transcript. Text alone is not a complete request. Unlike Qwen3-TTS, this model does not use an inputs array.
After submission, save id or task_id before doing other work. Query GET /v1/task/{id} with the same API key while status is processing. On completed, inspect the actual output. Download from url or output.file_url only if present. For batch requests, process each returned item rather than assuming one audio URL. Keep the complete response for support if the output shape is unexpected; do not automatically submit a replacement. Stop on failed or cancelled and preserve the error and request identifier for support. Do not use the plural video query path /v1/tasks/{id} for this endpoint.
Optional instruct_text describes delivery, speed ranges from one to five, and seed is optional. These fields do not guarantee emotion, accent, gender or a particular voice quality. Do not substitute OpenAI voice names for the required reference fields. The URL-based request does not define an enrollment service or reusable voice-ID lifecycle; confirm those separate workflows with support before designing them. Keep each model’s fields separate rather than changing only its name in another TTS example.
For application integration, store the task ID with your own request record. A temporary query failure can be retried with that same ID. A submission timeout is ambiguous and should not trigger an automatic replacement speech task: the original may already be processing. Keep API keys on the server and record errors without authorization headers or raw private media.
Check the pricing page for the model's currently applicable rate and account group. Read the API endpoint reference for the asynchronous speech flow, the TTS API guide for the sync and async endpoint map, and the voice cloning API guide for the distinction between synthesis and cloning. If you need audio bytes in a single response, compare the separately documented synchronous models instead of changing the async task URL.
- Listed price: $1.37 / 10K characters
- Billing base: $1 of wallet balance = 500,000 quota units
- Gift credit: new users get $10, invites add $3 (spend-first on
:freeIDs) - Endpoint:
POST /v1/async/audio/speechwith Bearer auth onhttps://www.keyoapi.xyz/v1
How to call it
Base URL: https://www.keyoapi.xyz/v1
Endpoint: POST /v1/async/audio/speech
Model: model=CosyVoice3
# Replace the URL and transcript with your real reference (not a working sample).
curl https://www.keyoapi.xyz/v1/async/audio/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"CosyVoice3","inputs":"Hello from KeyoAPI TTS.","prompt_wav_url":"https://replace-me.invalid/your-reference.wav","prompt_text":"Replace with the exact transcript of your reference audio.","speed":1}'
# Save id/task_id, then GET /v1/task/{id} with the same key.
Auth uses the same Bearer API key as chat. Full notes: Keyo docs.
FAQ
How do I call the CosyVoice3 API?
POST /v1/async/audio/speech with model=CosyVoice3, a string inputs, required prompt_wav_url and exact prompt_text. Use a downloadable WAV/MP3 reference of at most 30 seconds and at least 16 kHz; save id/task_id and poll GET /v1/task/{id}.
Is CosyVoice3 synchronous?
No. On KeyoAPI it uses POST /v1/async/audio/speech — create a task, then poll GET /v1/task/{id}. For a sync round trip, use IndexTTS-2 on /v1/audio/speech.
What is CosyVoice3 good for?
Reference-based speech with optional instruct_text and speed controls. These controls guide delivery without guaranteeing emotion, gender or voice quality.
How do I try it?
Open the full pricing list after the sign-up page. No separate upload playground — try from interactive pricing.
Price?
About $1.37 per 10,000 characters — confirm on the full pricing list.