API reference · Public
Get pricing
GET/v1/pricing
The plans, their prices and every allowance, as data. Also at `/.well-known/langbot-pricing.json`.
On this page
Auth. None. Without a token the call is served as Free (the Free delay and request budget, shared per IP); send Authorization: Bearer lb_… for your plan's.
Limits. Counts against your plan's API requests (60, 600 or 3,000 a minute on Free, Builder and Standard).
Request
curl "https://api.langbot.ai/v1/pricing"import httpx
r = httpx.get("https://api.langbot.ai/v1/pricing")
print(r.json())const res = await fetch("https://api.langbot.ai/v1/pricing");
console.log(await res.json());Response
200 OK
{
"v": 2,
"currency": "USD",
"billing": "flat_monthly",
"principle": "every feature on every plan; plans differ only in usage and speed",
"features": ["The live record over WebSocket, SSE and REST", "Signed webhooks"],
"quota_dimensions": [
{
"dimension": "requests",
"label": "API requests per minute",
"period": "minute",
"unit": "requests"
},
{
"dimension": "streams",
"label": "Concurrent streams",
"period": null,
"unit": "concurrent streams"
}
],
"plans": [
{
"id": "free",
"name": "Free",
"price_usd_month": 0,
"price_usd_call": 0,
"delay_seconds": 60,
"realtime": false,
"purchasable": false,
"quotas": {
"requests": {"limit": 60, "period": "minute", "unit": "requests"},
"streams": {"limit": 1, "period": null, "unit": "concurrent streams"},
"subscriptions": {"limit": 5, "period": null, "unit": "subscriptions"},
"tokens": {"limit": 5, "period": null, "unit": "API tokens"},
"webhook_endpoints": {"limit": 1, "period": null, "unit": "webhook endpoints"},
"webhook_deliveries": {"limit": 100, "period": "day", "unit": "webhook deliveries"},
"history_queries": {"limit": 500, "period": "day", "unit": "history queries"},
"model_calls": {"limit": 100, "period": "day", "unit": "model calls"},
"sim_runs": {"limit": 20, "period": "month", "unit": "Sim runs"}
},
"limits": {
"subscriptions": 5,
"tokens": 5,
"requests_per_min": 60,
"concurrent_streams": 1,
"webhook_endpoints": 1,
"webhook_deliveries_per_day": 100,
"history_queries_per_day": 500,
"model_calls_per_day": 100,
"sim_runs": {"runs": 20, "period": "month"},
"history_window_days": null
},
"features": ["The live record over WebSocket, SSE and REST", "Signed webhooks"],
"includes": [],
"enforced_delay_ms": 60000
},
{
"id": "pro",
"name": "Builder",
"price_usd_month": 49,
"price_usd_call": 0,
"delay_seconds": 10,
"realtime": false,
"purchasable": true,
"quotas": {
"requests": {"limit": 600, "period": "minute", "unit": "requests"},
"streams": {"limit": 5, "period": null, "unit": "concurrent streams"},
"subscriptions": {"limit": 25, "period": null, "unit": "subscriptions"},
"tokens": {"limit": 20, "period": null, "unit": "API tokens"},
"webhook_endpoints": {"limit": 5, "period": null, "unit": "webhook endpoints"},
"webhook_deliveries": {"limit": 10000, "period": "day", "unit": "webhook deliveries"},
"history_queries": {"limit": null, "period": "day", "unit": "history queries"},
"model_calls": {"limit": null, "period": "day", "unit": "model calls"},
"sim_runs": {"limit": 100, "period": "month", "unit": "Sim runs"}
},
"limits": {
"subscriptions": 25,
"tokens": 20,
"requests_per_min": 600,
"concurrent_streams": 5,
"webhook_endpoints": 5,
"webhook_deliveries_per_day": 10000,
"history_queries_per_day": null,
"model_calls_per_day": null,
"sim_runs": {"runs": 100, "period": "month"},
"history_window_days": null
},
"features": ["The live record over WebSocket, SSE and REST", "Signed webhooks"],
"includes": [],
"enforced_delay_ms": 10000
}
],
"per_call": {
"payment": "x402",
"currency": "USD",
"plan_equivalent": "pro",
"prices": {
"evidence_pack": {
"price_usd": 0.25,
"description": "Langbot evidence pack (CONTRACTS §14): the signed record of what was said on a market's event, with receipts; never a verdict.",
"endpoints": ["GET /v1/markets/{ticker}/evidence"]
},
"provenance_report": {
"price_usd": 0.1,
"description": "Langbot provenance report (CONTRACTS §13): what an account knew when it acted, signed.",
"endpoints": ["GET /v1/provenance/{attestation_id}"]
},
"replay_bundle": {
"price_usd": 0.5,
"description": "Langbot replay bundle (CONTRACTS §11.5): every receipted event of a live event with its checkpoints.",
"endpoints": ["GET /v1/events/{event_id}/replay"]
},
"history_query": {
"price_usd": 0.05,
"description": "Langbot history query (CONTRACTS §4, §24): settled outcomes, base rates, speaker profiles, the one-call market context or the fair-value model, full archive.",
"endpoints": ["GET /v1/history/outcomes", "GET /v1/history/base-rates"]
},
"facts_query": {
"price_usd": 0.02,
"description": "Langbot facts query (CONTRACTS §4, §18, §24): Langbot's own phrase facts (`phrase_detected`), the market brief or the live model, full archive, Pro delay.",
"endpoints": ["GET /v1/history/mentions", "GET /v1/markets/{ticker}/brief"]
},
"sim_run": {
"price_usd": 0.25,
"description": "Langbot Sim run (CONTRACTS §22): a built-in strategy replayed against an event's recorded feed and Kalshi order books, with a scorecard.",
"endpoints": ["POST /v1/sim/runs"]
}
},
"note": "One x402 USDC payment buys one response, served as a Pro plan call would be (same content, Pro delay) and never counted against a plan's quota. Plans never p…"
},
"x402": {"enabled": false},
"agent_pricing_note": "Every plan, Free included, gets every feature: the live record, signed webhooks, the full history, the fair-value and live models, Langbot Sim on any recorde…",
"pricing_url": "https://langbot.ai/pricing",
"contact": "mailto:hello@langbot.ai?subject=Langbot%20Desk",
"tokens_url": "https://langbot.ai/app/tokens"
}A real response from the API; long lists are cut to their first items.
Human-readable: Pricing and limits.
Errors
| Status | code | When |
|---|---|---|
| 401 | token_invalid | A token was sent and not recognised. Send a valid one, or none to call anonymously. |
| 429 | rate_limited | Over your request budget; wait Retry-After seconds. |
Every error body is {"detail": …, "code": "…"}; branch on code. All codes: Errors.