Developer documentation
Build on a
clearer signal.
This reference summarizes the documented service contract. Examples are illustrative and make no live requests. Credentials and access are provisioned separately.
Full API documentation will live at docs.halfpoint.tech. It is not public yet.
https://odds.halfpoint.techConsensus servicehttps://fixtures.halfpoint.techFixtures serviceAuthentication
Send your key in the X-Api-Key header. A ?key= parameter is also supported; prefer the header to keep credentials out of URLs. A valid subscription and the endpoint’s feature are required.
Keep private service keys on your backend. This public website does not issue or store API keys.
Consensus
GET /odds[?league] returns priced fixtures in the next 24 hours and live games, subject to current market coverage. Omit league for all leagues; accepted values: mlb, nba, nfl, cfb, nhl, epl.
curl 'https://odds.halfpoint.tech/odds?league=nba' \
-H 'X-Api-Key: YOUR_API_KEY'"markets": {
"moneyline": {
"home": 0.46,
"away": 0.54,
"recent": true,
"at": "2026-10-30T22:00:00.000Z"
}
}Responses contain updated, league metadata where applicable and a fixtures list. Each item has id, league, start and markets. US winner markets use moneyline; EPL uses moneyline_3way with a draw outcome.
Probabilities are decimals. recent indicates whether a current consensus is available; at identifies the price time. A retained last price can be stale. ETags and If-None-Match support unchanged-data responses with 304.
Realtime
GET /odds/stream[?league] requires streaming access. Uses text/event-stream, with the current state first, then price and remove events. Heartbeat comments arrive approximately every 30 seconds.
curl 'https://odds.halfpoint.tech/odds?league=nba' \
-H 'X-Api-Key: YOUR_API_KEY'A slow subscriber more than 1,024 events behind is disconnected and should reconnect for the current state. Replay via Last-Event-ID is not part of the documented odds stream contract. Live-score streaming is planned; use /live for current game state today.
Risk
The Risk field variant adds stop and widened. stop is a quoting instruction to the consumer; prices continue updating. The widened-state flag is available; a numeric uncertainty measure is planned. These signals do not guarantee protection against losses.
Fixtures
Use the fixtures host for these endpoints. Lists return updated and fixtures; one-league responses also include league metadata.
GET /fixtures?league=nba&date=2026-10-30Schedule, teams, status, postponement links and confirmation timestampsGET /live?league=nbaCurrent game state; league is optional, no date parameterGET /mappings?league=nba&date=2026-10-30Source and venue identifiers and market instrumentsGET /grades?league=nba&date=2026-10-30Published moneyline settlement gradesGET /fixtures/{id}Complete fixture, including state, mappings and gradesGET /leaguesSupported leaguesThe league is required for date-based lists. Dates use YYYY-MM-DD or a capped date range, defaulting to today in the league timezone. US leagues use America/New_York; EPL uses Europe/London. College lists accept division=fbs or division=fcs.
Identity and status
Treat fixture IDs as opaque, minted keys. A date change before the date lock retains the ID. A postponement to another local date after the lock creates a replacement with replaces and replaced_by links. Suspended games keep their ID.
Statuses: Scheduled, Delayed, In Progress, Suspended, Final, Postponed, Cancelled. Live lists include In Progress, Delayed and finals from the last two hours. Suspended games remain in the schedule, outside the live list.
Schedules cover the in-memory window of the past and next 30 days. Older fixture IDs can be looked up individually. Grades use win, lose or push per outcome. Conflicting evidence may leave a grade unpublished.
Errors & limits
401Missing or unknown API key402No unexpired subscription403Required feature not enabled429Abuse limit exceededNumeric request quotas and connection allowances are pending confirmation. REST snapshots are shared and built at most once per second per league and field variant. Faster polling does not create fresher snapshots. Full error-body schemas and an OpenAPI document remain integration tasks.
Changelog
— Initial website reference based on the documented fixtures and consensus service contracts. Public service availability and full reference publication remain launch dependencies.