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

Credits and costs

See what each generation costs, check your balance and buy credits.

What generation costs

OperationCredits
One image, image edit, or preview1 per generated image
Animation, Standard2 per second (2 to 15 seconds)
Animation, Premium6 per second (4 to 30 seconds)
Source image for an animation1 when a new image is needed
From Video, Premium only6 per second (4 to 30 seconds), plus 1 for the pose image
Talking animation2 per second (120 a minute), up to 5 minutes, settled once the voice is recorded
Talking estimate (dry_run: true)0
Three voice samples1
Logo5
SVG from a logo or image30
Background3
Sticker from an image1
Animated sticker from an animation0
Cursor follower (nine directions)9
Reversing an existing video0

No credits for background removal, format conversion, resizing, uploads, reading metadata, analyzing an image or website, or reviewing a generation plan. Preview images are paid even though their URLs expire.

What credits cost

Bigger purchases give more credits per dollar, so a minute of talking costs $18 with the smallest pack and $13.33 from $1,000. Any amount from $10 works in Billing.

PurchaseCreditsTalking it buysPrice per minute of talking
$1510050 seconds$18.00
$504003 min 20 s$15.00
$2001,70014 minutes$14.12
$1,0009,00075 minutes$13.33

Amounts below $50 give 6⅔ credits per dollar, $50 to $199.99 give 8, $200 to $999.99 give 8.5, and $1,000 or more give 9.

Check your balance

Run masko credits (or --json), or await Masko.client().credits() in the TypeScript SDK. masko whoami shows the account and workspace it belongs to.

curl https://api.masko.ai/v1/credits \
  -H "Authorization: Bearer $MASKO_API_KEY"
{
  "data": {
    "subscription": 450,
    "topup": 100,
    "total": 550
  }
}

Subscription credits are spent before top-up credits. Buy credits and see terms in Billing; asset hosting is billed separately.

Buy credits from an API or agent

Create a Stripe-hosted checkout page for your credential's workspace; it never charges a saved card or buys automatically. Team purchases require the active team owner.

curl https://api.masko.ai/v1/credit-checkouts \
  -H "Authorization: Bearer $MASKO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: credit-purchase-001" \
  -d '{"amount_cents":2000}'
  • amount_cents: whole USD cents from 1000 to 1000000 ($10 to $10,000). Send no organization ID, price, credit quantity, payment method or return URL.
  • The response has id, url, credits, amount_cents, currency, organization_id, expires_at and status_url. Open url to confirm the final amount on Stripe; never give card details to an agent.
  • After a timeout, reuse the same Idempotency-Key and body (replays last 24 hours). If the URL expired, check status before buying again.
curl https://api.masko.ai/v1/credit-checkouts/CHECKOUT_ID \
  -H "Authorization: Bearer $MASKO_API_KEY"

Only its creator can read a checkout, from the same workspace. A paid checkout with credits_added: false is still delivering credits, so check again rather than paying twice; balance is the workspace balance, not a receipt. Only Stripe's verified webhook grants credits, once; reading status never does.

Connected agents get create_credit_checkout (amount_cents and a stable UUID operation_id) and get_credit_checkout (id). Create a checkout only when the user asks to buy credits; it is a hosted link, not an automatic payment. ChatGPT does not get these tools: it spends the credits already in the workspace you connected, and you buy credits in Billing.

Approve a plan

For canvas generation, dry-run first, then submit the same selection, approved plan ID and graph hash, so a changed graph cannot silently cost more.

Credits are allocated when work is accepted, and a client timeout does not prove failure. Check the job or run before retrying, and use persisted idempotency keys where supported; /generate has no run-level replay.

Insufficient credits

A rejected request returns HTTP 402:

{
  "error": {
    "code": "insufficient_credits",
    "message": "Insufficient credits",
    "details": {
      "required": 21,
      "balance": 5
    }
  }
}

Rely on error.code; messages and optional details differ by endpoint.

Failures and refunds

A partly failed run can still hold successful paid assets. Runs report allocated_credits, credits_refunded and refund_status where available; a missing refund value promises nothing.

If the source video succeeded but transparent formats failed, use media repair instead of a new paid generation (generation progress and repair).