generate_voiceover
Generate voice-over
Start a voice-over generation from text. This spends credits, or runs on the user's own key, and returns immediately. Pass subject to read in the voice bound to one of the account's Subjects — her model, voice, delivery and language — or pick model and voice yourself; omit both to use the default model's default voice.
Lines of one script must sound like one take: generate the whole script once and cut it, or keep the model, voice and delivery fixed across lines.
Models:
- elevenlabs-tts (Eleven v3): ~8.5 per 1,000 chars; up to 3000 chars; default voice Rachel; controls language/speed; custom voice ids
- eleven-v4 (Eleven v4): ~7 per 1,000 chars; up to 4000 chars; default voice JBFqnCBsd6RMkjVDRZzb; controls language; custom voice ids; stitches lines (continues_from)
- gemini-3.1-flash-tts (Gemini 3.1 Flash TTS): ~11 per 1,000 chars; up to 4000 chars; default voice Kore; controls style prompt/language
- kokoro-82m (Kokoro 82M): ~0.5 per 1,000 chars; up to 4000 chars; default voice af_bella; controls speed
- minimax-speech-2.8-hd (MiniMax Speech 2.8 HD): ~4.5 per 1,000 chars; up to 4000 chars; default voice Wise_Woman; controls language/speed/emotion; custom voice ids
- inworld-tts-2 (Inworld TTS 2.0): ~2.5 per 1,000 chars; up to 2000 chars; default voice Ashley; controls language/speed; custom voice ids
Scope
generation.write— Makes, edits, imports, shares and deletes media in the account.
Behaviour
- Writes
- Creates or changes items in the caller's own account.
- Adds or updates
- Adds or updates; nothing the caller already has is deleted or overwritten.
- Stays in the account
- Stays inside the caller's private Kuro account: any media provider it calls acts on Kuro's account, and the result is visible to no one else.
Credits
What the tool's description says about credits, verbatim.
- This spends credits, or runs on the user's own key, and returns immediately.
Inputs
textstring · requiredThe words to speak. Each model has its own ceiling, shown in its roster line ("up to N chars"); a longer script is split into lines.
at least 1 character · at most 4000 characters
idempotency_keystring · optionalOptional. Pass the same value to retry one operation without spending twice; omit it for a new operation. Different arguments under a reused key are refused.
at least 1 character · at most 128 characters
subjectstring · optionalA Subject's name or id. Reads in her bound voice; model, voice, style_prompt and language_code then come from the binding and may not be passed.
at least 1 character · at most 120 characters
modelstring · optionalone of "elevenlabs-tts", "eleven-v4", "gemini-3.1-flash-tts", "kokoro-82m", "minimax-speech-2.8-hd", "inworld-tts-2"
voicestring · optionalat least 1 character · at most 120 characters
style_promptstring · optionalat most 4000 characters
language_codestring · optionalat least 2 characters · at most 35 characters
speednumber · optional≥ 0.1 · ≤ 5
emotionstring · optionalone of "auto", "neutral", "happy", "sad", "angry", "fearful", "disgusted", "surprised", "calm"
continues_fromarray of string · optionalThe generation ids of up to three earlier lines of the same script, oldest first, on a model whose roster line says it stitches; keeps the voice continuous across separately generated lines. Same model and voice as those lines.
at least 1 item · at most 3 items
runs_onstring · optionalWho pays: "credits", or one of the user's own keys by vendor (get_credits lists them). Leave out to follow their payer order; set it only when the user chose.
one of "credits", "replicate", "fal", "siray", "runware", "higgsfield", "sunra", "comfy"
Example call
A tools/call request with the required arguments only, each a placeholder read off the schema. Replace them before sending.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "generate_voiceover",
"arguments": {
"text": "<text>"
}
}
}Input schema
As the server sends it in tools/list.
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional. Pass the same value to retry one operation without spending twice; omit it for a new operation. Different arguments under a reused key are refused."
},
"text": {
"type": "string",
"minLength": 1,
"maxLength": 4000,
"description": "The words to speak. Each model has its own ceiling, shown in its roster line (\"up to N chars\"); a longer script is split into lines."
},
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "A Subject's name or id. Reads in her bound voice; model, voice, style_prompt and language_code then come from the binding and may not be passed."
},
"model": {
"type": "string",
"enum": [
"elevenlabs-tts",
"eleven-v4",
"gemini-3.1-flash-tts",
"kokoro-82m",
"minimax-speech-2.8-hd",
"inworld-tts-2"
]
},
"voice": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"style_prompt": {
"type": "string",
"maxLength": 4000
},
"language_code": {
"type": "string",
"minLength": 2,
"maxLength": 35
},
"speed": {
"type": "number",
"minimum": 0.1,
"maximum": 5
},
"emotion": {
"type": "string",
"enum": [
"auto",
"neutral",
"happy",
"sad",
"angry",
"fearful",
"disgusted",
"surprised",
"calm"
]
},
"continues_from": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"minItems": 1,
"maxItems": 3,
"description": "The generation ids of up to three earlier lines of the same script, oldest first, on a model whose roster line says it stitches; keeps the voice continuous across separately generated lines. Same model and voice as those lines."
},
"runs_on": {
"type": "string",
"enum": [
"credits",
"replicate",
"fal",
"siray",
"runware",
"higgsfield",
"sunra",
"comfy"
],
"description": "Who pays: \"credits\", or one of the user's own keys by vendor (get_credits lists them). Leave out to follow their payer order; set it only when the user chose."
}
},
"required": [
"text"
],
"additionalProperties": false
}Related tools
- quote_generation
Price a request exactly, and compare it to the balance, without creating anything.
- cast_voice
Read a portrait already in the account and return the voices that suit it, best first.
- list_voices
The voices this account saved from a provider, newest first, each with the id to pass as generate_voiceover's voice, plus which providers this server can…