Credits pay for the moments Lumorig draws, rebuilds, choreographs or edits something new. Prices are fixed per action, so you know the cost before you send the request. Moving and recolouring what you already have never costs anything, and neither does downloading it on Maker and Studio; on Free, one animation of each character downloads free and 50 credits unlocks the rest.
Prices per action#
| Action | Credits | Endpoint |
|---|---|---|
| New character from a prompt | 100 | POST /mascots { prompt } |
| New character, high detail | 250 | POST /mascots { prompt, detail: "high" } |
| Rebuild an upload as a rig | 150 | POST /mascots { upload_id | image_url } |
| Animate a logo: traced from an upload into pieces, every logo motion included | 60 | POST /mascots { upload_id, engine: "logo" } |
| A tagline or web address under a logo, set or changed (taking it off is free) | 10 | POST /mascots/{id}/tagline { text, font } |
| A logo's cinematic intro: generated sparks, smoke or ink ending on the logo exactly (refunded if it can't end on it) | 60 | POST /mascots/{id}/cinematics { style } |
| Edit by instruction | 40 | POST /mascots/{id}/edit |
| Look variant | 60 | POST /mascots/{id}/variants |
| Custom motion (words or reference video), per prompt in a batch | 20 | POST /mascots/{id}/animations { prompt | reference_upload_id } |
| Illustrated scene | 50 | POST /mascots/{id}/scenes |
| Animation suggestions | 5 | POST /mascots/{id}/suggestions |
| Mascot concepts from a website | 5 | POST /analyze |
| Unlock a character's downloads on Free (once per character: every animation, watermarked, up to 512 px; Maker and Studio never pay) | 50 | POST /mascots/{id}/exports, POST /mascots/{id}/clips/{clip}/exports |
GET /credits returns these same prices under prices, keyed by action name, so clients can show a cost before the user confirms.
Plans#
Paid plans grant credits every month. Free starts you with 100 credits, once (they don't refill or expire), and your first character runs even when it costs more. Here is what those credits buy if you spend them all on one kind of action:
| Plan | Price | Credits | New characters | Rebuilds | Custom motions | Edits | API requests / min | Seats |
|---|---|---|---|---|---|---|---|---|
| Free | Free | 100 once | 1 | 0 | 5 | 2 | 60 | 1 |
| Maker | $12/mo | 1,200 / month | 12 | 8 | 60 | 30 | 120 | 1 |
| Studio | $36/mo | 3,600 / month | 36 | 24 | 180 | 90 | 600 | 3 |
- Allowances reset monthly. At the start of each calendar month your plan credits are set back to the plan's allowance. Unused plan credits don't roll over. Pack credits aren't touched.
- Rate limits apply to API keys. Requests authenticated with a key (REST, MCP, CLI, SDK) count against a one-minute window per workspace. Over it, you get
429 rate_limitedwith aRetry-Afterheader. The studio in your browser isn't limited. - Credits belong to the workspace. Everyone in a team workspace spends from one balance; seats cap how many people that is (pending invites count). See Workspaces, roles and seats.
- Need more credits? Buy a credit pack (below) or move up a plan. Free can buy the smallest pack without subscribing; the larger packs come with Maker and Studio.
Credit packs#
One-time top-ups, bought in the studio under Settings → Plan. Maker and Studio can buy any pack; Free can buy the smallest, with no subscription.
| Pack | Price |
|---|---|
| 500 credits | $7 |
| 1,500 credits | $18 |
| 5,000 credits | $50 |
- Pack credits never expire. They stay through monthly resets and plan changes, even a move to Free.
- Plan credits are spent first. A job takes this month's plan credits, then pack credits for the rest. A refund puts each credit back where it came from.
- A refunded pack takes its credits back, as far as they're unspent.
Plan features beyond credits are on the pricing page.
Always free#
These never touch your balance, on any plan (downloads are free on Maker and Studio; on Free they are priced above):
- Presets: all 18 (and fly on winged characters), fitted to your rig (
POST /mascots/{id}/animations { preset }). - Recolor by palette token.
- Canvases: creating, editing and running state machines.
- Previews: rendered stills from
GET /mascots/{id}/preview. - Embeds: bundles for
<lumorig-player>, however many views they get.
Also free: uploads, importing a spec you wrote, restoring versions, share links, and reading anything.
Charges, refunds and caps#
- Charge. When a job that makes something starts, its price is taken from the balance. Without enough credits the request fails with
402 insufficient_creditsand nothing is created. A batch of motions checks the total for every prompt before starting any of them. The error'sdetailssay where to get more:buy_credits_urlon paid plans,upgrade_urlon Free. - Refund. If the job fails or is canceled, the credits are returned automatically. A succeeded job keeps the charge.
- A job finishes. A job you started isn't stopped halfway. Occasionally a job uses more credits than its listed price; the difference is charged after it delivers, as far as your balance goes, and shows as
extra_credits. Our own retries are never charged. On the Free plan, a job may use up the free credits you have left, and stops only once those are spent. Passmax_creditsto set the most a job may charge: a job that would need more is stopped and refunded.
{ "prompt": "a cheerful lighthouse keeper", "max_credits": 40 }Every job reports what it costs you in credits (its price, less any refund, plus any extra_credits charged after it), and GET /usage totals the credits used by job type.
Checking your balance#
curl https://lumorig.com/api/v1/credits \
-H "Authorization: Bearer $LUMORIG_API_KEY"{
"object": "credits",
"billing": true,
"plan": { "id": "free", "label": "Free", "price_usd": 0, "monthly_credits": 0 },
"start_credits": 100,
"withheld": null,
"balance": 0,
"plan_balance": 0,
"pack_balance": 0,
"packs": [{"id":"pack_500","credits":500,"price_usd":7}],
"can_buy_packs": true,
"prices": {"generate":100,"picture":10,"rig_picture":90,"generate_detailed":250,"reconstruct":150,"edit":40,"variant":60,"animate":20,"scene":50,"suggest":5,"analyze":5,"clip":60,"clip_pose":70,"art_edit":10,"logo":60,"tagline":10,"cinematic":60,"download":50},
"free": ["presets", "recolor", "canvases", "previews", "embeds"]
}balance is what you can spend: plan_balance (this month's plan credits) plus pack_balance (bought, never expire).
Limits#
Requests outside these bounds fail with 400 invalid_request.
| What | Limit |
|---|---|
| Upload size | 15 MB (PNG, JPG, WebP, GIF, SVG; MP4, MOV or WebM for reference videos) |
| Mascot prompt | 3–2,000 characters (style ≤ 400, notes ≤ 1,000, name ≤ 80) |
| Motion prompt | 3–1,000 characters |
| Animation duration | 0.3–20 s (reference-video motions: 0.3–12 s) |
| Preset intensity | 0.25–2 |
| Batch of motions | 1–8 prompts |
| Edit or variant instruction | 2–2,000 characters (variant name ≤ 60) |
| Scene prompt | 3–1,000 characters |
| Export size · fps | 64–2,048 px · 6–60 fps |
| Long-poll | GET /jobs/{id}?wait= up to 120 s |
| Share link lifetime | Default 1 hour, maximum 30 days |
| GET /mascots | The 200 most recent mascots |