# Get a market brief

Source: https://langbot.ai/docs/api/markets/get-market-brief

`GET /v1/markets/{ticker}/brief`

Everything Langbot holds on one market that settles on what is said, every block labelled as a fact or as context.

**Auth.** An API token: `Authorization: Bearer lb_…` ([create one](https://langbot.ai/app/tokens)). Signed-in web sessions work too.

**Limits.** One history query per call (500 a day on Free; unlimited on Builder and Standard). Served at your plan's delay (+60 s Free, +10 s Builder, +2 s Standard).

## Parameters

### Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `ticker` | string | yes | The venue ticker or `pm_<id>`. |

## Request

**curl**

```bash
curl "https://api.langbot.ai/v1/markets/KXEARNINGSMENTIONNVDA-26OCT-BLACKWELL/brief" \
  -H "Authorization: Bearer $LANGBOT_API_TOKEN"
```

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:  # reads LANGBOT_API_TOKEN
    brief = await lb.market_brief("KXEARNINGSMENTIONNVDA-26OCT-BLACKWELL")
    print(brief.facts_count, brief.history)
```

**TypeScript**

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

const lb = new LangbotClient(); // reads LANGBOT_API_TOKEN
const brief = await lb.marketBrief("KXEARNINGSMENTIONNVDA-26OCT-BLACKWELL");
console.log(brief.facts_count);
```

## Response

`200 OK`

```json
{
  "v": 1,
  "report": "brief",
  "ticker": "KXEARNINGSMENTIONNVDA-26OCT-BLACKWELL",
  "market": {
    "label": "the market as the venue publishes it",
    "ticker": "KXEARNINGSMENTIONNVDA-26OCT-BLACKWELL",
    "venue": "kalshi",
    "event_id": "ev_nvda_q3_2026",
    "title": "Will NVIDIA say \"Blackwell\" on its Q3 earnings call?",
    "phrases": ["blackwell"],
    "status": "open",
    "book": { "label": "context: the venue's latest prices", "ts": 1760050100000, "yes_bid": 0.91, "yes_ask": 0.93 }
  },
  "event": { "label": "the event that settles this market", "id": "ev_nvda_q3_2026", "status": "live", "rights": "restricted", "sources": [] },
  "facts": [
    { "id": "evt_01J9ABCDEFGHJKMNPQRSTVWXYZ", "phrase": "blackwell", "speaker": { "role": "SPK_1", "name": null, "confidence": 0.91 }, "t_spoken": 1760050123412, "receipt": { "hash": "5d0e05c3…", "chain_seq": 48213, "url": "/v1/receipts/evt_01J9ABCDEFGHJKMNPQRSTVWXYZ" } }
  ],
  "facts_count": 1,
  "history": { "label": "context, not a prediction", "speaker": "huang", "phrase": "blackwell", "base_rate": { "markets": 4, "yes": 4, "no": 0, "void": 0, "yes_rate": 1.0 }, "last_outcomes": [] },
  "related": { "label": "context: other open markets, not facts about this one", "same_event": [], "same_speaker": [] },
  "listening": { "subscribed": false, "subscription_ids": [], "webhook": false },
  "rights": "restricted",
  "delay_ms": 10000,
  "generated_at": 1760050130000
}
```

`facts` are only the phrase hits heard on the market's own event, newest first (up to 50), never the surrounding text. Everything else is labelled context. The venue settles the market; nothing here is a verdict.

## Errors

| Status | `code` | When |
|---|---|---|
| 404 | `not_found` | No market with that ticker. |
| 401 | `auth_required` | No token was sent. |
| 401 | `token_invalid` | The token was not recognised (mistyped, revoked or expired). |
| 422 | `validation_error` | A parameter failed validation; `detail[].loc` names it. |
| 429 | `quota_exceeded` | Today's history queries are spent; `quota.resets_at` says when they reset. |
| 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).
