> For the complete documentation index, see [llms.txt](https://resolvedmarkets.com/llms.txt). Every docs page is also served as Markdown: append `.md` to its URL or send `Accept: text/markdown`.

# Get Market Metadata

### GET /v1/markets/metadata — Get Market Metadata

Durable descriptive metadata, including for CLOSED markets: question, end_date, slug, event_title and neg_risk_id. Once a market resolves the row also carries its SETTLED RESULT: `resolution_status` (resolved/unresolved), `resolved_outcome` (the WINNING outcome label, e.g. "Up"/"Yes"/"No"), `outcome_prices` (settled prices aligned to `outcomes` — ["1","0"] means outcomes[0] won) and `resolved_at`. Note `outcomes` is the list of CHOICES; `resolved_outcome` is which one won. `neg_risk_id` is the key shared by every leg of one event — the three legs of a football fixture (TeamA / TeamB / Draw), the temperature buckets of one weather event, the strike ladder of one equities event — so you can reassemble an event long after it settled. For sports, `end_date` is the scheduled KICKOFF, which anchors in-game time windows. Pass group_by_event=true to get one row per event with its legs nested.

**Query parameters**

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `format` | string | no | json | Response encoding. csv and tsv return the row array as a flat file instead of a JSON envelope — the envelope moves to X-* response headers and nulls render as \N. REQUIRES SCALE OR ENTERPRISE (json is available on every tier). Works with includebook=true — the bids/asks ladders come through as compact JSON inside their cell, complete and parseable (pandas: df["bids"].apply(json.loads)). |
| `market_id` | string | no | — | One or more conditionIds (repeat the param, or comma-separate) |
| `neg_risk_id` | string | no | — | Return every leg of one event (the match/event key) |
| `slug` | string | no | — | Exact market slug |
| `category` | string | no | — | Filter by category (crypto, sports, weather, equities, …) |
| `subcategory` | string | no | — | Filter by subcategory |
| `crypto` | string | no | — | Filter by coin (crypto markets) |
| `timeframe` | string | no | — | Filter by timeframe. NOT just crypto cadences — it is a per-category discriminator: crypto 5m/15m/1h/4h/1d plus hit-price, sports game, economics rates, social weekly, weather daily-high/daily-low/event/seasonal, equities annual/monthly/daily/event/earnings/quarterly/valuation/comparison/leaderboard. |
| `resolution_status` | string | no | — | Only settled (resolved) or still-open (unresolved) markets |
| `group_by_event` | boolean | no | — | Group legs under their event via neg_risk_id |
| `limit` | integer | no | — | Max rows (1–1000, default 100) |

**Example response**

```json
{
  "count": 1,
  "events": [
    {
      "neg_risk_id": "0x6dfb9f38...",
      "event_title": "France vs. Spain",
      "slug": "fifwc-fra-esp-2026-07-14",
      "category": "sports",
      "subcategory": "FIFA",
      "end_date": "2026-07-14 19:00:00.000",
      "legs": [
        { "market_id": "0x20fac1c9...", "label": "France", "question": "Will France win on 2026-07-14?",
          "outcomes": ["Yes", "No"], "token_ids": ["6982...", "1198..."],
          "resolution_status": "resolved", "resolved_outcome": "Yes",
          "outcome_prices": ["1", "0"], "resolved_at": "2026-07-14 21:04:11.000" },
        { "market_id": "0xaa23528a...", "label": "Spain", "question": "Will Spain win on 2026-07-14?",
          "outcomes": ["Yes", "No"], "token_ids": ["8827...", "3341..."],
          "resolution_status": "resolved", "resolved_outcome": "No",
          "outcome_prices": ["0", "1"], "resolved_at": "2026-07-14 21:04:11.000" },
        { "market_id": "0x3b9204e0...", "label": "Draw (France vs. Spain)", "question": "Will France vs. Spain end in a draw?",
          "outcomes": ["Yes", "No"], "token_ids": ["5510...", "9925..."],
          "resolution_status": "resolved", "resolved_outcome": "No",
          "outcome_prices": ["0", "1"], "resolved_at": "2026-07-14 21:04:11.000" }
      ]
    }
  ]
}
```
