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

# Odds Feed Overview

> Round-level CS2 micro-markets — REST + WebSocket + AMQP delivery

## What you get

Real-time betting markets generated per CS2 round during live matches:

* **42+ market types** — opening kill, headshot opening, AWP opening, round winner, total kills, bomb plant, … See the full list in the [Market Catalogue](/odds-feed/market-catalogue).
* **In-play timing** — markets open at round freeze, suspend on outcome determination or TTL expiry, and settle automatically at round end (live settlement) or final score.
* **Three delivery channels** — REST polling, WebSocket push, or AMQP messaging feed (XML). Pick whichever fits your existing pipeline.

| Property                 | Value                                                         |
| ------------------------ | ------------------------------------------------------------- |
| **Latency (odds)**       | 1–2 seconds from round freeze to delivery                     |
| **Latency (settlement)** | 1–3 seconds from triggering event to `bet_settlement`         |
| **Settlement**           | Automatic, engine-driven, auditable via `/cs2/v1/settlements` |
| **Availability**         | 24/7 — matches tracked whenever live on HLTV                  |

## Why this is easy to integrate

<CardGroup cols={2}>
  <Card title="Industry-standard XML" icon="plug">
    Same AMQP exchange topology and `<odds_change>` / `<bet_settlement>` shapes used by major esports feed providers. If you already consume an industry-standard feed, our markets slot in with minimal mapping work.
  </Card>

  <Card title="Stable match identifiers" icon="link">
    Every match exposes two IDs — `event_id` (`od:match:{id}`) for cross-referencing with external sportsbooks, and `tt_match_id` (UUID) for our REST API.
  </Card>

  <Card title="Inline market descriptions" icon="text">
    Every market carries human-readable `textEN` and `textRU` directly in the XML — no catalogue lookup. The `type` and `specifiers` attributes are optional convenience fields for programmatic mapping.
  </Card>

  <Card title="Auto-settlement" icon="check">
    Markets settle within 1–3s of the triggering event. `<bet_settlement>` messages push immediately — no manual grading.
  </Card>
</CardGroup>

## Required scopes

You need at least one of these on your API key:

| Scope                     | Grants                                     |
| ------------------------- | ------------------------------------------ |
| `cs2:markets:read`        | Active market offers, odds, suspend status |
| `cs2:markets:settlements` | Settlement audit log                       |
| `cs2:stream:markets`      | WS frames: `market.*`, `bet_settlement`    |

The `cs2.odds.basic` bundle includes all three plus the matches scopes. See [Scopes & Bundles](/getting-started/scopes) for the full picture.

## Minimum integration

Three message types cover the core flow:

| Message            | Action required                                                                  |
| ------------------ | -------------------------------------------------------------------------------- |
| `<odds_change>`    | Display/update markets. When `status="-1"` — **immediately stop accepting bets** |
| `<bet_settlement>` | Grade and pay out bets based on `outcome.result`                                 |
| `<alive>`          | Confirm feed connectivity (received every 10 seconds)                            |

## Typical integration flow

```
1. Receive AMQP credentials from your account manager (or use REST + WS)
2. Connect: amqp://op-<slug>:<password>@mq.ticktock.bet:5672/<slug>
3. Bind queue to exchange `ttfeed` with routing key hi.-.live.#
4. Also bind alive heartbeats: -.-.-.alive.-.-.-.-
5. Receive <odds_change> → display markets, check status for betstop
6. Receive <bet_settlement> → grade bets (outcome result="1" = won, "0" = lost)
7. Receive <alive> → heartbeat, confirm feed is healthy
8. Use REST API for recovery and reconciliation
```

## Market lifecycle

```mermaid theme={null}
stateDiagram-v2
    [*] --> Active : odds_change (status=1)
    Active --> Active : odds_change (odds update)
    Active --> Suspended : odds_change (status=-1)
    Active --> Settled : bet_settlement (live settlement)
    Suspended --> Settled : bet_settlement (round end)
    Active --> Cancelled : bet_cancel
    Suspended --> Cancelled : bet_cancel
    Settled --> Cancelled : bet_cancel (void after settlement)
```

<Note>
  Suspension is **one-way** — a suspended market never returns to active. It stays suspended until settled at round end. New markets for the next round are created independently.
</Note>

## Round timeline

| Time   | Event                                                                                  |
| ------ | -------------------------------------------------------------------------------------- |
| T+0s   | Round N freeze — engine generates markets for **Round N+1**, publishes `<odds_change>` |
| T+0..N | Odds may update as game state refines                                                  |
| T+N    | Market suspended (`status="-1"`) when outcome is determined or TTL expires             |
| T+N    | Some markets settled live (`<bet_settlement>`) when triggering event occurs            |
| T+end  | Round N+1 ends — all remaining markets settled                                         |

## Next steps

<CardGroup cols={2}>
  <Card title="Market Catalogue" icon="chart-bar" href="/odds-feed/market-catalogue">
    Full list of CS2 market types with odds ranges and example descriptions.
  </Card>

  <Card title="Settlement" icon="circle-check" href="/odds-feed/settlement">
    Settlement timing, the audit log, and reconciliation patterns.
  </Card>

  <Card title="Messaging Feed (AMQP)" icon="satellite-dish" href="/odds-feed/amqp">
    RabbitMQ connection details, routing keys, and XML message reference.
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference/markets/active-markets">
    Live REST playground for the markets and settlements endpoints.
  </Card>
</CardGroup>
