Mint a short-lived WebSocket ticket
Exchanges the caller's API key for a short-lived (60s) signed ticket used to open the WebSocket at wss://api.esportsodds.gg/v1/ws?token=....
Exchanges the caller's API key for a short-lived (60s) signed ticket used to open the WebSocket at wss://api.esportsodds.gg/v1/ws?token=.... Keeps the raw key off the wire and out of the browser — browsers can't set headers on a WebSocket, which is why tickets exist. Minting is authenticated and rate-limited — each mint draws a token from the key's per-second bucket, like any other call, so reconnect with backoff — but it is not metered: a mint consumes no request quota.
This is the only part of the WebSocket surface expressible in OpenAPI: the socket itself (/v1/ws) is a persistent connection with its own message protocol, so it is documented as prose instead — see Live data & WebSocket for the handshake, the message envelope, subscribing, sequence numbers, reconnection and the connection cap. Read that page before building against this endpoint; a ticket on its own does nothing.
The primary way to authenticate: Authorization: Bearer <api-key>. When a request also carries ?apiKey=, the header wins. We store only a SHA-256 hash of a key, never the key itself. To try the API with no account, use the public sample key eo_sample_public: one published key, shared by everyone, that reads a fixed sample of past matches within daily limits. For evaluation; our Terms apply.
In: header
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/{game}/ws-token"{ "data": { "token": "MDE4ZjJjNGEtOWIzMS03ZTAyLWE1ZDctM2MxZjg4YjQwZTE5LjE3ODMwMTUyNjAuaHFKSWtWNUJBV2xXeUdTV2xwTG14OFA3YTFtTUlEaWQtM0tscjhDWFNINA", "expires_at": "2026-07-26T09:14:20.481293Z" }}{ "error": { "code": "not_found", "message": "not found", "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578" }}{ "error": { "code": "rate_limited", "message": "rate limit exceeded", "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578" }}Glossary
API terms defined as they are used here, with pointers to the deeper explainers.
How each team fares on one map GET
How each team fares on one map over the trailing window: maps played and won, the team's own picks and bans of the map, veto_matches (its matches with a recorded veto — the denominator for picks and…