Plans
The catalogue of billing plans, their prices and included quotas. Public on the pricing page, also exposed via the API.
Overview
Plans is the source of truth for pricing. Each plan has a name, a monthly price and per-resource quotas (AI tokens, transcription minutes, WhatsApp conversations, emails). Public plans render on the pricing page.
Quotas drive usage. A plan can be a hard limit (usage cuts off at quota) or soft. Card gating protects the AI routes and returns a banner when billing is missing.
The catalogue is readable without authentication via GET /v1/plans, the exact same data as the marketing pricing page. Handy for an external comparator or a partner site.
What the module does
Plan catalogue
Public plans (is_public) are ordered for display. Each plan carries its monthly price in cents and its included quotas.
- Claude input and output tokens
- Transcription minutes, compute units
- WhatsApp conversations, included emails
- Hard or soft limit per plan
Quotas and entitlements
Each feature and each limit has a typed key. Entitlements resolve per plan, module access is checked server-side. A feature above the plan triggers an UpgradePrompt.
Card gating
AI routes require a saved card. Without valid billing, the response is a 402 with an upgrade banner, not a silent failure.
Public plans API
GET /v1/plans returns the catalogue without authentication. The first public API endpoint besides health, because the data is already public on the site.
How to use it
- 01
Browse the catalogue
The pricing page renders public plans, or read GET /v1/plans without auth.
- 02
Pick a plan
At signup or in onboarding, you pick your plan with its attached card.
- 03
Spend within quotas
AI, transcription and messaging usage draws down the plan quotas.
- 04
Upgrade
A feature above the plan opens an upgrade checkout, with no interruption.