Billing & Usage
Understand monthly Action usage, plan limits, overage behavior, and the billing API.
ActionBox measures usage on the server. The billing page and GET /v1/billing
return the active workspace's current plan, live Action count, limits, and
overage meter. The usage period starts at midnight UTC on the first day of each
month.
Plan limits
| Plan | Live Actions included / month | Active Sources | Devices | Watches | History | Context / Action |
|---|---|---|---|---|---|---|
| Developer | 250 | 3 | 2 | 3 | 7 days | 16 KB |
| Pro | 1,000 | Unlimited | Unlimited | 20 | 30 days | 64 KB |
| Founder | 1,500 | Unlimited | Unlimited | 50 | 90 days | 64 KB |
| Team | 5,000 | Unlimited | Unlimited | 50 | 90 days | 128 KB |
Team includes 5 seats for active members and unexpired pending invitations. The
billing owner manages its subscription. Changing that person's workspace role
does not move the subscription to another owner. Other members must leave every
shared Team workspace before purchasing a separate subscription for their
personal workspace; a valid pending Team invitation must first be accepted,
revoked, or allowed to expire. Read the account-specific state from
GET /v1/billing/purchase-eligibility before opening checkout.
Additional members cost $8 USD each per month, plus applicable tax, purchased from Subscription → Add capacity. Each purchase creates a separate recurring subscription; cancel it separately in Billing when no longer needed. Capacity becomes available after payment confirmation. Founder sales are closed; existing purchases retain their allowance.
All plans block new live Actions at their available allowance. Pro and Team can purchase 1,000-Action packs for $8 and $5 USD respectively, plus applicable tax. Packs apply to the UTC calendar month in which payment completes, expire at its end, and do not roll over or renew automatically. There are no automatic usage charges. Existing Actions remain available for decisions, and Watch incidents continue to be recorded even when Action creation is capped. Prices and checkout status are authoritative on the pricing page and billing portal; do not hard-code a price in an integration.
Decision health in Usage
The authenticated Usage page includes workspace-level decision health for all retained live Actions. Depending on the data available, it shows Actions created and resolved, median decision time, resolution, expiration and escalation rates, outcome coverage, and outcome failure or rollback rates.
Decision-context adoption and its observed latency comparison appear only when both Actions with decision context and Actions without it contain resolved records. Optional metrics stay hidden when the retained history is too small; the dashboard does not invent a benchmark, target, or individual-member score.
Observed workspace history
Decision health is an aggregate operational view over retained live Actions, not a configurable reporting window or an employee-performance measure.
Read the authoritative snapshot
Use a user session to read billing data:
curl -fsS https://api.actionbox.cloud/v1/billing \
-H "Authorization: Bearer $ACTIONBOX_USER_TOKEN"The response includes entitlements, usage_count, overage_actions,
overage_charge_usd (zero for prepaid usage), purchased_actions,
additional_members, period_start, and the billing status. A workspace keeps
a separate billing owner identity; only that person can open the customer billing
portal through POST /v1/billing/portal.
Read quota headers from Action creation
Source-authenticated Action-creation responses include these useful headers:
| Header | Meaning |
|---|---|
X-Actionbox-Plan | Plan used for this request |
X-Actionbox-Quota-Limit | Total available live Actions, including purchased packs |
X-Actionbox-Quota-Remaining | Included Actions not yet used, never below zero |
X-Actionbox-Quota-Reset | Unix timestamp for the next UTC monthly period |
X-Actionbox-Overage-Actions | Live Actions above the included allowance |
X-Actionbox-Overage-Rate | Meter rate, or hard-block on Developer and Founder |
Treat the response body and headers as informational. Admission is decided by the server at create time, so do not rely on a locally cached counter to decide whether to submit an Action.
What gets blocked
| Error | Meaning | Fix |
|---|---|---|
429 QUOTA_EXCEEDED | Available live Action allowance is exhausted | Buy packs on an eligible paid plan, wait for the next period, or upgrade. |
429 RATE_LIMITED | Request-rate or hourly admission limit was reached | Honor Retry-After, add bounded backoff, and spread worker retries. |
403 SOURCE_LIMIT_REACHED | Too many active Sources for the plan | Revoke an unused Source or review the plan. |
403 DEVICE_LIMIT_REACHED | Too many active connected devices | Revoke an old installation or review the plan. |
403 WATCH_LIMIT_REACHED | Too many active Watches | Archive an unused Watch or review the plan. |
413 PAYLOAD_CONTEXT_TOO_LARGE | Context exceeds the plan's per-Action ceiling | Summarize the context and link to an access-controlled artifact. |
Exact idempotency retries and deduplicated replays remain safe even when a hard-capped workspace has reached its quota. Use the same idempotency key only for the same request body; a changed body requires a new key.
Billing recovery
If the dashboard reports that live pricing is temporarily unavailable, do not
assume a price or retry checkout in a loop. Confirm the plan and status from
GET /v1/billing, then retry the billing page once live pricing is available
again. Your current plan is unchanged while checkout is unavailable.
Keep billing support safe
For a billing question, send the workspace ID, plan/status, approximate UTC
time, HTTP status, and X-Request-ID. Never send a payment method, customer
portal URL, Source key, user token, webhook secret, or full billing response
if it contains personal or payment data.
Watch capacity is per workspace. Paused Watches count; archived Watches do not. Existing Watches are retained when a workspace is above its limit, but new Watches cannot be added until capacity is available.