Images & poses.
Describe an expression, outfit, or action. Generate a new still image of your mascot for an empty state, onboarding screen, or the starting pose of an animation.
POST /v1/mascots/:id/generateVibe Nanny Studio API
Create a mascot. Give it poses, motion, and a voice. Bring the finished files into your product, all through one REST API.
REST · JSON · Bearer auth · Hosted assets
Spud
Otto
Moss
Made in Studio. Available in your code.
Explore the documentation →The request. The character. The result.
Pick an example. Look at the request. Meet the kind of output you can make.
Describe a pose and a movement. Get an animation of your mascot with transparent video exports for your interface.
curl https://api.vibenanny.dev/v1/mascots/MASCOT_ID/generate \ -H "Authorization: Bearer $VIBENANNY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "animation", "name": "Typing", "image_prompt": "Seated at a keyboard", "animation_prompt": "Typing busily, all eight arms", "duration": 5 }'Otto
Otto has the typing covered.
Example requests and illustrated outputs. To generate your own, replace the IDs and call the API from your server.
One mascot. A whole cast of assets.
Six ways to put your character to work. See what each asset does, what you get back, and the API request that creates it. Your mascot's references keep the character consistent.
Describe an expression, outfit, or action. Generate a new still image of your mascot for an empty state, onboarding screen, or the starting pose of an animation.
POST /v1/mascots/:id/generateAnimate a saved pose, or describe a new pose and its movement together. For a talking clip, send a script and pick a voice.
POST /v1/mascots/:id/generateTurn a completed transparent image into a transparent PNG with a white sticker border, ready for messaging, rewards, and your interface.
POST /v1/assets/:id/stickerChoose a composition and a visual style. Turn your character into a face icon, badge, or brand mark, with a master image, transparent version, resized PNGs and a favicon.
POST /v1/mascots/:id/logoPut your mascot in a setting. Describe the environment and the action separately, then choose the aspect ratio for a hero illustration, story, or campaign image.
POST /v1/mascots/:id/sceneTurn a completed transparent pose into nine gaze directions. Your site swaps the images so the character follows the pointer. Use a canvas for reactions between animated states.
POST /v1/assets/:id/gazeGive the animations a little logic
A canvas is a state machine: poses are nodes, animated moves are edges, and input conditions decide which move plays. Connect your app events to those inputs to make your mascot respond.
Rest
A pose with its own loop
The move
A generated animation clip
Play
A different pose and loop
Your app requests a reaction. The player checks the graph's conditions, plays the connecting move, then loops in the new state.
Try an interactive canvas ↗Start with one request
Use your project and mascot IDs. This creates an empty draft, generating its poses and moves is a separate step.
curl -X POST https://api.vibenanny.dev/v1/canvases \ -H "Authorization: Bearer $VIBENANNY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "project_id": "PROJECT_ID", "mascot_id": "MASCOT_ID", "name": "Product reactions" }'Create a canvas.
Start an empty draft canvas with your mascot. Save the returned canvas ID and graph rows.
POST /v1/canvasesConnect the reactions.
Add poses, moves and input conditions. Send the graph with PATCH; it is checked against the rules.
PATCH /v1/canvases/:idGenerate the moves.
Preview the cost, then generate the poses and moves. Each one returns a job you can follow.
POST /v1/canvases/:id/generateBring it into your app.
Embed the player, load the canvas, and set its inputs from your own app events.
GET /v1/canvases/:id/exportFrom your backend to your frontend
Generate on your server. Display the finished assets wherever your product needs a little personality.
POST /v1/mascotsCreate your mascot.
Create a project, then a mascot from your prompt or images. Already made one in Studio? Use its ID.
Create a mascot ↗POST /v1/mascots/:id/generateRequest an asset.
Choose the asset and describe what you need. Save the job ID from the accepted request.
Pose & animation guide ↗GET /v1/jobs/:idFollow the generation job.
Poll for completion or receive a webhook. Check each output is ready before putting the file on screen.
Follow a generation job ↗GET /v1/assets/:idUse the finished files.
Download images and videos, or use ready CDN URLs. Your app decides when and where the mascot appears.
Files, exports & hosting ↗The practical part
Your stack is welcome.
REST, JSON, and Bearer authentication. Use fetch, cURL, Python or the HTTP client you already have.
Start with the quickstart ↗Let the job come to you.
Receive signed completion and failure webhooks instead of keeping your app in a polling loop.
Set up webhooks ↗Choose your delivery.
Use hosted CDN URLs or download the exports. Download your files or enable hosting.
Files & CDN hosting ↗Know what to send.
Endpoint schemas, error codes, API versions, and retry conventions, all in the reference.
Open the API reference ↗{ }Building with an AI coding agent? Give it the Vibe Nanny API skill.
Get the skill ↗The little details
Images, poses, animations, speech, stickers, logos, scenes and gaze maps are all available as endpoints.
Create a canvas, add your animations as nodes, and connect them with inputs your app can trigger.
Yes. Every Studio mascot has an ID you can pass straight to the API.
Yes. POST /v1/mascots accepts a text prompt, reference images, or both.
On your server only, as a Bearer token in the Authorization header. Never ship it to the browser.
Poll GET /v1/jobs/:id, or register a webhook to be notified on completion or failure.
No. Every finished asset has a CDN URL on assets.vibenanny.dev. You can also download and self-host.
The API uses the same credits as Studio. Each endpoint lists its credit cost in the reference.
Your next feature has a face.
Get a key. Make your first request. Meet your mascot.