generate_with_recipe
Generate with guided recipe
Create one image or clip with a guided recipe — an arm or reprompt recipe. Supply creative_prompt and one value for every choice get_recipe declares; bind existing account media, or a Subject as { type: "subject", subject_id }, to the recipe's inputs by key — an input with takes_subject takes one, and naming her beats attaching a picture of her. Optionally pick another model of the recipe's medium instead of its default: its recommended_models are the ones its author tested, and any other model of the medium runs it too unless it cannot take an input the recipe requires (a reference photo, a start frame, the pinned voice) — that is refused as RECIPE_MODEL_UNFIT with the reason. A pinned setting the model cannot take (a ratio, resolution, length or format) moves to the nearest one it can, and a model that uses reference photos only in one clip shape is moved into that shape. On a reprompt recipe your answers are the brief a model reads to write the prompt, so say what you want rather than how to phrase it.
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.
Inputs
recipe_idstring · requireduuid
creative_promptstring · requiredat most 4000 characters
inputsarray of object · optionalat most 6 items
choicesobject · optionalmodel_idstring · optionalone of "seedream-5-lite", "nano-banana-2.1", "nano-banana-2", "gpt-image-2.5-flare", "gpt-image-2.5-sunburst", "gpt-image-2", "nano-banana-2-lite", "seedream-5-pro", "flux-schnell", "flux-2-flex", "flux-2-pro", "flux-2-max", "recraft-v4.1-svg", "recraft-v4.1-pro-svg", "p-image", "grok-imagine-image", "grok-imagine-image-quality", "krea-3", "qwen-image-3-pro", "soul-2", "seedance-2.5", "seedance-2.0", "seedance-2.0-mini", "seedance-2.0-fast", "grok-imagine-video-1.5", "veo-3.1", "veo-3.1-fast", "veo-3.1-lite", "gemini-omni-1.1", "kling-v3-omni-video", "kling-v3-video", "happyhorse-1.0", "wan-3", "wan-3-prime", "gen-4.5", "p-video", "p-video-2", "flux-3", "minimax-h3-max", "p-video-avatar", "p-video-animate", "p-video-replace", "omni-human-1.5", "kling-avatar-v2", "kling-v3-motion-control", "kling-lip-sync", "sync-lipsync-2", "genjutsu-motion-transfer", "genjutsu-object-swap", "elevenlabs-tts", "eleven-v4", "gemini-3.1-flash-tts", "kokoro-82m", "minimax-speech-2.8-hd", "inworld-tts-2", "reel-music-1", "minimax-music-2.6", "eleven-music"
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_with_recipe",
"arguments": {
"recipe_id": "00000000-0000-4000-8000-000000000000",
"creative_prompt": "<creative_prompt>"
}
}
}Input schema
As the server sends it in tools/list.
{
"type": "object",
"properties": {
"recipe_id": {
"type": "string",
"format": "uuid"
},
"creative_prompt": {
"type": "string",
"maxLength": 4000
},
"inputs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slot_key": {
"type": "string",
"minLength": 1,
"maxLength": 40
},
"sources": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "upload"
},
"upload_id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"type",
"upload_id"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "generation"
},
"generation_id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"type",
"generation_id"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "subject"
},
"subject_id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"type",
"subject_id"
],
"additionalProperties": false
}
]
},
"minItems": 1,
"maxItems": 6
}
},
"required": [
"slot_key",
"sources"
],
"additionalProperties": false
},
"maxItems": 6
},
"choices": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 16
}
]
}
},
"model_id": {
"type": "string",
"enum": [
"seedream-5-lite",
"nano-banana-2.1",
"nano-banana-2",
"gpt-image-2.5-flare",
"gpt-image-2.5-sunburst",
"gpt-image-2",
"nano-banana-2-lite",
"seedream-5-pro",
"flux-schnell",
"flux-2-flex",
"flux-2-pro",
"flux-2-max",
"recraft-v4.1-svg",
"recraft-v4.1-pro-svg",
"p-image",
"grok-imagine-image",
"grok-imagine-image-quality",
"krea-3",
"qwen-image-3-pro",
"soul-2",
"seedance-2.5",
"seedance-2.0",
"seedance-2.0-mini",
"seedance-2.0-fast",
"grok-imagine-video-1.5",
"veo-3.1",
"veo-3.1-fast",
"veo-3.1-lite",
"gemini-omni-1.1",
"kling-v3-omni-video",
"kling-v3-video",
"happyhorse-1.0",
"wan-3",
"wan-3-prime",
"gen-4.5",
"p-video",
"p-video-2",
"flux-3",
"minimax-h3-max",
"p-video-avatar",
"p-video-animate",
"p-video-replace",
"omni-human-1.5",
"kling-avatar-v2",
"kling-v3-motion-control",
"kling-lip-sync",
"sync-lipsync-2",
"genjutsu-motion-transfer",
"genjutsu-object-swap",
"elevenlabs-tts",
"eleven-v4",
"gemini-3.1-flash-tts",
"kokoro-82m",
"minimax-speech-2.8-hd",
"inworld-tts-2",
"reel-music-1",
"minimax-music-2.6",
"eleven-music"
]
},
"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": [
"recipe_id",
"creative_prompt"
],
"additionalProperties": false
}Related tools
- get_recipe
Get one recipe by id — a look or a guided recipe, with its recommended models, creative guidance, and media slots.
- generate_image
Make an image in the user's Kuro account.
- generate_clip
Start a short video clip generation.
- animate_image
Animate an existing image or upload into a clip.
- get_benchmark
Which model to use for a job, in three tiers (best, middle, cheapest), priced for this account: credits per reference request, who pays (`paid_by`: one of…
- list_recipes
Search and page through the RECIPE catalog — templates that ask you questions and then make something.