Skip to content

Guides

Generate from an idea

Describe a character in a sentence and get back a rigged, animation-ready vector mascot.

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.

WeakBetter
a cute foxa clever fox who guides new users through a budgeting app, oversized ears, a tiny calculator badge
robot mascota boxy delivery robot for a logistics API, earnest and slightly clumsy, one antenna with a blinking light
clouda 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.

styleLook
polishedThe default. No outlines, soft gradients, a core shadow and bounce light on every form, big two-highlight eyes. A modern app-mascot look.
outlinedBold cartoon: one uniform outline weight in a dark tint of the local colour (never black), two-tone fills.
flatNo outlines, no gradients. Three flat tones per form with crisp shadow crescents; editorial and geometric.
kawaiiVery round, a huge head, tiny body, glossy eyes, blush, pastel palette.
soft3dVinyl-toy volume: strong gradients, bright bounce light, glossy highlights, contact shadows.
retro1930s rubber-hose: noodle limbs, white gloves, pie-cut eyes, thick black outline, cream and one accent.
pixelishChunky 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#

NameTypeDescription
promptrequiredstringWho the mascot is. 3–2,000 characters.
stylestringA style id from the table above, or your own description (max 400). Default polished.
namestringPlaceholder 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_usdnumberStop 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#

detailCreditsTypical timeUse it for
standard80about 2 minutesAlmost everything. Characters that read clearly at app-icon to hero sizes.
high2504–7 minutesHero 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:

job.result
{
  "mascot_id": "msc_…",
  "version_id": "ver_…",
  "rig_ok": true,
  "submissions": 3,
  "summary": "A clever fox with oversized ears …"
}
  • rig_ok is whether the final draft passed the rig check; submissions is how many drafts the agent went through.
  • The mascot is ready with idle and wave saved. All fifteen presets work on it straight away.
  • Fetch it with GET /mascots/{id}, a PNG with preview_url, or the full drawing with ?include=spec. Then animate, edit, export or embed it.