What API customers asked for and what shipped, once a week. Read it here or have it emailed.
One email a week, only when an issue is published. Nothing else goes to this list, and every email carries a one-click unsubscribe.
Issue #2
Issue #1 closed with six open items. Five of them shipped this week, most on the day that issue went out, and the sixth is filling on its own timetable. After those, the requests that arrived during the week and what shipped for each. As before, anything half-done says so.
Asked by a tipping service that publishes its Saturday selections mid-morning and needs Sportsbet and Betr win and place across the whole day.
/v1/racing/best-odds accepts num_races up to 150, so one call returns the Australian day card.refresh_tier on every race and on every bookmaker entry: live inside six hours keeps the 120-second staleness rule, card beyond it allows 30 minutes. age_seconds is the true age in both. If you apply your own freshness rule, branch on the tier rather than guessing.Asked by two customers maintaining historical runner databases, and one backtesting a model against the archive.
sp is now on every runner and placing in /v1/racing/results: Racing Australia's official starting price for thoroughbreds, the Topaz feed's for greyhounds. That closes the sparse-SP item from last issue.status: abandoned with a status_note carrying Racing Australia's own word: abandoned, postponed, or transferred to another venue. It is read hourly from the official notice board. A live race that is abandoned is marked on /v1/racing/events and shows up in /v1/racing/changes the same way a scratching does. A meeting with real placings is never touched.Asked by the greyhound analysis app and the thoroughbred model app from last issue, who both wanted timestamped race-state changes.
/next-to-go, /events and /changes now carry scratched_at where the source publishes one (Ladbrokes, Neds and the BetMakers-platform books do), late: true for late scratchings and emergency: true for emergencies. Racing Australia's official scratching sheet fills in whatever a bookmaker left unstamped, every two hours. No source anywhere publishes a stewards' reason, so there is no reason field, and the docs say so rather than inventing one./v1/racing/track-conditions (1 credit): per meeting, the current official going, weather and rail position, plus the day's change log, each row with the previous value, the time we saw it move, and which feed saw it. The log started on 6 September and fills from here.track_condition_changed_at on /next-to-go, /events and /changes: the instant of the latest logged change for that race's meeting, null until something moves.market_closed_at now populates. It shipped last issue and then read null on every race, because the exchange feed stops returning a market about two minutes before the jump and no poll ever saw the close. PointsBet is now a second source: the connector follows each race across its jump and stamps the close, usually inside 90 seconds of the advertised start. market_state_source names the feed that stamped it. inplay_at is exchange-only and is not published.Asked by the thoroughbred model app, which wanted a market to compare its place probabilities against.
/v1/racing/next-to-go that quotes them carries top2_price, top3_price and top4_price beside win and place. Ladbrokes, Neds and PointsBet carry all three; Sportsbet where its card offers the same-race-multi markets. A book that does not quote a leg simply omits the key. No new requests: three feeds already carried these in payloads the connectors were fetching and discarding.best_top2, best_top3 and best_top4 on /v1/racing/best-odds, in the same shape as best_place, and the current values on /v1/racing/changes runner rows.Asked by a customer backtesting a model against the closing-lines archive, and another keeping historical prices for a personal model.
runner_ref is now the last column of /v1/racing/closing-lines and /v1/racing/price-paths. CSV column order is otherwise unchanged; JSON is by name. It is filled from Racing Australia acceptances for thoroughbreds and from the results archive once a result lands, for every code. A one-off backfill stamped about 23% of the archive; rows from before late August predate the source and stay null./v1/racing/price-paths?format=parquet: typed columns (UTC timestamps, dates, floats), same 20-credit cost and 200,000-row cap as the CSV.Asked by a ratings modeller who wanted form for 20,000 horses, and the thoroughbred model app.
/v1/racing/horses/form reads Racing Australia one page per horse, and a client-side backfill of thousands of horses trips their bot protection and takes the endpoint down for everyone. New POST /v1/racing/horses/backfill queues the batch on our side and drips it at about 72 reads an hour; status, results and cancel endpoints let you collect rows as they land. Plus plans and above, deliberately above Standard, because it spends a shared upstream budget that no plan enlarges. 3 credits per horse delivered, never at submit; a horse Racing Australia has no page for costs nothing. 20,000 horses takes about 12 days.Asked by the tipping service, which rejects any quote that does not link to the bookmaker.
betslip_win_url and betslip_place_url on each bookmaker entry, and betslip_url on best_win and best_place: a link that opens the bookmaker with the runner already in the betslip. Unibet and TAB work in a browser, and a canary checks both every morning at 9:00 Sydney. Ladbrokes and Neds carry betslip_app_only: true: their links open the native app and cannot be browser-checked, so they ship on the vendor's documentation and a phone tap-test.source_url was empty on nearly every runner row, a lost meeting id in the connector. Fixed 3 September; every row now carries one.degraded on /v1/health/connectors, with any_degraded at the top, instead of the OK-with-zero-records the endpoint used to report. Since 7 September both reach the platform through a second outbound connection of our own and are back on the full card: 29 of 29 races on the 8 September 10:00 reading, win and place. No fingerprint spoofing; the fix is a route, not a disguise.GET /v1/webhooks/{id}/deliveries now reports delivered or failed with the attempt count. Every row used to read pending forever.country=HK on next-to-go, events and best-odds, from the Australian books that quote the meeting. Ladbrokes and Neds carry the full card; PointsBet and Unibet list it and open prices nearer the jump. Prices only: no results, form or runner_ref on Hong Kong races.Reply with anything you want on the list. Requests from the last two weeks drove nearly everything above, and the open list is where the next issue starts. Write to hamish@punters-edge.com or use the feature request form.
All issues