---
title: "GET /stream/odds"
method: GET
path: "/stream/odds"
tags: ["Prices"]
---

# GET /stream/odds

`GET /stream/odds`

## Request

- Base URL: `https://api.sockodds.com/v1`
- URL: `https://api.sockodds.com/v1/stream/odds`
- Auth: HTTP bearer

Pro and Internal only. Upgrade to a WebSocket with your bearer key to receive the current prices for one event, or for up to 20 events in one league, every 15 seconds. Each message is a JSON object whose `type` is `snapshot` (the same body as the matching odds route, grouped by market unless `group_by=bookmaker`), `heartbeat` (nothing changed) or `error` (a problem object, after which the connection closes). A refresh counts towards your allowance like an ordinary odds request only when it sends a new snapshot; a heartbeat (nothing changed) is free. Every refresh still counts towards your per minute request limit. Up to two streams per key. A stream lasts at most one hour; reconnect for a fresh one. The stream is read only; a message from the client closes it. Close codes are 1000 (lifetime reached), 1008 (key, plan or limit change), 1009 (snapshot too large, narrow the filters), 1011 (refresh failed) and 1013 (client reading too slowly).

## Query parameters

- `event_id` string
- `league` string
- `markets` string
- `regions` string
- `bookmakers` string
- `alternates` boolean
- `group_by` 'market' | 'bookmaker'
- `limit` integer

## Response `default`

Request failed

## Other responses

- `101`: Switching to WebSocket.
- `426`: Request failed

---

[API](https://skmtc.dev/sockodds/apis/sockodds-api.md) · [All operations](https://skmtc.dev/sockodds/apis/sockodds-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sockodds/apis/sockodds-api/revisions/f4c680d355be?raw)
