The generator is a Claude agent that draws a mascot as vector parts, renders what it drew, looks at the render, and fixes what it sees, including its own rig: joint gaps and parts that would tear when they move. You get back a character that is ready to animate the moment the job finishes.
Write a good prompt#
Say who the character is, not what the image should look like. The best prompts have four things: what it is (a species or an object), a personality, where it will live, and one or two signature details.
| Weak | Better |
|---|---|
| a cute fox | a clever fox who guides new users through a budgeting app, oversized ears, a tiny calculator badge |
| robot mascot | a boxy delivery robot for a logistics API, earnest and slightly clumsy, one antenna with a blinking light |
| cloud | a calm cloud creature that shows sync status for a storage app, sleepy eyes, soft rounded edges |
- Prompts are 3 to 2,000 characters. The generator names the character when it finishes; rename it any time with
PATCH /mascots/{id}. - Leave out camera, lighting and background. The mascot is always drawn alone on a transparent canvas.
- One exaggerated feature beats five small ones. It is what makes a character readable at 32 pixels.
Pick a style#
style is one of these ids, or any description of your own (up to 400 characters), which is passed to the generator as the style brief. The list is also served, without a key, at GET /styles.
| style | Look |
|---|---|
polished | The default. No outlines, soft gradients, a core shadow and bounce light on every form, big two-highlight eyes. A modern app-mascot look. |
outlined | Bold cartoon: one uniform outline weight in a dark tint of the local colour (never black), two-tone fills. |
flat | No outlines, no gradients. Three flat tones per form with crisp shadow crescents; editorial and geometric. |
kawaii | Very round, a huge head, tiny body, glossy eyes, blush, pastel palette. |
soft3d | Vinyl-toy volume: strong gradients, bright bounce light, glossy highlights, contact shadows. |
retro | 1930s rubber-hose: noodle limbs, white gloves, pie-cut eyes, thick black outline, cream and one accent. |
pixelish | Chunky low-poly: rectangles and polygons, hard edges, a 5–7 colour ramp palette, faceted shading. |
Create the mascot#
curl -X POST https://lumorig.com/api/v1/mascots -H "Authorization: Bearer $LUMORIG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a clever fox who guides new users through a budgeting app, oversized ears",
"style": "outlined"
}'Body#
| Name | Type | Description |
|---|---|---|
promptrequired | string | Who the mascot is. 3–2,000 characters. |
style | string | A style id from the table above, or your own description (max 400). Default polished. |
name | string | Placeholder name (max 80) while it draws. The finished mascot takes the name the generator gives it. |
detail | "standard" | "high" | Default standard. See below. |
max_cost_usd | number | Stop the job if its model spend passes this. Can only lower the built-in ceiling. |
The response is 202 with { mascot, job }. The mascot exists straight away in status generating; if the job fails, a mascot that never got a drawing moves to failed with the reason in error.
Detail and cost#
| detail | Credits | Typical time | Use it for |
|---|---|---|---|
standard | 80 | about 2 minutes | Almost everything. Characters that read clearly at app-icon to hero sizes. |
high | 250 | 4–7 minutes | Hero art where you want more rendering passes and richer shading. |
Credits are held when the job starts and refunded if it fails or you cancel it (POST /jobs/{id}/cancel). If you do not have enough, the request returns 402 insufficient_credits and nothing is created.
Follow progress#
The generator narrates as it works, and every complete draft it submits is streamed as a draft event carrying the whole spec, so you can render the character taking shape. This is how the studio shows the drawing arriving.
curl -N "https://lumorig.com/api/v1/jobs/job_…/events" -H "Authorization: Bearer $LUMORIG_API_KEY"
# event: progress
# data: {"seq":3,"at":"…","type":"progress","text":"Blocking in the head and ears."}
# event: draft
# data: {"seq":9,"type":"draft","spec":{…},"rig_ok":false}
# …
# event: finished
# data: {"seq":31,"type":"finished","status":"succeeded","error":null}What you get back#
When the job succeeds its result is:
{
"mascot_id": "msc_…",
"version_id": "ver_…",
"rig_ok": true,
"submissions": 3,
"summary": "A clever fox with oversized ears …"
}rig_okis whether the final draft passed the rig check;submissionsis how many drafts the agent went through.- The mascot is
readywithidleandwavesaved. All fifteen presets work on it straight away. - Fetch it with
GET /mascots/{id}, a PNG withpreview_url, or the full drawing with?include=spec. Then animate, edit, export or embed it.