Plans & pricing
Four tiers, one engine. The numbers below are the source-of-truth contract — rate-limiter caps and Stripe metered overage rates derive from the same data.
Plan tiers
Each tier sets a monthly quota included in the canone + an overage rate per 1,000 calls past quota. Overage is billed via Stripe metered usage (one event per scored request).
| Tier | Monthly fee | Quota included | Overage | Daily cap |
|---|---|---|---|---|
| Free | Free | 1,000 / month | Hard cap | 50 / day |
| Starter | €49 / mo | 50,000 / month | €1.50 / 1k calls | 5,000 / day |
| Pro | €249 / mo | 500,000 / month | €0.80 / 1k calls | 50,000 / day |
| Scale | Custom | Unlimited | Contracted | None |
Overage billing
Past the monthly quota, every scored request hits Stripe metered billing with a graduated tier (first N at €0, then the per-1k rate). Free is hard-capped — once the 1,000 calls included are spent, the API returns 429 RATE_LIMITED until the next month rolls over. No surprise bills on Free.
Want to forecast your monthly bill? Open the usage dashboard in your tenant portal — it surfaces your current spend vs the included quota in real time.
Daily safety cap
Independent of the monthly quota, every tier has a per-day safety cap that catches runaway-loop bugs before they melt your bill. Hitting it returns 429 RATE_LIMITED until 00:00 UTC. The cap is set generously above what 1/30th of the monthly quota would imply — burst days are fine, infinite loops aren't.
LLM token budget
The intelligence endpoints draw from a separate monthly token allowance, not the scoring quota:
- Free + Starter — no LLM access (the endpoints return
402 PAYMENT_REQUIRED). - Pro — 500,000 tokens / month. Roughly 500–1,000 explain calls or 100–200 briefings, depending on slot count and locale.
- Scale — 5,000,000 tokens / month. Plus access to
/v1/intelligence/edge-case(Pro doesn't carry it).
Budget resets the 1st of each month UTC. Past quota the API returns 429 LLM_BUDGET_EXCEEDED until the reset. The usage dashboard surfaces remaining tokens alongside the API call count.
Endpoint unlocks
Higher tiers unlock additional surface area. A 402 PAYMENT_REQUIRED response means the endpoint exists but your tenant's plan doesn't include it.
- POST /v1/score
- POST /v1/score/series
- POST /v1/score/multi
- Everything in Free
- POST /v1/score/:id/outcome
- Everything in Starter
- POST /v1/intelligence/explain + briefing (LLM, 500k tokens/mo)
- POST /v1/score/historical (ERA5 reanalysis, up to 20 years)
- POST /v1/score/portfolio (up to 10 spots)
- POST /v1/score/explain-counterfactual
- POST /v1/decision (personalized agent)
- POST /v1/observations + station registry (data assimilation)
- Probabilistic ensemble scoring (30 members)
- Stormglass priority chain (consensus blending)
- Everything in Pro
- POST /v1/intelligence/edge-case (heavier model, deeper passes)
- Higher LLM budget (5M tokens/mo, up from 500k)
- POST /v1/score/portfolio up to 50 spots
- POST /v1/score/historical unlimited years
- POST /v1/projections (CMIP6 + CORDEX climate)
- POST /v1/projections/portfolio + adaptation-report
- POST /v1/underwriting/quote + bind + evaluate (parametric)
- Probabilistic ensemble scoring (50 members)
- Dedicated tenant catalog + private profiles
Upgrading
Upgrade from the tenant portal at console.goable.io/portal/billing. Stripe Checkout handles card collection; you're on the new plan within seconds of payment confirmation. Downgrades and card management flow through the Stripe Customer Portal, reachable from the same page.
Billing happens entirely through the tenant portal. There is no tenant-callable upgrade endpoint on the public API — plan changes are an operator decision, not programmatic. Same for the Customer Portal: you open it from the console, then Stripe takes over.