Generating
Edit an asset with AI
Changes an asset that already exists from a sentence (make it rustier, slower, add a second ring), exactly as the Studio's Edit with AI button does, and at the same price. The asset is changed in place.
Which assets. A stored asset is addressed by the kind and name the asset listing reports, as for a download: a block (texture/mossy_bricks), an item sprite (texture/item:rusted_key), a model, item3d or vehicle (model/lantern) and an icon (font/heart). The rest are addressed by their own kind and the id their generation returned: a 3D shader object or a text effect (shader/<id>), a VFX (vfx/<id>) and an emote (emote/<id>). GUIs, HUDs, dialogs, armour, sounds, rank tags and HUD shaders are changed in the Studio's editors, and are refused here.
Limits. An emote's instruction is up to 500 characters, a VFX's or a text effect's 600, a 3D object's 800. One edit at a time per asset: a second while the first runs answers already_running.
The job polls like a generation's. When it is ready, the asset holds the change: download it again to see it.
/packs/{pack}/assets/{kind}/{name}/editPath parameters
packstringrequiredThe pack's slug, as returned by the packs endpoints.
kindstringrequiredThe asset's kind from the listing, or shader, vfx or emote.
Options: texture, model, font, shader, vfx, emote
namestringrequiredThe asset's stored name from the listing, or the id a shader, VFX or emote was generated under.
Body
instructionstringrequiredWhat to change.
Response · 202
Accepted. The edit runs asynchronously, so poll job until it leaves generating.
idstringrequiredThe name you addressed it by.
typestringrequiredWhat the asset is.
kindstringrequiredThe kind you addressed it by.
Options: texture, model, font, shader, vfx, emote
statusstringrequiredAlways generating: nothing is finished when this returns.
packstringrequiredThe pack it is in.
jobstringrequiredPoll this at GET /jobs/{job} until it leaves generating.
Error codes
Branch on error.code, never on the message.
invalid_request400Something in the body or query is wrong. message says what.
invalid_api_key401The key isn't one of ours, or it has been revoked.
missing_api_key401No Authorization: Bearer header was sent.
wrong_key_kind401An MCP key sent to the REST API, or an API key sent to the MCP server. Each only opens its own.
insufficient_credits402Not enough AI Credits to run this. Nothing was started or charged.
account_suspended403The account is suspended, so its keys open nothing. message says until when, if the suspension has an end date.
asset_limit_reached403The pack is at its asset limit.
forbidden403Valid key, but not permitted to do this in this pack.
plan_required403The key is valid, but its account is on Starter. The API needs a paid plan.
not_found404No such pack, asset or job.
already_running409An AI edit or generation of that asset is still running. Wait for its job, then send the edit again.