# Get a consolidated group

Source: https://langbot.ai/docs/api/consolidated/get-group

`GET /v1/consolidated/{group_id}`

One group's current number with every component, its series, and the links that make the group with their reasons.

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

### Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `group_id` | string | yes | The group id (`cq_…`). |

### Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `since` | integer | no | ms epoch; default 7 days before `until`. |
| `until` | integer | no | ms epoch; default now. |
| `step` | integer | no | Seconds between points; default chosen by the span. |

## Request

**curl**

```bash
curl "https://api.langbot.ai/v1/consolidated/cq_kxtime-26-ale?step=3600"
```

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:
    g = await lb.consolidated_group("cq_kxtime-26-ale", step=3600)
    print(g["group"]["p"], len(g["series"]))
```

**TypeScript**

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

const lb = new LangbotClient();
const g = await lb.consolidatedGroup("cq_kxtime-26-ale", { step: 3600 });
console.log(g.group);
```

## Response

`200 OK`

```json
{
  "ts": 1793685862293,
  "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/"
  },
  "group": {
    "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"
      }
    ]
  },
  "since": 1793081062293,
  "until": 1793685862293,
  "step_ms": 3600000,
  "series_source": "recorded",
  "series": [
    {
      "ts": 1793609940000,
      "p": null,
      "venue_gap": null,
      "included": 0,
      "by_venue": {},
      "computed": false
    },
    {
      "ts": 1793613300000,
      "p": null,
      "venue_gap": null,
      "included": 0,
      "by_venue": {},
      "computed": false
    }
  ],
  "links": [
    {
      "a_ticker": "KXTIME-26-ALE",
      "b_ticker": "pm_5262639",
      "relation": "equivalent",
      "confidence": 0.9,
      "method": "rules",
      "reviewed": false,
      "reasons": [
        {"a": 1.0, "ok": true, "check": "similarity"},
        {"a": "culture", "b": "culture", "ok": true, "check": "category"}
      ],
      "updated_at": 1793682971085,
      "verified": true,
      "verification": "rules"
    }
  ],
  "related": [],
  "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.

## Errors

| Status | `code` | When |
|---|---|---|
| 404 | `not_found` | No group with that id. |
| 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).
