create_media
Usecreate_media for images and video. Use generate_speech for voiceovers. To approve an exact model and price, quote the corresponding specialist tool with estimate_cost and generate with the same parameters.
Continuity — say it like a person
Continue from recent image results withsource:
Recents are kept per user and per client for 24 hours — a Cursor session doesn’t see what Claude Code made an hour ago, but generation IDs always resolve.
Creative memory — survives sessions
Callsave_creation_as with an approved image reference:
use: ["Maya"] on image and video generation tools applies her saved image references. Speech and model comparisons do not accept use. Types: project · character · product · style. Saving the same name again adds another reference (each name keeps up to 8; the oldest rotates out). Forgot the name? list_creative_entities.
Ship-ready outputs
Image outputs include a URL, suggested filename and MIME type. An agent with filesystem access can download and verify them:All 19 tools
Tool results include structured JSON —
{ "ok": true, … } or { "ok": false, "error": { "code", "message", "recoverable", "next_steps", … } } — so the agent can read and recover from the payload. The one exception is argument validation: a missing or out-of-range parameter is rejected before the tool runs, as a plain-text result flagged isError: true (Input validation error: Invalid arguments for tool …) rather than the JSON envelope. Invalid arguments are not charged.Specialist parameters
generate_speech
generate_speech
Required:
input (1–4,096 characters) and idempotency_key (1–128 characters). Defaults: model: "tts-1-hd", voice: "nova", response_format: "mp3", speed: 1. Supports MP3 or WAV, nine voices and speed 0.25–4. max_spend_cents accepts fractional cents, greater than 0 and at most 100.See Voiceovers for all voices and quote/generation examples.generate_image / edit_image
generate_image / edit_image
An explicit
model is a contract — no silent substitution. auto may reroute to a compatible model if a provider fails, and the charge settles on the model that ran. Edit-only models (runway-gen4-image-turbo, qwen-image-edit-plus) return model_requires_reference without a reference.generate_video / image_to_video
generate_video / image_to_video
Video is async: the call returns a
generation_id and eta_seconds, and the agent polls get_generation_status (~15s apart). Render time depends on the model — from 20–90 seconds on seedance-lite to 2–6 minutes on kling-video; search_models lists each model’s eta_seconds. Failures refund automatically.edit_video / extend_video
edit_video / extend_video
Revise a finished clip in place instead of re-rolling it. Both default to the newest video.
Only clips made with
gemini-omni-flash (the fast default) can be revised; on any other clip the tool explains this and suggests generating on that model first. Same async flow as generate_video: a generation_id comes back, poll get_generation_status, and the whole revised or lengthened clip is delivered. create_media routes an edit on a video source here automatically (“keep going” lengthens). Pricing: an edit re-renders the clip; an extension bills only the added seconds — both plus the clip carried as context. estimate_cost quotes either with source.compare_models
compare_models
Results come back numbered in pick order — choose one and continue from it with
source. A model that fails inside the bakeoff costs nothing; you’re charged for the ones that delivered.get_generation_status
get_generation_status
Returns
pending (with progress_percent and eta_seconds), succeeded (with the playable URL), or a refunded failure. Images finish synchronously and never need polling.search_creations / get_creation
search_creations / get_creation
search_creations:get_creation:save_creation_as / list_creative_entities
save_creation_as / list_creative_entities
save_creation_as:list_creative_entities:search_models / estimate_cost
search_models / estimate_cost
search_models:Image and video results carry
price_cents (image: per output; video: the 4-second “from” price). Video results also carry price_cents_at_default_duration and default_duration_seconds (8) — the amount you are billed when you accept the tool defaults — plus eta_seconds.estimate_cost:Audio model results include
price_cents_per_1000_characters, voices and formats. Speech estimates default to tts-1-hd when the model is auto. The estimate also reports within_balance and within_spend_limit; API-key budgets are rechecked during generation.upload_asset
upload_asset
Returns
upload_url (HTTP PUT, valid for 10 minutes) and public_url. The agent must PUT the actual file bytes with the declared content type and length before using public_url. A chat attachment is usable only if the agent can access and upload its bytes.prepare_scrub_video / publish_page
prepare_scrub_video / publish_page
prepare_scrub_video — pass one of:publish_page:add_credits / get_account_balance
add_credits / get_account_balance
add_credits:Returns a Stripe
checkout_url for the user to open. It never turns auto-reload on.get_account_balance takes no parameters and returns the balance, what it buys, this month’s spend against your limit, and the subscriber allowance state.