Skip to main content
The Alakazam programmable worlds API is in developer preview. No charges are incurred today. The model below takes effect when billing turns on.

What you pay for: runtime

When billing starts, you are charged for one thing, world runtime: That’s the same metric consumers pay on. It tracks the dominant cost (GPU time), so your bill scales with how much your worlds are played.

What’s free: creating, editing, everything else

Creating and operating worlds is free. Generation, edits, character turns, voice, images, and vision are never billed. They’re bounded only by a daily quota (below), which is an abuse guard rather than a charge:
  • POST /v1/worlds, POST /v1/characters: generation
  • POST /v1/worlds/{id}/edit: edit
  • POST /v1/characters/{id}/say · /tts · /image
  • POST /v1/seed-frame · /probe · /perceive · /ground/*
  • POST /v1/sessions/token: minting a session
You can iterate freely (generate, test, regenerate) without watching a per-call meter. You only pay when players spend time in your worlds.
Test-mode usage is never billed (permanently, even after billing turns on). A test key returns mocked responses; the generative endpoints don’t consume the daily quota, though minting a session token still reserves against a separate test-namespace counter (never billed). Build against the sandbox at near-zero cost, then switch to a live key.

Daily quota (free-tier rate caps)

Every operation above is counted against a per-app daily quota (reset at UTC midnight). This caps free usage so no single app can burn shared GPU/vendor capacity. It is not a charge. Usage is reserved before any GPU spend, so you’re never counted for work that didn’t happen. A failed generation is refunded automatically. Quotas are per app: these are the free developer-tier defaults, and higher caps can be granted to an individual app (design partners / enterprise) without affecting anyone else. GET /v1/usage always reports your effective caps. If you need more headroom, contact the team and the raise shows up there immediately. Enterprise teams that need to run their own backend can do so under a private agreement: your own conjure-service against your own Reactor account, not the shared hosted API. It’s a talk-to-us arrangement, not a self-serve toggle, contact the team to scope it. If you exceed a daily quota, the call returns 402 and nothing is created:
Quota is enforced fail-closed. If the metering backend is briefly unavailable, the call returns 503 rather than allowing unmetered usage.

Rate limits vs. quota

Two independent limits, easy to confuse:
  • Quota (this page): a daily per-app cap per kind → 402 when exhausted, resets at UTC midnight.
  • Rate limits: a per-minute throughput cap per API key (rolling 60s window) → 429, retry with backoff.
You can be well under your daily quota and still hit a 429 if you burst too fast, and vice-versa.

Check your usage

GET /v1/usage returns today’s usage against your caps:
caps is your app’s effective cap map: the free-tier defaults merged with any per-app raises granted to you. resets_at is the next UTC midnight, when the daily counters roll over. The developer dashboard renders the same numbers as live meters (profile / usage / billing / api keys).