Developers

Integrate in one sitting

RESTful endpoints, API key auth, and tenant docs generated on signup. Code at midnight, ship by dawn.

Authentication

Pass your tenant API key via the X-Api-Key header or ?apiKey= query parameter.

curl example
curl -H "X-Api-Key: YOUR_KEY" \
  https://odds.cafe/api/v1/tenant/live?limit=20

Headless API (bet placement)

API-only tenants: authenticate with your tenant key, read odds from /common/api/v1/ or /api/v1/tenant/, then place bets on POST /api/v1/tenant/bets. There is no bet route under /common/.

auth → odds → place bet → track
# Optional JWT for WebSockets
curl -X POST https://odds.cafe/api/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{"apiKey":"YOUR_KEY","clientId":"your-app"}'

# Live events + odds (public common API)
curl https://odds.cafe/common/api/v1/events/live
curl https://odds.cafe/common/api/v1/events/EVENT_ID/odds

# Place bet (server-side only — use x-api-key or x-settlement-key)
curl -X POST https://odds.cafe/api/v1/tenant/bets \
  -H "X-Api-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"eventId":"EVENT_ID","marketType":"match_odds","selection":"RUNNER_ID","selectionName":"Team A","side":"back","stake":10,"price":2.5}'

# Track open bets
curl -H "X-Api-Key: YOUR_KEY" "https://odds.cafe/api/v1/tenant/bets?status=open"

Event IDs from the Common API work on /tenant/bets — the platform registers the fixture on first bet. Use GET /api/v1/tenant/stream/:eventId for live TV when available: true.

Common Odds API

Public, sport-agnostic proxy at /common/api/v1/ — fast normalized odds for cricket, soccer, tennis, and more. No tenant key required.

Health

GET /common/health — upstream STOMP feed status and event counts.

Events

GET /common/api/v1/events — all live events across sports.

Live

GET /common/api/v1/events/live — in-play fixtures only.

Event odds

GET /common/api/v1/events/:eventId/odds — matchOdds, bookmaker, fancy, line.

Bulk odds

GET /common/api/v1/odds — snapshot for every subscribed event.

WebSocket

WS /common/ws — live guru365 STOMP feed (feed.robuzz.lol) via in-repo bridge.

reference — guru365 cricket
# List events, then fetch odds for any id from the response:
curl https://odds.cafe/common/api/v1/events
curl https://odds.cafe/common/api/v1/events/EVENT_ID/odds

# Response shape (all sports):
# { eventId, eventName, matchOdds, bookmaker, fancy, line }

Default: direct robuzz integration (api.robuzz.lol, catalog.robuzz.lol, feed.robuzz.lol). Set ODDS_UPSTREAM_URL only to use a legacy external HTTP proxy.

Live stream auto-mount

When a fixture is in-play but the TV feed is not ready yet (not_live), hosted clients poll until available: true — then playback and a LIVE badge appear without a page refresh.

Sportsbook

GET /api/v1/sportsbook/stream/:eventId — JWT auth. Poll interval respects retryAfterMs from the resolver.

AGSE embed

GET /api/v1/embed/live-tv/:eventId/resolve — used by /embed/agse/ and /embed/v1/ iframes.

Tenant REST

GET /api/v1/tenant/stream/:eventId — same resolver for custom players; pass X-Api-Key.

Full embed URLs and API key examples are in your tenant lounge after signup.

Core endpoints

All tenant routes live under /api/v1/tenant/

Live events

GET /live — in-play fixtures with full market buckets (use these event IDs for bets).

Odds ticks

GET /odds/live — recent price tick feed (diagnostics; not the event list).

Place bet

POST /bets — register a wager (eventId, selection, stake, price, marketType).

Scorecard

GET /scorecard/:eventId — live match state and period breakdowns.

Bootstrap

GET /bootstrap — sports list, feature flags, and connection hints for your client.

Usage

GET /usage — quota consumption and billing period stats for your tenant.

Plans

GET /plans — public plan catalog (also powers this site’s pricing page).

Common odds API

Fast, sport-agnostic normalized odds at /common/ — match odds, bookmaker, fancy, and line markets from the cached upstream catalog and STOMP feed.

fast proxy (public, all sports)
curl https://odds.cafe/common/health
curl https://odds.cafe/common/api/v1/events
curl https://odds.cafe/common/api/v1/events/live
curl https://odds.cafe/common/api/v1/events/35656102/odds
curl https://odds.cafe/common/api/v1/odds

# WebSocket (live STOMP bridge)
wss://odds.cafe/common/ws
local cache (optional auth)
curl https://odds.cafe/common/manifest

curl -H "X-Api-Key: YOUR_KEY" https://odds.cafe/common/sports
curl -H "X-Api-Key: YOUR_KEY" "https://odds.cafe/common/events?sportId=4&status=IN_PLAY"
curl -H "X-Api-Key: YOUR_KEY" https://odds.cafe/common/live?limit=20
curl -H "X-Api-Key: YOUR_KEY" https://odds.cafe/common/events/EVENT_ID/odds

Normalized shape

matchOdds, bookmaker, fancy, and line arrays per event — same schema across all sports.

Event tokens

Each event includes eventToken (BetFair:sportId:competitionId:eventId) and exchangePath for guru365-style URLs.

OpenAPI

GET /common/openapi.json — machine-readable route map. Operator dashboard includes a live browser under Common API.

“Good docs are like good coffee — strong, simple, and available when you need them.”
— Developer experience

Your personal docs

After onboarding, full integration guides are generated in your tenant lounge — with your API key pre-filled.

Open lounge & docs