POST /v3/price_checkLive odds lookup across one or more bookie sessions in parallel. Returns 202 Accepted in ~100 ms with one correlation_id per queried session; results stream in independently as each bookie responds. Sports outcomes we already hold a fresh price for (under 10 s) come back resolved on the 202 itself — see the cached fast path under Sports.
/v3/place_bet. If you haven't yet, read Async API for the 4-actor pipeline, the polling/webhook contract, and the copy-paste CLAUDE.md snippet.Fetch live odds for every runner in a race, fanned out across multiple
bookie sessions in parallel. Same async contract as
/v3/place_bet — returns
202 Accepted in ~100 ms with one correlation_id per queried
session. Each session resolves independently as its bookie responds, so
you start streaming results immediately instead of waiting on the slowest
bookie.
X-API-Key: <your-api-key>
Content-Type: application/json
curl -X POST https://api.b337.ai/v3/price_check \ -H "X-API-Key: <your-key>" \ -H "Content-Type: application/json" \ -d '{ "session_ids": ["11142", "14389"], "category": "racing", "track": "Flemington", "race_num": 4, "race_type": "(R)", "date": "2026-05-25" }'
{ "session_ids": ["11142", "14389"], "category": "racing", "track": "Flemington", "race_num": 4, "race_type": "(R)", "date": "2026-05-25", "runner": "Verry Elleegant" }
{ "status": "pending", "category": "racing", "race": { "track": "Flemington", "race_num": 4, "race_type": "(R)", "date": "2026-05-25" }, "queries": [ { "session_id": "11142", "correlation_id": "a1b2…" }, { "session_id": "14389", "correlation_id": "c3d4…" } ] }
Poll each correlation_id via POST /api/bet_status until status flips
from pending to success/failure (or supply callback_url to receive
results via webhook). Sample resolved payload:
{ "status": "success", "category": "racing", "session_id": "11142", "bookie": "tab", "selections": [ { "runner": "Verry Elleegant", "prices": [ { "market": "win", "price": 4.20 }, { "market": "place", "price": 1.65 } ] } ] }
| Field | Type | Required | Notes |
|---|---|---|---|
session_ids | array | ✅ | List of session IDs to fan out across. Each one resolves independently. |
category | "racing" | ✅ | Constant. |
track | string | ✅ | e.g. "Flemington". |
race_num | int | ✅ | Race number. |
race_type | string | optional | "(R)" thoroughbred (default), "(G)" greyhound, "(H)" harness. |
date | string | ✅ | YYYY-MM-DD. |
runner | string | optional | Filter to a specific runner. |
callback_url | string | optional | Webhook for results. |
| Status | Body | Meaning |
|---|---|---|
| 400 | {"error":"session_ids is required"} | Pass at least one session. |
| 403 | {"error":"session_not_owned"} | One of the session_ids doesn't belong to this API key's account. |
| 404 | {"error":"race_not_found"} | Track/race_num/date combo doesn't match any race. |