Real-time streaming surface for the OddsJam / OpticOdds Sports Betting API. Two delivery mechanisms are publicly documented: 1. Server-Sent Events (SSE) over long-lived HTTPS connections for odds, results, and copilot odds streams, scoped by sport. 2. AMQP (RabbitMQ) pull-based consumer queues for the copilot, copilot results, and fixtures results streams. Queue lifecycle (start, stop, status) is managed through REST control endpoints on the v3 API. SSE events include a `retry` directive (5000 ms) and a monotonically increasing `entry_id` so clients can resume from the last received event via the `last_entry_id` query parameter, providing exactly-once delivery on reconnection. All facts in this document are sourced from the public OpticOdds developer portal: https://developer.opticodds.com/ (SSE Streaming Guide, Getting Started with RabbitMQ, and the streaming reference endpoints listed in https://developer.opticodds.com/llms.txt).
Receive odds, locked-odds, ping, connected, and fixture-status events.
Server-Sent Events stream of odds changes, suspensions, and (optional) fixture status updates for a sport. Filterable by sportsbook (required, up to 5 per connection), league, fixture_id, market, is_main, is_live, and odds_format. Up to 10 leagues per connection is recommended.
/api/v3/stream/results/{sport}
subscribestreamResults
Receive fixture-results, ping, and connected events.
Server-Sent Events stream of live scores, game outcomes, and player performance data. OpticOdds recommends a separate connection per league rather than passing multiple leagues per request.
/api/v3/stream/copilot/{sport}/odds
subscribestreamCopilotOdds
Receive copilot-odds, copilot-locked-odds, copilot-settled-odds, fixture-status, ping, and connected events.
Server-Sent Events stream of copilot odds (new/modified), locked copilot odds, settled copilot odds, and optional fixture status changes. Same filtering knobs as the standard odds stream.
copilot-queue
subscribeconsumeCopilotQueue
Consume copilot odds messages from the assigned RabbitMQ queue.
RabbitMQ queue delivering copilot odds updates. The queue name is returned by the REST control endpoint `POST /api/v3/copilot/queue/start`. Lifecycle is also managed by `POST /api/v3/copilot/queue/stop` and `GET /api/v3/copilot/queue/status`. Messages are pulled (no push). The pika example uses a prefetch of 100 and auto-acknowledgement.
copilot-results-queue
subscribeconsumeCopilotResultsQueue
Consume copilot results messages from the assigned RabbitMQ queue.
RabbitMQ queue delivering copilot results updates. Queue name is issued by `POST /api/v3/copilot/results/queue/start`; lifecycle is managed via `POST /api/v3/copilot/results/queue/stop` and `GET /api/v3/copilot/results/queue/status`.
fixtures-results-queue
subscribeconsumeFixturesResultsQueue
Consume fixture results messages from the assigned RabbitMQ queue.
RabbitMQ queue delivering fixture results updates. Queue name is issued by `POST /api/v3/fixtures/results/queue/start`; lifecycle is managed via `POST /api/v3/fixtures/results/queue/stop` and `GET /api/v3/fixtures/results/queue/status`.
Messages
✉
ConnectedEvent
Connection acknowledgement
Confirms successful SSE stream initialization.
✉
PingEvent
Keepalive ping
Periodic keepalive (approximately every 5 seconds) carrying a server timestamp for drift detection.
✉
OddsEvent
Odds update
Fires when an odd is posted or unsuspended.
✉
LockedOddsEvent
Locked odds update
Fires when odds are suspended or removed; payload uses the same Odd schema.
✉
FixtureStatusEvent
Fixture status update
Notifies of game status or start time changes. Requires the `include_fixture_updates=true` query parameter.
✉
FixtureResultsEvent
Fixture results update
Delivers updated match data matching the `/fixtures/results` and `/player-results` REST schemas.
✉
CopilotOddsEvent
Copilot odds update
New or modified copilot odds.
✉
CopilotLockedOddsEvent
Copilot locked odds
Copilot odds that are unavailable / locked.
✉
CopilotSettledOddsEvent
Copilot settled odds
Copilot odds finalized with bet outcomes / results.
✉
CopilotQueueMessage
Copilot queue message
AMQP message body delivered through the copilot queue. Exchange naming and full envelope schema are not enumerated in the public documentation; contact OpticOdds sales for implementation specifics.
✉
CopilotResultsQueueMessage
Copilot results queue message
AMQP message body delivered through the copilot results queue. Envelope schema is not enumerated in the public documentation.
✉
FixtureResultsQueueMessage
Fixture results queue message
AMQP message body delivered through the fixtures results queue. Envelope schema is not enumerated in the public documentation.
Servers
https
sseapi.opticodds.com
OpticOdds v3 SSE streaming endpoints. Each channel is a long-lived HTTPS GET request that returns `text/event-stream`. Base path for all SSE channels is `/api/v3`.
amqp
rabbitmqv3-rmq.opticodds.com:5672
OpticOdds v3 RabbitMQ broker. Authentication uses PLAIN credentials issued by OpticOdds sales (per-API-key). Virtual host is `api`. Queue names are returned in the `/copilot/queue/start`, `/copilot/results/queue/start`, and `/fixtures/results/queue/start` REST responses. Maximum 20 simultaneous connections per account.