An export renders a mascot (and, for animated formats, one of its animations) to a file. Exports are jobs because video encoding takes a few seconds, but they never call a model. On Maker and Studio they never cost credits; on Free, one animation of each character downloads free and 50 credits unlocks the rest. Vector formats come straight from the rig, so they stay sharp at any size and weigh kilobytes.
Exports by plan#
Free is for trying, Maker and Studio are for shipping. On Free, exports are PNG and GIF previews up to 512 px with a small “Made with Lumorig” mark, for personal use (an email GIF counts as a GIF). The first animation (or clip) you download of a character is free, in every Free format and size, and a vector character's free animation also as Lottie, dotLottie or animated SVG, with the mark. Anything else of it (another animation, a still, a clip mascot's breathing idle, a sequence) costs 50 credits once and unlocks every Free-format download of it: all its animations or clips, including ones added later, at any allowed size. Without enough credits that request returns 402 insufficient_credits; an edited copy of uploaded art is a new character. The live <lumorig-player> embed works with a badge. Maker and Studio export every format below, clean and up to 2048 px, with commercial use. Asking for anything else on Free returns 402 plan_required with the formats Free includes in details.included. Previews follow the same rule: PNG only on Free, marked above 384 px. Self-hosted servers that don't charge credits export everything.
Formats#
Animated#
These need an animation: an animation id, an animation name, or any preset id such as wave (presets are fitted to the rig on the fly, even if you never saved one).
| format | Output | Notes |
|---|---|---|
lottie | application/json | True vector: every part is a named layer, no embedded bitmaps. Plays in lottie-web, iOS, Android. |
dotlottie | application/zip (.lottie) | The same Lottie zipped with a manifest (dotLottie 1), about a tenth the size, for the dotLottie players on web, iOS and Android. |
animated-svg | image/svg+xml | Self-contained SVG with CSS keyframes. No JavaScript needed. |
webm | video/webm | VP9 with an alpha channel: transparent video. |
mov | video/quicktime | HEVC with an alpha channel: transparent video for Safari, iPhone and Mac apps. |
prores | video/quicktime | ProRes 4444 with alpha: the master for video editors, Keynote and OBS. Large. |
mp4 | video/mp4 | H.264, no alpha. Background defaults to white. |
gif | image/gif | Works everywhere, heaviest per second. |
email-gif | image/gif | For email signatures and newsletters: opens on the finished picture (classic Outlook shows only the first frame), on white, at most 640 px, plays twice. A logo's is cropped close. |
wav | audio/wav | A logo intro's reveal sound alone, as long as the intro (needs sound). |
webp | image/webp | Animated WebP with transparency. |
apng | image/apng | Animated PNG with transparency (.png extension). |
sprite | image/png | One PNG sheet: frames left to right, then top to bottom, on a grid of ceil(√frames) columns. The API returns the sheet only, not a JSON atlas. |
Stills#
animation is optional here: with it, the still is posed at time t of that animation; without it you get the rest pose.
| format | Output | Notes |
|---|---|---|
png | image/png | Transparent unless you pass background. |
svg | image/svg+xml | The posed drawing as plain vector. |
sticker | image/png | Die-cut: a thick white border and a soft shadow. |
logo | image/svg+xml | Vector badge: the head in a circle of the mascot's main colour. |
logo-png | image/png | The same badge, rasterised at size. |
Export options#
POST/mascots/{id}/exports
| Name | Type | Description |
|---|---|---|
formatrequired | string | One of the formats above. |
animation | string | Animation id, name, or preset id. Required for animated formats. |
size | integer | Output width in px for raster formats, 64–2048. Default 512. |
fps | integer | Frames per second for animated formats, 6–60. Default 30. |
background | string | A #rrggbb fill. Omit for transparency (mp4 falls back to white). |
t | number | For stills: seconds into the animation to capture. |
duration | number | Seconds, 0.3–20: plays the whole animation in this time (a logo intro as a 2 s sting or a 1 s splash). Lottie takes it too. |
frame | string | The picture's shape, the mascot centred: square (default), landscape 16:9, portrait 9:16, feed 4:5, or tight (cropped close around a logo). GIF, video, WebP, APNG and animated SVG; Lottie keeps its canvas. |
sound | string | A logo intro's reveal sound, timed to it: whoosh, chime, pluck or digital. In mp4, mov and prores, or alone as wav. See Animate a logo. |
version_id | string | Render an older version without restoring it. |
curl -X POST https://lumorig.com/api/v1/mascots/msc_…/exports -H "Authorization: Bearer $LUMORIG_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "format": "webm", "animation": "wave", "size": 768, "fps": 30 }'
# 202 → { "id": "job_…", "type": "export", "status": "queued", … }
curl "https://lumorig.com/api/v1/jobs/job_…?wait=60" -H "Authorization: Bearer $LUMORIG_API_KEY"
# → { "status": "succeeded", "result": { "file": { "id": "file_…", "url": "/api/v1/files/file_…", "mime": "video/webm", "bytes": … } } }Downloading files#
A finished export job has result.file. Its url is relative to the API origin and, like every file endpoint, needs your API key.
GET/files/{id}
| Name | Type | Description |
|---|---|---|
download | query | Any value (e.g. ?download=1) sends Content-Disposition: attachment with a filename like lumorig-file_….webm. Without it the file is served inline. |
curl -L "https://lumorig.com/api/v1/files/file_…?download=1" -H "Authorization: Bearer $LUMORIG_API_KEY" -o pip-wave.webmFiles are immutable, so responses carry a year-long private cache header. Store the bytes on your own CDN if you serve them to users.
Previews#
For thumbnails and quick checks there is a synchronous still renderer. It answers in the request (no job), works with an API key or, for public mascots, with no key at all.
GET/mascots/{id}/preview
| Name | Type | Description |
|---|---|---|
format | string | png (default), svg, sticker or logo. |
animation | string | Pose from this animation (id, name or preset). |
t | number | Seconds into that animation. |
size | number | Width in px, default 512. |
v | string | A version id. With it the response is cacheable forever; mascot.preview_url already includes it. |
<img src="https://lumorig.com/api/v1/mascots/msc_…/preview?animation=wave&t=0.6&size=256" alt="Pip waving" />Choosing a format#
Measured on one character, a two-second wave at 30 fps and 512 px. Your numbers will vary with the drawing, but the ratios hold.
| Format | Size | Pick it when |
|---|---|---|
| lottie | 65.0 KB · 6.6 KB gzipped | You ship to web, iOS or Android and want the smallest, sharpest file. |
| dotlottie | about a tenth of the Lottie | Your player reads .lottie files (dotLottie on web, iOS, Android, Flutter). |
| animated-svg | 48.0 KB · 7.6 KB gzipped | You want motion on a web page with no player script at all. |
| mp4 | 52.0 KB | Social posts, decks, anywhere video goes and transparency doesn't matter. |
| webm | 134.0 KB | Transparent video over your own UI. |
| gif | 621.0 KB | Chat apps, READMEs and places that only take GIFs. |
| email-gif | 15 fps, 640 px at most | Email signatures and newsletters, Outlook included. |
| mov · prores | HEVC · ProRes 4444 | Transparent video for Safari and Apple apps, or a master for video editors and Keynote. |
| webp · apng | 457.0 KB · 1.96 MB | Transparent animated images where GIF's edges look rough. |
| sprite | one PNG sheet | Game engines and canvas renderers. |