Plans and limits
Limits are enforced per project and per calendar month (PLAN_LIMITS in apps/api/src/services/usage.ts). A project's plan and current usage are returned by GET /v1/projects/:pid (limits, usage) and shown on the project overview in the console.
| Plan | Actions / month | Approvals / month | Protected services | History (receipt retention) | Collaborators |
|---|---|---|---|---|---|
free | 1,000 | 50 | 1 | 14 days | 3 |
team | 25,000 | 1,000 | 5 | 90 days | 15 |
business | 250,000 | 10,000 | 25 | 365 days | 100 |
control | no limit | no limit | 10,000 | 2,555 days (7 years) | 10,000 |
New projects start on free. Organisations default to control.
What happens at a limit
The brief's rule is that hitting a quota must never cost authority, evidence or money without consent. In the current code:
- Actions. Submitting a new action when the month's action count has reached the limit returns
402 quota_exceeded. Replays of existing actions (same operation key), status reads, resume, cancel, approvals already requested and receipts all keep working, so work in flight finishes. - Overage on paid plans. On
teamorbusiness, a project withspend_limit_centsabove zero (PATCH /v1/projects/:pid) may exceed the included actions; that spend limit is the consent.freenever exceeds. - Services. Creating a service beyond the plan's count returns
402 quota_exceeded. - Approvals, receipts and verifications are metered (visible in
usage) but not blocked. - Retention. Each receipt is stored with
retain_until= issue time + the plan's history days. The 5-minute maintenance sweep deletes receipts pastretain_until, unless they are on legal hold, and only for actions that reachedsucceededorfailed: evidence for work still in flight (includingoutcome_unknown) is kept. - Collaborators. Inviting a project member returns
402 quota_exceededonce current members plus pending invitations reach the plan's collaborator count.
Card checkout
Plan entitlements and the spend limit are real settings. Card checkout is not connected in this preview: the console shows the upgrade terms and says so, and no payment is taken. Changing a project's plan is not exposed through the API.
Pricing hypotheses
Prices are not set. The product brief (§8) lists candidate figures for testing only; they have no validated willingness-to-pay or margin evidence behind them.
| Offer | Candidate | Notes |
|---|---|---|
| Gateway Free | US$0 | One small project or service, real approvals, signed receipt export, short history. No card needed. |
| Gateway paid, self-service | Candidate monthly card prices of US$19, US$49 and US$199 | Tier-by-tier quotas and entitlements require validation. |
| Control, enterprise | Illustrative US$25,000–50,000 annual entry contract | Sizing unit under test: protected production applications or services, plus usage bands. |
The tier limits in the table above are engineering defaults that make the quota behaviour testable; they are not published commercial terms.