Skip to main content

Odds360 Football

Odds360 football is a bookmaker-scoped odds feed. In the current SportMicro stack the normal flow is:

  1. Use the regular football SportMicro data endpoints to find the match.
  2. Use the same match_id with your Odds360 bookmaker feed.
  3. Subscribe to live updates and overrides if you need real-time refreshes.

Service URLs

SportMicro football data: https://football.sportmicro.com/
Odds360 football feed: https://odds360.sportmicro.com/

Two access patterns

  • Public Odds360 API: https://odds360.sportmicro.com/football
  • Dashboard and bookmaker flow used by sportmicro-frontend: /bookmaker/{bookmakerId}/football/...

Supported football odd groups

The sportmicro-frontend match page only renders groups that contain data. For football, the supported groups are:

  • next-play
  • half-time
  • player
  • team
  • full-time

Odd group mapping

  • next-play -> odds.nextPlay
  • half-time -> odds.halfTime
  • player -> odds.player
  • team -> odds.team
  • full-time -> odds.fullTime

1. Discover the match in SportMicro

Use the football data service to obtain the same match_id used by Odds360.

Common discovery endpoints:

  • https://football.sportmicro.com/matches-live
  • https://football.sportmicro.com/matches-by-date
  • https://football.sportmicro.com/matches
  • https://football.sportmicro.com/leagues
  • https://football.sportmicro.com/classes

Keep these values from the SportMicro response:

  • id or match_id
  • league_id
  • league_name
  • home_team_name
  • away_team_name
  • start_time
  • status_type

2. Confirm that the bookmaker can access football

In the backend, Odds360 access is tied to a bookmaker UUID and a subscription that explicitly includes the sport.

The dashboard first loads:

GET /bookmaker/{bookmakerId}

That response contains the allowed sports list for the bookmaker.

3. Load the football match list that already has Odds360 prices

This is the endpoint used by /dashboard/odds360/{bookmakerId}/predictions in sportmicro-frontend:

GET /bookmaker/{bookmakerId}/football/matches?page=0
GET /bookmaker/{bookmakerId}/football/matches?page=0&status=live
GET /bookmaker/{bookmakerId}/football/matches?page=0&status=upcoming&league=Premier

Available query parameters:

  • page
  • league
  • homeTeam
  • awayTeam
  • status with live or upcoming

Backend behavior:

  • page size is 100
  • postponed and finished matches are excluded
  • only matches with totalOdds > 0 are returned

4. Load the full football odds payload for one match

This is the endpoint used by /dashboard/odds360/{bookmakerId}/football/{matchId}:

GET /bookmaker/{bookmakerId}/football/{matchId}

Important response shape:

{
"matchId": 2450840,
"sport": "football",
"leagueName": "Premier League",
"homeTeamName": "Home Team",
"awayTeamName": "Away Team",
"odds": {
"nextPlay": {},
"halfTime": {},
"player": {},
"team": {},
"fullTime": {}
},
"override": []
}

The frontend also loads:

GET /bookmaker/{bookmakerId}/football/{matchId}/verify

to mark verified market groups.

5. Use the raw Odds360 REST service

The public Odds360 service exposes the raw football feed and related metadata:

GET https://odds360.sportmicro.com/football
GET https://odds360.sportmicro.com/football-history
GET https://odds360.sportmicro.com/football-classes
GET https://odds360.sportmicro.com/football-leagues

6. Subscribe to live updates

For the same bookmaker_id, sport, and match_id, you can subscribe with either WebSocket or SSE.

Updates

wss://odds360.sportmicro.com/live/{bookmaker_id}/football/{match_id}/updates
https://odds360.sportmicro.com/live/{bookmaker_id}/football/{match_id}/updates

Overrides

wss://odds360.sportmicro.com/live/{bookmaker_id}/football/{match_id}/overrides
https://odds360.sportmicro.com/live/{bookmaker_id}/football/{match_id}/overrides

The dashboard subscribes to the bookmaker-scoped routes:

GET /bookmaker/{bookmakerId}/football/{matchId}/updates
GET /bookmaker/{bookmakerId}/football/{matchId}/overrides

7. Optional manual overrides

The dashboard writes manual changes through:

PATCH /bookmaker/{bookmakerId}/football/{matchId}/{oddType}

Typical body:

{
"oddKey": "market_name#outcome_key",
"oddValue": 1.85,
"durationSeconds": 3600,
"suspended": false
}

WebSocket example

const ws = new WebSocket(
"wss://odds360.sportmicro.com/live/<bookmaker_id>/football/<match_id>/updates"
);
ws.addEventListener("message", (ev) => console.log(JSON.parse(ev.data)));

SSE example

const es = new EventSource(
"https://odds360.sportmicro.com/live/<bookmaker_id>/football/<match_id>/updates"
);
es.addEventListener("message", (ev) => console.log(JSON.parse(ev.data)));

Notes

  • match_id should come from the football SportMicro match feed.
  • bookmaker_id is the UUID assigned to your Odds360 bookmaker.
  • /bookmaker/... routes are the authenticated dashboard routes used by sportmicro-frontend.
  • https://odds360.sportmicro.com/... routes are the public Odds360 API routes.
  • WebSocket and SSE access require the websockets addon on the Odds360 plan.