Limits and timing
How long things take, how many you can start at once, and what counts against your usage allotment.
How long things take
| Operation | Typical | Notes |
|---|---|---|
| Kernel run, short brief | 1–4 min | |
| Kernel run, full-length | 15–20 min | Several draft-and-review rounds |
| Arena run (research) | 3–10 min | Longer with many source URLs |
| Enhance pass | 1 to 5 min | Per pass, per post |
| Collection run from a topic | 20 to 60 min | Research + write + passes + publish + rebuild |
| Phantom site to live | 2–5 min | Subdomain; custom domain adds DNS time |
| One-call phantom onboarding | ~10 min to live | First posts continue afterwards |
| Phantom configuration | 2–5 min | |
| Cover image generation | under a minute | Per variant |
All of these are start-then-poll; see KB-405.
What runs at once
- One kernel run per post and one arena run per post. Auto-Pen blocks a hosted arena run while it owns the post. Different posts run in parallel; a standalone arena run takes no lock.
- One Auto-Pen per post.
- Background sweeps advance every running job every few minutes (every two minutes for site provisioning), so a job you stop polling still finishes. A job that makes no progress for six hours is closed as failed.
Rate limits per API key
Limits are per key and per minute. Reads and status polls are generous; tools that start AI work are tight.
| Kind | Limit |
|---|---|
| Arena runs, phantom launches and configuration, collection runs, site creation, domain purchases, image and visual generation, Enhance passes | 5 per minute |
| Creating seers, templates, landing pages, social profiles, shredder endpoints, canvases, invites, and suggestions | 10 per minute |
| Everything else | 1,000 per minute (the per-key default; set a lower one when you create the key) |
A 429 carries Retry-After. Nothing was started. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. You can set a lower limit on a key when you create it.
Domains
Buying a domain through the API must price under $30, and an organization can hold at most two custom domains; the same cap applies when you connect a domain you already own. Connecting costs nothing but needs the same phantom:domain capability.
Usage allotment
Writing, research, Enhance passes, image generation, and seer runs use AI credits. Settings → Usage shows credits used, the share of your allotment, and where the credits went. When you reach the allotment, the app shows a notice to book a call and, where enforcement is on, start-work tools return 402 with the same message. Reads keep working.
Balances, per primitive
Separately from the AI allotment, each primitive you can call directly has its own balance. Only calls you make yourself count: a run another part of Letterstory started on your behalf is recorded but billed to that product (KB-407). A run that errors is free.
| Balance | On the house | What spends it |
|---|---|---|
Kernel runs (get_kernel_run_balance) | 10 | run_kernel, the Kernel Studio |
Shreds (get_shred_balance) | 10 | run_shred, the Shredder Studio |
Arena runs (get_arena_run_balance) | 50 | run_arena, the Arenas Studio, the post's Research panel |
Seer runs (get_seer_run_balance) | 50 | run_seer, a dry run, the run-now button |
Hosted phantom sites (get_phantom_balance) | 3 live | A site being live, not its posts |
Collection runs are not metered per post. Each publication has a weekly cadence (posts per week, capped at six for your organization by default), and a run you ask for spends that week's budget. Past the budget the call is refused with a 429 rather than queued.
Sizes
| Thing | Limit |
|---|---|
A kernel input | 200,000 characters |
| A draft body | 1,000,000 characters |
| Arena run: source URLs | 20 |
| Arena run: must-include sections | 40 |
| Internal links per post | 5 |
| Cover variants per request | 4 models |
| First posts seeded by onboarding | 10 |
| Text per shredder call | 200,000 characters |
| Strategy context, per pass | 10 links, 10 documents of up to 10MB each |