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 service
https://fixtures.halfpoint.techFixtures service

Authentication

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.

REST / documented requestShell
curl 'https://odds.halfpoint.tech/odds?league=nba' \
  -H 'X-Api-Key: YOUR_API_KEY'
Illustrative / response fragment
"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 timestamps
GET /live?league=nbaCurrent game state; league is optional, no date parameter
GET /mappings?league=nba&date=2026-10-30Source and venue identifiers and market instruments
GET /grades?league=nba&date=2026-10-30Published moneyline settlement grades
GET /fixtures/{id}Complete fixture, including state, mappings and grades
GET /leaguesSupported leagues

The 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 key
402No unexpired subscription
403Required feature not enabled
429Abuse limit exceeded

Numeric 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.