Skip to main content

Every plan we sell, priced and specified

GET 

/api/v1/billing/catalog

The published offer: what each plan costs and what it includes.

This exists so a price and a cap are written down once, on the server. The client used to carry both — a price grid that no gate compared against the billing provider, and a cap table kept honest by a test that regex-matched a TypeScript file. Both said, in their own comments, to delete them when an endpoint existed.

Every number here is catalogue data about a PLAN. It is never an organization's own entitlements: those resolve through the per-org override layer and reach the client on /auth/me, which is the only surface that can be right for a customer on a negotiated contract.

  • Scope required: billing:read. The catalogue names no organization, but it is billing data and it reads like the rest of this router.

Responses

Successful Response