> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oddpool.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Feed catalog

> Discover available events and the exact channel names to subscribe to.

List all available feed events, grouped by feed vertical. Returns event keys, venues, outcome counts, and pre-built channel names.

## Parameters

<ParamField query="feed" type="string" default="all">
  Filter by feed vertical: `macro`, `crypto`, or `weather`.
</ParamField>

<ParamField query="status" type="string" default="all">
  Filter by event status: `active`, `upcoming`, or `resolved`. Useful for crypto feeds where hundreds of short-lived events accumulate — use `status=active` to get only live events.
</ParamField>

<ParamField query="expand" type="string" default="">
  Opt-in expansions, comma-separated. Supported values:

  * `channels` — adds a ready-to-paste `subscribe_all` array to each event listing every channel you'd subscribe to.
  * `outcomes` — replaces the integer `outcomes` count with the full outcome list (same shape as the single-event endpoint).
  * `*` — all expansions.

  The default response stays compact for browsing; agents subscribing to data should use `expand=channels` to skip the second API call.
</ParamField>

## Example

```bash theme={null}
# All active crypto events
curl -H "X-API-Key: oddpool_..." \
  "https://api.oddpool.com/feeds/catalog?feed=crypto&status=active"

# Macro events with ready-to-paste subscribe arrays
curl -H "X-API-Key: oddpool_..." \
  "https://api.oddpool.com/feeds/catalog?feed=macro&expand=channels"
```

## Response (default)

```json theme={null}
{
  "feeds": {
    "macro": {
      "description": "Cross-venue macro economic prediction markets",
      "events": [
        {
          "event_key": "fomc-2026-06-17",
          "title": "FOMC June 2026",
          "type": "fomc",
          "event_date": "2026-06-17",
          "release_at": "2026-06-17T17:59:00+00:00",
          "status": "active",
          "venues": ["kalshi", "polymarket"],
          "outcomes": 5,
          "channels": {
            "dist": "dist:fomc-2026-06-17",
            "snapshot": "snapshot:fomc-2026-06-17",
            "book": "book:fomc-2026-06-17:{outcome_key}",
            "trade": "trade:fomc-2026-06-17:{outcome_key}"
          }
        }
      ]
    }
  }
}
```

| Field                              | Description                                                                                                                                                                                                      |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event_key`                        | Unique identifier for the event. Use this in channel subscriptions.                                                                                                                                              |
| `event_date`                       | Calendar date of the release (YYYY-MM-DD).                                                                                                                                                                       |
| `release_at`                       | Full ISO 8601 timestamp with timezone for the actual release moment. CPI is 8:30 ET (12:30 UTC), FOMC is 14:00 ET, etc. Use this for scheduling and timing logic.                                                |
| `venues`                           | Which prediction market venues have outcomes configured for this event. **Caveat**: this reflects "configured" not "currently quoting". An event listing both venues may have one quiet venue with no live book. |
| `outcomes`                         | Number of outcomes (default) OR full outcome array (with `expand=outcomes`).                                                                                                                                     |
| `enrichment`                       | External data source attached to every message. Only present for enriched feeds (`"binance"` for crypto). Macro events do not have this field.                                                                   |
| `channels.dist`                    | Event-level — subscribe to this single channel to get the joint cross-venue distribution for all outcomes. Free tier.                                                                                            |
| `channels.snapshot`                | Event-level — full state reset every 60s. Pro tier.                                                                                                                                                              |
| `channels.book` / `channels.trade` | **Templates with `{outcome_key}` placeholder**. Per-outcome channels — replace the placeholder with a value from `expand=outcomes` or the single-event endpoint. Pro tier.                                       |

## Response with `?expand=channels`

Adds `subscribe_all` to each event — a ready-to-paste array of every channel for that event:

```json theme={null}
{
  "event_key": "fomc-2026-06-17",
  "channels": {
    "dist": "dist:fomc-2026-06-17",
    "snapshot": "snapshot:fomc-2026-06-17",
    "book": "book:fomc-2026-06-17:{outcome_key}",
    "trade": "trade:fomc-2026-06-17:{outcome_key}",
    "subscribe_all": [
      "dist:fomc-2026-06-17",
      "snapshot:fomc-2026-06-17",
      "book:fomc-2026-06-17:cut_50",
      "book:fomc-2026-06-17:cut_25",
      "book:fomc-2026-06-17:hold",
      "book:fomc-2026-06-17:hike_25",
      "book:fomc-2026-06-17:hike_50",
      "trade:fomc-2026-06-17:cut_50",
      "trade:fomc-2026-06-17:cut_25",
      "trade:fomc-2026-06-17:hold",
      "trade:fomc-2026-06-17:hike_25",
      "trade:fomc-2026-06-17:hike_50"
    ]
  }
}
```

Use `subscribe_all` directly as the `channels` field of your WebSocket subscribe action. No more N+1 lookup for outcome keys.

## Response with `?expand=outcomes`

Replaces the integer `outcomes` count with the full outcome array (same shape as the single-event endpoint):

```json theme={null}
{
  "event_key": "fomc-2026-06-17",
  "outcome_count": 5,
  "outcomes": [
    {
      "outcome_key": "hold",
      "label": "Fed maintains rate",
      "venues": ["kalshi", "polymarket"],
      "channels": {
        "book": "book:fomc-2026-06-17:hold",
        "trade": "trade:fomc-2026-06-17:hold"
      }
    },
    "..."
  ]
}
```

When `expand=outcomes` is set, both `outcomes` (array) and `outcome_count` (number) are returned. Without expand, only `outcomes` (number) is returned.

***

## Get single event

<div id="feeds-catalog-event" />

```http theme={null}
GET https://api.oddpool.com/feeds/catalog/{event_key}
```

Get a single event with its full outcome list, ready-to-paste subscribe array, and per-outcome channel names.

### Example

```bash theme={null}
curl -H "X-API-Key: oddpool_..." \
  "https://api.oddpool.com/feeds/catalog/fomc-2026-06-17"
```

### Response

```json theme={null}
{
  "event_key": "fomc-2026-06-17",
  "title": "FOMC June 2026",
  "type": "fomc",
  "feed": "macro",
  "event_date": "2026-06-17",
  "release_at": "2026-06-17T17:59:00+00:00",
  "status": "active",
  "venues": ["kalshi", "polymarket"],
  "outcome_count": 5,
  "outcomes": [
    {
      "outcome_key": "hold",
      "label": "Fed maintains rate",
      "venues": ["kalshi", "polymarket"],
      "channels": {
        "book": "book:fomc-2026-06-17:hold",
        "trade": "trade:fomc-2026-06-17:hold"
      }
    },
    {
      "outcome_key": "cut_25",
      "label": "Cut 25bps",
      "venues": ["kalshi", "polymarket"],
      "channels": {
        "book": "book:fomc-2026-06-17:cut_25",
        "trade": "trade:fomc-2026-06-17:cut_25"
      }
    }
  ],
  "channels": {
    "dist": "dist:fomc-2026-06-17",
    "snapshot": "snapshot:fomc-2026-06-17",
    "book": "book:fomc-2026-06-17:{outcome_key}",
    "trade": "trade:fomc-2026-06-17:{outcome_key}",
    "subscribe_all": [
      "dist:fomc-2026-06-17",
      "snapshot:fomc-2026-06-17",
      "book:fomc-2026-06-17:hold",
      "...": "..."
    ]
  }
}
```

***

## Decode event types

<div id="feeds-event-types" />

```http theme={null}
GET https://api.oddpool.com/feeds/event-types
```

Returns a stable dictionary mapping each `event_type` token (e.g., `cpi`, `fomc`, `nfp`) to human-readable label, description, publishing agency, typical release time + timezone, source URL, and category. Use this to interpret event\_type values without prior macro-economic knowledge.

### Example

```bash theme={null}
curl -H "X-API-Key: oddpool_..." "https://api.oddpool.com/feeds/event-types"
```

### Response

```json theme={null}
{
  "event_types": {
    "cpi": {
      "label": "Consumer Price Index",
      "description": "US headline inflation. Measures the month-over-month or year-over-year change in a basket of consumer goods and services.",
      "agency": "Bureau of Labor Statistics",
      "release_local_time": "08:30",
      "timezone": "America/New_York",
      "release_url": "https://www.bls.gov/cpi/",
      "category": "inflation",
      "vertical": "macro"
    },
    "fomc": {
      "label": "FOMC Rate Decision",
      "description": "Federal Open Market Committee policy decision on the federal funds rate target range. Eight scheduled meetings per year.",
      "agency": "Federal Reserve",
      "release_local_time": "14:00",
      "timezone": "America/New_York",
      "release_url": "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm",
      "category": "monetary_policy",
      "vertical": "macro"
    }
  }
}
```

| Field                | Description                                                                                                     |
| -------------------- | --------------------------------------------------------------------------------------------------------------- |
| `label`              | Human-readable name. Use in dashboards.                                                                         |
| `description`        | One-paragraph plain-English explanation.                                                                        |
| `agency`             | Who publishes the data.                                                                                         |
| `release_local_time` | Time-of-day at which releases typically drop, in the named timezone. `null` for continuous markets (crypto).    |
| `timezone`           | IANA timezone identifier for `release_local_time`.                                                              |
| `category`           | Higher-level grouping (`inflation`, `employment`, `growth`, `monetary_policy`, `markets`, `crypto`, `weather`). |
| `vertical`           | Which `feed=` filter this type belongs to.                                                                      |
