# List consolidated groups

Source: https://langbot.ai/docs/api/consolidated/list-groups

`GET /v1/consolidated`

Groups of equivalent markets across Kalshi and Polymarket, each with its consolidated YES probability, venues and venue gap.

**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.** Its own per-minute limit: 20 anonymous or on Free, 120 on Builder, 600 on Standard. Not counted against any allowance.

## Parameters

### Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `q` | string | no | Words in the question, or tickers. |
| `category` | string | no | A category. |
| `ticker` | string | no | Only groups that contain this market. |
| `limit` | integer | no | Page size. 1 to 200. Default `50`. |
| `cursor` | string | no | `next_cursor` from the previous page. |

## Request

**curl**

```bash
curl "https://api.langbot.ai/v1/consolidated?limit=1"
```

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:
    page = await lb.consolidated(limit=1)
    for g in page["groups"]:
        print(g["group_id"], g["p"], g["venue_gap"])
```

**TypeScript**

```ts
import { LangbotClient } from "@langbotai/sdk";

const lb = new LangbotClient();
const page = await lb.consolidated({ limit: 1 });
console.log(page.groups);
```

## Response

`200 OK`

```json
{
  "ts": 1793685859494,
  "method": {
    "version": 1,
    "stale_after_ms": 300000,
    "max_spread": 0.1,
    "volume_window_ms": 86400000,
    "weights": "mean(depth share, 24h volume share)",
    "fees": "not included",
    "doc": "https://langbot.ai/docs/consolidated/"
  },
  "count": 1594,
  "next_cursor": "1",
  "groups": [
    {
      "group_id": "cq_kxtime-26-ale",
      "title": "Will Alexandria Ocasio-Cortez be TIME Person of the Year 2026?",
      "category": "culture",
      "p": null,
      "ts": 1793685840000,
      "venue_gap": null,
      "included": 0,
      "computed": false,
      "verified": true,
      "members": ["KXTIME-26-ALE", "pm_5262639"],
      "venues": [
        {
          "ticker": "KXTIME-26-ALE",
          "venue": "kalshi",
          "title": "Will Alexandria Ocasio-Cortez be Time Person of the Year in 2026?",
          "subtitle": "Alexandria Ocasio-Cortez",
          "url": "https://kalshi.com/markets/kxtime",
          "mid": 0.03,
          "bid": 0.02,
          "ask": 0.04,
          "spread": 0.02,
          "depth_usd": 62.28,
          "volume_24h_usd": null,
          "weight": 0.0,
          "quote_ts": 1793684508879,
          "age_s": 1332.1,
          "source": "orderbook_snaps",
          "included": false,
          "excluded": "stale"
        },
        {
          "ticker": "pm_5262639",
          "venue": "polymarket",
          "title": "Will Alexandria Ocasio-Cortez be TIME Person of the Year 2026?",
          "subtitle": "Alexandria Ocasio-Cortez",
          "url": "https://polymarket.com/event/time-person-of-the-year-2026",
          "mid": 0.031,
          "bid": 0.02,
          "ask": 0.042,
          "spread": 0.022,
          "depth_usd": 2.85,
          "volume_24h_usd": null,
          "weight": 0.0,
          "quote_ts": 1793675977256,
          "age_s": 9863.8,
          "source": "venue_api",
          "included": false,
          "excluded": "stale"
        }
      ]
    }
  ],
  "disclaimer": "The Langbot consolidated probability is a published measurement: a liquidity-weighted average of the YES mids of markets on different venues that resolve on…",
  "licence": "Free to read and cite with attribution (\"Langbot consolidated probability\"). Bulk access, redistribution, commercial feeds and embeds at scale are licensed:…"
}
```

A real response from the API; long lists are cut to their first items.

`p` is the liquidity-weighted YES mid of the included venues (fees not included); `venues[].excluded` says why a quote was left out (`stale`, `one_sided`, `crossed`, `wide`). The method is in [Consolidated prices](https://langbot.ai/docs/consolidated). A measurement, not advice.

## Errors

| Status | `code` | When |
|---|---|---|
| 401 | `token_invalid` | A token was sent and not recognised. Send a valid one, or none to call anonymously. |
| 422 | `validation_error` | A parameter failed validation; `detail[].loc` names it. |
| 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).
