Generating
Generate a GUI sheet
Produces a texture named gui:<name>.
The easy path is `auto: true`: a reasoning model plans the whole screen from the prompt — rows, title, materials, buttons, layout — and target may be omitted. Without auto, you direct everything yourself.
Image spend: elements, decorations and button icons are each their own image call, which is why they share a cap. texts, button faces, the title plaque and the frame are composed rather than generated and cost nothing extra.
/packs/{pack}/guisPath parameters
packstringrequiredThe pack's slug, as returned by the packs endpoints.
Body
promptstringrequiredWith auto, the whole screen you want; without it, how the panel surface should look.
autobooleandefault falseLet the director plan the screen from the prompt alone.
targetstringThe vanilla screen to reskin. Required unless auto is set (the director picks the chest size).
namestringYour label.
titlestringThe screen's name, worn per titleStyle. Composed from the vanilla font — free.
titleScaleintegerdefault 11 fits long names, 2 is display size.
Options: 1, 2
titleStylestringdefault "plaque"How the name is worn: a composed plaque, painted straight onto the panel, or on a drawn signboard.
Options: plaque, painted, sign
signPromptstringtitleStyle: sign only — the board to draw (one image call).
framestringWhat the frame band is made of — a second material image wrapped round the window.
scenebooleandefault falseDraw the panel as one full-bleed picture instead of a flat material — for screens whose cells hold no items.
buttonsarray of objectmax 6 entriesReal controls: the face and label are composed (always legible); only an icon costs an image call.
slotintegerrequiredmin 0Index of the slot its top-left sits on.
labelstringmax 24 charactersThe words on the button. May be empty when icon is set.
iconstringOne small object drawn at 16px beside the label.
fillstringAccent for the face, #rrggbb. Absent uses the panel's palette.
wSlotsinteger1–7default 1Width in slots.
hSlotsinteger1–7default 1Height in slots.
elementsarray of objectmax 6 entriesButtons and icons drawn over the panel. Each is a separate image call.
slotintegerrequiredmin 0Index of the slot to place it on.
promptstringrequiredWhat to draw.
wSlotsinteger1–7default 1Width in slots.
hSlotsinteger1–7default 1Height in slots.
kindstringdefault "artwork"Artwork fills its box; an icon sits on transparency.
Options: artwork, icon
textsarray of objectmax 12 entriesLines of text drawn from the vanilla font. Free — no image call.
textstringrequiredmax 64 charactersWhat it says.
xintegerrequired0–255Sheet pixels from the left.
yintegerrequired0–255Sheet pixels from the top.
colorstringrequiredHex colour, #rrggbb.
scaleinteger1–4default 1Whole numbers only — bitmap text at 1.5x is mush.
shadowbooleandefault trueDrop shadow behind the glyphs.
alignstringdefault "left"Which edge x refers to.
Options: left, center, right
drawSlotsbooleandefault falseDraw the item slot boxes.
includePlayerInventorybooleandefault falseExtend the restyle over the player's inventory.
referenceIdstringA reference image already uploaded in the Studio. There is no API endpoint to upload one yet.
referenceStrengthnumber0.05–0.95How closely to follow the reference. Clamped to this range rather than rejected.
Response · 202
Accepted. The work runs asynchronously — poll job until it leaves generating.
idstringrequiredThe asset's name within the pack.
kindstringrequiredWhich store the generated asset lands in.
Options: texture, model, font, sound
statusstringrequiredAlways generating — nothing is finished when this returns.
packstringrequiredThe pack it was written into.
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.
insufficient_credits402Not enough AI Credits to run this. Nothing was started or charged.
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.
unavailable503The feature behind this endpoint is switched off.