Skip to main content

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.

Settlement Flow

Markets predict the next round — they are created during the current round’s freeze time and settle when the target round ends. Settlement happens in two phases:
  1. Live settlement — During the target round. Some markets settle immediately when the triggering event occurs (e.g., headshot_opening is settled as soon as the first kill happens, awp_kill settles the moment an AWP kill is confirmed).
  2. End-of-round settlement — When the target round ends, all remaining pending markets are settled based on the full round result.

Timing Example

TimeEvent
T+0sRound 7 freeze — engine generates markets predicting Round 8 events
T+0s<odds_change> published — markets are active, betting opens
T+2sRound 8 starts
T+5sFirst kill is a headshot → headshot_opening settled immediately (live)
T+8sAWP kill occurs → awp_kill settled immediately (live)
T+45sRound 8 ends → all remaining markets settled (end-of-round)

Settlement Statuses

StatusResultMeaning
pendingnullMarket is open or suspended, not yet settled
settledwonThe predicted event occurred — pay out
settledlostThe predicted event did not occur — bet lost
voidedvoidMarket cancelled — return stakes to bettors

Settled By

ValueMeaning
engineAutomatic settlement by the odds engine
systemSystem-level action (e.g., match cancellation)
adminManual settlement by back-office operator

Void Conditions

Markets are voided when:
  • The match is abandoned or cancelled mid-play
  • A technical issue prevents reliable settlement
  • An admin manually voids the market
When a market is voided, operators must return all stakes to bettors. Voided markets have no winner or loser.

Betstop Protocol

When a market is suspended (suspended: true), operators MUST immediately stop accepting new bets on that market.

Suspension Triggers

TriggerDescription
Outcome determinedFirst kill occurred → opening-kill markets suspended
TTL expiryMarket exceeds its time-to-live window
Extreme oddsOdds exceed 40.0 (virtually impossible)
Round endAll round markets suspended, then settled
ManualAdmin suspends via back-office

Suspension Rules

Once a market is suspended, it stays suspended until settlement. It will not be reactivated. New markets for the next round are created independently.
  • A suspended market with settlement_status: "pending" will still be settled at round end
  • The suspended field transitions: falsetrue (never back to false)

Reconciliation

Use GET /cs2/v1/settlements with cursor-based pagination to reconcile settlements. Requires cs2:markets:settlements scope. Each entry includes market_offer_id which you can look up against GET /cs2/v1/matches/{id} (cs2:matches:read) to retrieve the event_id for cross-referencing.
import requests
import time

API_KEY = "your-api-key"
BASE = "https://ticktock.bet/cs2/v1"
last_id = None

while True:
    params = {"limit": 100}
    if last_id:
        params["since_id"] = last_id

    resp = requests.get(
        f"{BASE}/settlements",
        headers={"X-API-Key": API_KEY},
        params=params,
    )
    entries = resp.json()["data"]

    for entry in entries:
        # entry["outcome"] is "won", "lost", or "void"
        process_settlement(entry)
        last_id = entry["id"]

    time.sleep(30)  # Poll every 30 seconds
Settlement log entry fields:
FieldDescription
idCursor value — pass as since_id on next poll
market_offer_idThe settled market UUID
previous_statusStatus before transition (e.g. pending)
new_statussettled or voided
outcomewon / lost / void — use to grade bets
settled_byengine / system / admin
reasonHuman-readable reason (for manual/system actions, null for engine)
is_resettlementtrue when a previously settled market has been re-graded
created_atISO 8601 settlement timestamp
To get the match event ID for a settled market: call GET /cs2/v1/matches/{match_id}. The event_id field lets you cross-reference any settled market against the same match in the messaging feed.
Poll the settlement log periodically (every 30s) to catch any settlements that may have been missed due to AMQP disconnections.
Last modified on May 10, 2026