On this page

Billing and credits

Predictable export costs, subscription allowances and payment management.

Every signed-in customer has a workspace and one credit balance shared by the editor and all their API keys. Browser previews do not spend credits. Visit Billing to manage your balance, subscription, top-ups, payment method and invoices.

Plans

PlanPrice (USD)Included creditsAPI accessCommercial use
Free$010 once per accountNoNo
Maker$19/month2,000 each paid monthYesYes
Pro$49/month10,000 each paid monthYesYes
Credit pack$10 once1,000, no expiry——
PlanStills per minuteAnimations per minute
Free102
Maker6010
Pro30060

Credit packs follow your plan's rate limits and do not unlock paid-plan access.

The free plan covers the editor and browser previews with every generator and format. API keys, the MCP endpoint, and the CLI require a paid plan, and commercial use of generated assets requires a paid plan active at generation time. Unused monthly credits expire at the end of their period. Credits closest to expiry are spent first. A paid upgrade adds the difference between allowances once for that period; downgrades and cancellation take effect at renewal. There are no automatic overage charges.

Render rate limits are enforced per account over a fixed one-minute window and are counted separately for stills and animations. Exceeding a limit returns 429 rate_limited with a Retry-After header; the counters are stored with your account, so a restart or a second API process cannot refill an allowance. Billing actions are limited to 10 per minute and MCP requests to 60 per minute on every plan.

Estimate an export

Still image cost is the final output megapixel count, rounded up, with a one-credit minimum. Animation cost is ceil(output megapixels × loop seconds × 10) at 24 fps. SVG and CSS cost one credit. Final dimensions include pixel ratio.

POST /v1/billing/estimate
Authorization: Bearer YOUR_KEY
Content-Type: application/json

{"generator":"shader-gradient","format":"mp4","params":{"loopSeconds":6},"size":{"width":1920,"height":1080,"pixelRatio":1}}

The response includes credits (125 here), final width, height, seconds and pricingVersion. Parameters and format support are validated exactly as for rendering.

Balances and reservations

GET /v1/billing returns the plan, status, available, reserved, consumed, grants and recent activity. Credits are reserved atomically before a synchronous render, batch item or job starts. Success consumes its reservation once. Failure and cancellation release it. Interrupted synchronous work is refunded after restart; jobs retain their reservation during recovery.

Insufficient credit returns HTTP 402, code insufficient_credits. A refund or dispute can put an account into billing_review until support reconciles it. Downloading an existing job result is free. New rendering requests, including cache hits, spend credits.

Export files are retained for seven days. Download completed files promptly; expired or missing results return 410 result_missing. Export metadata stays in your account. Full storage returns 503 export_storage_full without spending credits.

Checkout and portal

These actions require a browser session and matching Origin header. API keys cannot manage payments.

EndpointBodyResult
POST /v1/billing/checkout{"product":"maker"} (or pro, credits)Hosted Stripe checkout URL
POST /v1/billing/portalnoneCurrent customer's Stripe portal URL

Payment details stay on Stripe. The server selects the customer and price; arbitrary price IDs, customer IDs and return URLs are rejected. Only verified payment webhooks grant credits. A successful browser redirect alone does not add credits.

Typed SDK

const balance = await client.billing.get();
const estimate = await client.billing.estimate('shader-gradient', {
  format: 'png',
  size: { width: 1080, height: 1920, pixelRatio: 2 },
});
console.log(balance.available, estimate.credits); // 9 credits for this output

All SDK methods accept { signal }. Aborting a request does not cancel an already accepted job; call client.jobs.cancel(id) explicitly.

Local preview

The explicit local workspace is unmetered and cannot purchase subscriptions. Real signed-in accounts use their own credits even on a local server. Test checkout uses Stripe test payment details and makes no real charge.