Skip to content

Plans

A plan is a named set of grants. Subscribers receive entitlements by subscribing to a plan (plus optional overrides).

Kind Use
catalog Self-serve / public tiers (Free, Pro, Enterprise)
custom Sales-built packages for one deal or a small set of subscribers
  • Flag grant present → entitled
  • Limit grant → entitled amount (null = unlimited)
  • Config grant → the value for that plan (a config off the plan has no value)
  • Feature absent from grants → not entitled from the plan

Changing a plan’s grants affects all subscribers currently subscribed to that plan (on next check). For one-off deals, use a custom plan or overrides instead of editing a shared catalog tier.

Sales flow: Custom plans. Fields and endpoints: Plans API.

Retiring a plan

Delete only works when the plan was never subscribed (no subscription row, including canceled). If one exists, delete returns 409 and points at archive.

Archive is how you retire a plan subscribers have used. POST /org/plans/{key}/archive sets archived_at. Current subscriptions keep the same entitlements; nobody is moved, and no webhook fires. You can still edit grants, because they still apply to those subscribers. GET /org/plans hides archived plans unless include_archived=true. GET /org/plans/{key} still returns the plan. Creating a subscription on it, or changing a subscription to it, returns 409 PLAN_ARCHIVED.

POST /org/plans/{key}/unarchive clears archived_at. Both calls are idempotent.