Plans
GET /plans returns the public plan catalog. No authentication required — this powers the marketing site’s pricing table.
List plans
Section titled “List plans”GET /plans[ { "slug": "free", "name": "Free", "tier": 0, "monthly_limit": 100, "stripe_price_id": null }, { "slug": "hobby", "name": "Hobby", "tier": 1, "monthly_limit": 5000, "stripe_price_id": "price_..." }, { "slug": "pro", "name": "Pro", "tier": 2, "monthly_limit": 25000, "stripe_price_id": "price_..." }, { "slug": "scale", "name": "Scale", "tier": 3, "monthly_limit": 150000, "stripe_price_id": "price_..." }]Ordered by tier ascending. Free plans (no stripe_price_id), private plans (public: false), and archived plans (archived_at set) are not returned.
Field reference
Section titled “Field reference”| Field | Notes |
|---|---|
slug | Stable identifier; use this in POST /billing/checkout. |
name | Display name. |
tier | Integer hierarchy. Higher = more capable. Used for “requires Pro tier or higher” feature gates. |
monthly_limit | Send limit per billing period. |
stripe_price_id | Stripe Price object the Checkout session subscribes to. null for free plans. |
Custom plans
Section titled “Custom plans”Plans with public: false (e.g., one-off custom deals) are not listed here. They’re assigned manually by an admin and visible only via GET /billing/subscription for the account they belong to.