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.
Recommend-spot meter
POST /v1/recommend-spot bills on a separate meter from scoring: one call fans out to multiple internal spot scores, so it's priced independently:
| Tier | Included / month | Overage | Daily cap |
|---|---|---|---|
| Free | 20 / day for testing · not billed | Hard cap (no overage) | 20 / day |
| Starter | 1,500 / month | €7.50 per 1,000 over quota | 500 / day |
| Pro | 5,000 / month | €4.00 per 1,000 over quota | 5,000 / day |
| Scale | Unlimited | Contracted ceiling | None |
Free has no Stripe overage SKU for recommend: the daily safety cap is the only ceiling, and it's never billed. Radius and topK caps per plan are documented on the recommend-spot reference.
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 (Anthropic BYOK)
The intelligence endpoints, /v1/decision's reasoning narrative, and /v1/score/explain-counterfactual's natural_language block are open on every plan, including Free: they run on your own Anthropic key, not a Goable-managed one. Set it via PUT /v1/tenant/llm-key from any plan; full walkthrough at Bring your own Anthropic key. Without a key, these surfaces degrade to a deterministic template (or, for the three standalone intelligence endpoints, return 503 INTELLIGENCE_UNAVAILABLE); they never gate on plan.
- Every plan: a flat 500,000 tokens / month spend guard by default, once a key is set. Roughly 500–1,000 explain calls or 100–200 briefings, depending on slot count and locale. This isn't a plan perk; it's a runaway-loop guard on your own Anthropic bill, not Goable's.
- Briefing slot cap still scales with plan (a genuine request-shape limit, unrelated to the key/budget): 12 slots on Free/Starter, 24 on Pro, 96 on Scale.
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 or 403 PLAN_UPGRADE_REQUIRED response means the endpoint exists but your tenant's plan doesn't include it.
Some higher-tier surfaces are still maturing: climate projections and parametric underwriting are research-stage, and coverage for historical and recommend-spot varies by region. The list below describes plan gating, not a guarantee that every surface is generally available; each endpoint's own reference states its current status.
- POST /v1/score
- POST /v1/score/series
- POST /v1/score/multi
- POST /v1/score/explain-counterfactual (analytical blocks always on; natural_language needs your own Anthropic key)
- POST /v1/intelligence/explain + briefing + edge-case (needs your own Anthropic key)
- POST /v1/decision (needs your own Anthropic key for the reasoning narrative; the score + personalization blend work regardless)
- PUT/GET/DELETE /v1/tenant/llm-key (set/rotate/remove your Anthropic key)
- POST /v1/recommend-spot (25km × top-5, no personalization)
- POST /v1/score/:id/outcome + POST /v1/outcomes (needs the outcomes:write scope on a live key, no plan gate)
- Station registry: POST/GET/PATCH /v1/observations/stations
- Everything in Free
- POST /v1/recommend-spot (50km × top-10, still no personalization)
- Everything in Starter
- POST /v1/score/historical (ERA5 reanalysis, up to 20 years)
- POST /v1/score/portfolio (up to 10 spots)
- POST /v1/observations (submit readings; station registry itself is free-tier)
- POST /v1/recommend-spot (200km × top-20, personalization unlocked)
- Probabilistic ensemble scoring (30 members)
- Stormglass priority chain (consensus blending)
- Premium multi-model consensus: a premium partner model as a 3rd skill-weighted forecast opinion (added where the premium partner model is available; otherwise the score transparently falls back to the base consensus)
- Everything in Pro
- 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/recommend-spot (1000km × top-50)
- POST /v1/underwriting/quote + policy/bind + policy/:id/evaluate (parametric; policy/:id/settle is platform_admin-only regardless of plan)
- 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.