Plans and quotas
This page is about amounts. All three surfaces — docs, community and blog — are in every plan, with the same unified search, the same identity and the same API, and the tables below are the only thing a tier changes about them.
Three things are sold by tier rather than metered, and they are the one part of the product this page does not govern: a custom domain from Starter, SSO/SAML/SCIM from Business, and org-wide MFA, audit and priority support from Enterprise. The pricing page is where they are listed, a column each.
This page used to open with a blanket promise that no tier could reach less of the product than any other, over a pricing table that names those three by tier. A customer read the two together and called it a bait (Crossly D-11), and they were right to. Naming the tier each one starts at is the fix — it is still the claim that sells, and it is the one that survives being checked.
The quota table was missing from this page: it promised "Plans differ by these quotas" and then listed nothing. Here it is.
The limits
Unlimited means there is no cap.
Free | Starter | Business | Enterprise | |
|---|---|---|---|---|
Staff seats | 2 | 5 | 15 | Unlimited |
Forum categories (per community) | 10 | Unlimited | Unlimited | Unlimited |
Translation languages | 2 | Unlimited | Unlimited | Unlimited |
File storage | 5 GB | 20 GB | 100 GB | 200 GB |
Emails per month | 20,000 | 100,000 | 300,000 | 1,500,000 |
Page views per month | 500,000 | 500,000 | 500,000 | 1,000,000 |
AI credits per day | 100,000 | 500,000 | 1,000,000 | 5,000,000 |
API requests per minute | 300 | 600 | 1,800 | 6,000 |
A few notes on individual rows, because each one is measured differently.
Staff seats count people who can edit. Readers are not seats, however many of them you have, and a reader who signs in to a gated space is still not a seat.
Translation languages are unlimited on every paid plan. On Free you can publish in two languages besides your source language, in docs and content spaces alike.
Forum categories, translation languages, storage and staff seats are counted live from their own tables, so a deletion frees the quota immediately. Forum categories are counted per community space: each forum on the Free plan holds 10, however many forums you run. GET /orgs/{orgId}/plan reports the fullest space as used and every space under bySpace.
Emails, page views and AI credits are metered into counters — monthly for the first two, daily for AI. A monthly counter rolls over on your billing period, not on the first of the month.
AI credits only apply to AI features you have enabled, and those run on your provider key. See AI features and bring-your-own-key. A credit is a unit of our orchestration, not a charge from your provider — your provider bills you separately for the tokens.
API requests per minute is per organization for an authenticated caller. An anonymous caller is limited to 120 a minute per IP, on every plan, because a per-IP bucket is the wrong place to sell capacity. A handful of public endpoints are tighter still and declare their own limit in RateLimit-Policy.
Content spaces (headless CMS)
A content space serves structured content to your own website through the delivery API. Its amounts are on the same plan, and media uses the same file storage as everything else.
Free | Starter | Business | Enterprise | |
|---|---|---|---|---|
Content entries (per organization) | 1,000 | 10,000 | 100,000 | Unlimited |
Content types (per space) | 10 | 25 | 100 | Unlimited |
Delivery API requests per month | 100,000 | 1,000,000 | 5,000,000 | 50,000,000 |
Reference depth per delivery request | 2 | 3 | 5 | 10 |
Versions kept per entry | 10 | 50 | 200 | Unlimited |
Redirect rules (per content space) | 50 | 500 | 5,000 | Unlimited |
Webhook endpoints (per content space) | 2 | 5 | 20 | 100 |
Delivery keys (per content space) | 3 | 10 | 50 | Unlimited |
Delivery requests count requests made with a delivery key. Requests your site's CDN answers from its cache never reach us and are not counted.
Reference depth is how many levels of references one request may expand. It is finite on every plan, Enterprise included, because each level multiplies the work a single request can cause.
Entries count each entry once, whatever number of languages it is translated into, and an entry in the trash does not count.
Some content-space features are included from a given plan, and each later plan includes everything in the plans before it:
Feature | Included from |
|---|---|
Delivery API, publishable keys, draft preview, routes and catch-all pages, importers | Free |
Live preview, computed fields, hosted output, AI for content | Starter |
Visual editing and click-to-edit encoding, releases, review workflow, per-locale grants | Business |
Environments | Enterprise |
Using a feature your plan does not include returns 402 with the code quota.exceeded, the same error as a limit. details.feature names the feature and details.requiredPlan names the plan that includes it.
Forms and payments
Forms are on every plan, the free plan included, with every field type, branching, scoring and integration. Taking payments (a paid form, and the shop's products, cart and checkout) is included from Starter. Payments go through your own Stripe account and we take no cut; the paid-plan rule is a brake on fraud, because free accounts accepting payments are a common abuse vector.
A payment your plan does not include returns 402 with the code plan.required (not quota.exceeded: nothing was used up), with details.feature: ["commerce.payments"] and details.requiredPlan: ["starter"]. Paid forms and products that existed before 20 October 2026 are grandfathered and keep working. Details in Payments and the shop.
Add-ons
A limit can be topped up individually without changing tier. An add-on adds to the plan's limit; on a tier where the limit is already unlimited it stays unlimited.
Reading your own usage
GET /orgs/{orgId}/planReturns your tier, current usage for each counted metric under metrics, every limit under limits (including the ones with no usage to count, such as reference depth), and under features whether your plan includes each plan feature (commerce.payments, content.releases, …). That is the call to put on your own dashboard rather than inferring from this table — the numbers here are the defaults and your organization may have add-ons.
You are warned before you hit a wall rather than at it.
Changing plan
Open Plan in the organization console. If your organization needs an invoice rather than a card, or a limit that is not on the table, write to us.
Paying by card goes through Stripe. POST /orgs/{orgId}/billing/checkout opens a checkout and POST /orgs/{orgId}/billing/portal the billing portal (both need org.manage_billing). Stripe then reports what happened to POST /billing/stripe/webhook, which accepts only events carrying a valid Stripe signature; there is nothing for you to configure. A completed checkout moves the organization to the plan it bought, a subscription that changes price moves it to that price's plan, and a subscription that is cancelled, unpaid or expired returns it to Free.
Corrections to what you may have read elsewhere
Two things on the public pricing page contradict this one, and this page is the accurate one:
The pricing page gates
Custom domain,SSO, SAML & SCIM,Org-wide MFA & auditandPriority supportby tier. The product does not enforce those four by plan. Custom domains and SSO work on every tier. The only features the product enforces by plan are the content-space features listed above.The pricing page says you can "host it yourself on any tier". You cannot. Forumulate is hosted; we run it, monitor it and back it up. There is no self-hosted edition and no plan that includes one.
In the API
Every operation below is also reachable from the other surfaces without a dedicated command. forumulate api <Operation> calls it from the CLI, the JavaScript SDK has a typed method for each one (the last column names it; the Python and Go clients are generated from the same spec), and an agent reaches the organization-scoped ones through the MCP call_api tool. Where a CLI command or MCP tool exists too, the last column names it. Operation names link to the API reference.
Billing
Operation | Request | What it does | Shortcuts |
|---|---|---|---|
| Get the billing in an organization |
| |
| Create the checkout in an organization (billing) |
| |
| Create the portal in an organization |
|
Growth
Operation | Request | What it does | Shortcuts |
|---|---|---|---|
| List conversions in an organization |
| |
| Replace the experiment |
|
Onboarding
Operation | Request | What it does | Shortcuts |
|---|---|---|---|
| List surfaces |
| |
| Get the availability |
| |
| Create the onboarding |
|
Org plan
Operation | Request | What it does | Shortcuts |
|---|---|---|---|
| Get the plan in an organization |
| |
| Update the plan in an organization |
| |
| Update overrides in an organization |
|