# List settled outcomes

Source: https://langbot.ai/docs/api/history/list-outcomes

`GET /v1/history/outcomes`

Settled markets on what someone says, as the venue published them, newest first.

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

## Parameters

### Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `speaker` | string | no | A canonical speaker key, for example `powell`. |
| `phrase` | string | no | A normalized phrase key, for example `transitory`. |
| `series` | string | no | A venue series ticker, for example `KXFEDMENTION`. |
| `venue` | string | no | `kalshi` or `polymarket`. |
| `since` | integer | no | ms epoch, by settlement time. |
| `until` | integer | no | ms epoch, by settlement time. |
| `limit` | integer | no | Page size. 1 to 500. Default `50`. |
| `cursor` | string | no | `next_cursor` from the previous page. |

## Request

**curl**

```bash
curl "https://api.langbot.ai/v1/history/outcomes?speaker=powell&phrase=transitory&limit=1" \
  -H "Authorization: Bearer $LANGBOT_API_TOKEN"
```

**Python**

```python
from langbot import LangbotClient

async with LangbotClient() as lb:  # reads LANGBOT_API_TOKEN
    page = await lb.outcomes(speaker="powell", phrase="transitory", limit=1)
    for o in page.items:
        print(o.ticker, o.result, o.yes_price_open, o.yes_price_close)
```

**TypeScript**

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

const lb = new LangbotClient(); // reads LANGBOT_API_TOKEN
const page = await lb.outcomes({ speaker: "powell", phrase: "transitory", limit: 1 });
console.log(page.items);
```

## Response

`200 OK`

```json
{
  "count": 1,
  "items": [
    {
      "ticker": "KXFEDMENTION-26SEP-TRANSITORY",
      "venue": "kalshi",
      "series_ticker": "KXFEDMENTION",
      "title": "Powell says “transitory”?",
      "speaker": "powell",
      "phrase": "transitory",
      "event_id": "ev_fomc_sep_2026_presser",
      "result": "no",
      "open_ts": 1757980800000,
      "close_ts": 1758654000000,
      "settled_ts": 1758661200000,
      "yes_price_open": 18,
      "yes_price_close": 2,
      "volume": 41250
    }
  ],
  "next_cursor": "c2V0dGxlZDoxNzU4NjYxMjAwMDAw"
}
```

`result` is `yes`, `no` or `void`; prices are in cents. `event_id` is set when the market maps to an event Langbot recorded.

## Errors

| Status | `code` | When |
|---|---|---|
| 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).
