Skip to content
maskostudioDocs

All pages

  • Overview/docs/use-cases
  • Mobile app/docs/use-cases#mobile
  • Website/docs/use-cases#website
  • Desktop/docs/use-cases#desktop
  • AI agents/docs/use-cases#agents
  • Videos/docs/use-cases#videos
  • Brand/docs/use-cases#brand
  • Start building/docs/ai-agents
  • Set up once/docs/ai-agents#set-up-once
  • Ask in plain words/docs/ai-agents#ask-in-plain-words
  • What your agent does/docs/ai-agents#what-your-agent-does
  • MCP server/docs/mcp
  • Masko for Cursor/docs/ai-tools/cursor
  • Masko in ChatGPT/docs/ai-tools/chatgpt
  • Start here/docs/tutorials#start-here
  • All tutorials/docs/tutorials
  • Create your first mascot/docs/tutorials/first-mascot
  • Create an animated character/docs/tutorials/first-animation
  • Make a character talk/docs/tutorials/make-it-talk
  • Put your mascot on your website/docs/tutorials/mascot-on-your-website
  • Guide onboarding with a talking mascot/docs/tutorials/web-onboarding-mascot
  • Add a mascot that celebrates progress and welcomes users back/docs/tutorials/web-progress-companion
  • Add a talking support mascot in the bottom right/docs/tutorials/web-support-mascot
  • Show a mascot while your AI thinks/docs/tutorials/ai-loading-mascot
  • Give your AI agent a face/docs/tutorials/ai-agent-face
  • Animate the mascot you already have/docs/tutorials/animate-your-mascot
  • How to make Telegram stickers/docs/tutorials/telegram-stickers
  • How to make Discord stickers/docs/tutorials/discord-stickers
  • Quickstart: your first animation/docs/quickstart
  • Terminal quickstart/docs/terminal
  • API keys and workspaces/docs/authentication
  • CLI browser login/docs/authentication/cli
  • How mascots work/docs/how-mascots-work
  • Credits and costs/docs/credits
  • From text/docs/create/from-text
  • From an image/docs/create/from-image
  • From a website/docs/create/from-website
  • From a brand book/docs/create/from-brand-book
  • Reference images/docs/manage/references
  • What you can generate/docs/generation
  • Pose-to-animation walkthrough/docs/generate/workflow
  • Images and poses/docs/generate/images
  • Animations/docs/generate/animations
  • Talking animations/docs/generate/talking
  • Logos, backgrounds and stickers/docs/generate/design-assets
  • Cursor follower/docs/generate/cursor-follower
  • Batch generation/docs/generate/batch
  • Image and video exports/docs/manage/media-exports
  • Canvases and releases/docs/canvas
  • Build a canvas/docs/canvas/build
  • Canvas templates/docs/canvas/templates
  • Generate canvas assets/docs/canvas/generate-all
  • Export a canvas/docs/canvas/export
  • Overview and demo/docs/player
  • Play one animation/docs/player/one-animation
  • Play a canvas/docs/player/canvas
  • Hosting and file formats/docs/generate/cdn
  • File sizes/docs/generate/file-sizes
  • Float a mascot on your Mac/docs/integrations/desktop
  • Jobs and polling/docs/manage/jobs
  • Webhooks/docs/manage/webhooks
  • Manage mascots and assets/docs/manage/collections
  • All endpoints/docs/reference
  • Requests and responses/docs/reference/conventions
  • Errors and recovery/docs/reference/errors
  • Command line reference/docs/terminal/commands
  • TypeScript SDK/docs/sdk/typescript
  • Changelog/docs/reference/changelog
  • Migrate to mascots and canvases/docs/manage/studio-migration
Get an API key
Documentation

Grow a character
that evolves with your users.

Kaiju hatches when your user checks in, grows up after a 30-day streak and roars at the next check-in. Each stage is a state in his state machine, and every move between stages is an animation Masko made.

What Masko made

One loop for each stage and one animation for each move. Hover a clip to play it.

  • Eggloop
  • Hatchegg → baby, on checkIn
  • Babyloop
  • Grow upbaby → adult, at streakDays ≥ 30
  • Adultloop
  • Roaradult → roar, on checkIn
  • Roaringloop

How it works

  1. 1

    Make the character and each stage

    Create Kaiju from a prompt or a picture, then make each stage as an image of the same character: the egg, the baby and the adult.

    Create a mascot
  2. 2

    Connect the stages in a state graph

    Each stage is a node with its own loop. Each arrow is a move with the input that triggers it: checkIn hatches the egg, and streakDays ≥ 30 grows him up.

    Build a canvas
  3. 3

    Let Masko animate it, then play it in your app

    Generate all makes every loop and every move. Export the canvas to get the nodes, edges, inputs and transparent videos, and play the next clip when an input changes.

    Export a canvas

The moves on Kaiju’s canvas

{
  "inputs": ["action::checkIn", "context::streakDays"],
  "edges": [
    { "id": "egg-to-baby",
      "conditions": [{ "input": "action::checkIn", "op": "==", "value": true }] },
    { "id": "baby-to-adult",
      "conditions": [{ "input": "context::streakDays", "op": ">=", "value": 30 }] },
    { "id": "adult-to-roar",
      "conditions": [{ "input": "action::checkIn", "op": "==", "value": true }] }
  ]
}

Questions

What makes Kaiju evolve?

Inputs from your app. He hatches on checkIn, grows up when streakDays reaches 30 and roars on the next checkIn. You choose the inputs and the condition on each arrow.

Can a character have more stages?

Yes. Add a node for each stage and an arrow between them. Each new move is one more animation, and a move played backwards is free.

How much did Kaiju cost?

138 credits: 22 to explore his look, 6 for the stage images, 90 for nine animations and 20 to redo two roar clips. His full canvas also has a hover between check-ins.

Where can it play?

Anywhere a transparent video plays. The export gives WebM for Chrome and Firefox and HEVC for Safari and iOS, and the playback guide covers Android.