# Get pricing

Source: https://langbot.ai/docs/api/public/get-pricing

`GET /v1/pricing`

The plans, their prices and every allowance, as data. Also at `/.well-known/langbot-pricing.json`.

**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**

```bash
curl "https://api.langbot.ai/v1/pricing"
```

**Python**

```python
import httpx

r = httpx.get("https://api.langbot.ai/v1/pricing")
print(r.json())
```

**TypeScript**

```ts
const res = await fetch("https://api.langbot.ai/v1/pricing");
console.log(await res.json());
```

## Response

`200 OK`

```json
{
  "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](https://langbot.ai/docs/pricing).

## 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](https://langbot.ai/docs/api#errors).
