18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware
Versioned from launch — no backfilled history claimed

API Changelog

Every change to endpoints, coverage, pricing and docs that a customer can see. 68 entries from 2026-03-01 to 2026-09-06.

Subscribe: JSON Feed · RSS · weekly write-up at the devlog

All entries

Date Change Affected
2026-09-06
2026-09-06 /v1/racing/price-paths and /v1/racing/closing-lines export Parquet: `format=parquet` returns the same table typed, for `pd.read_parquet`. Abandoned, postponed and transferred meetings appear on /v1/racing/results as `status=abandoned` with `status_note` carrying Racing Australia's word, empty placings and null runners. /v1/racing/changes runner deltas carry the Top 2/3/4 legs /v1/racing/price-paths, /v1/racing/closing-lines, /v1/racing/results, /v1/racing/changes
aaef189
2026-09-05
2026-09-05 New /v1/racing/track-conditions (1 credit): per meeting, the current official track condition, weather and rail from Racing Australia, plus the day's change log — every transition observed, previous value beside the new one, when it was seen and which feed saw it. Bookmaker rows carry race_id; RA rows carry the rail /v1/racing/track-conditions
5d08459
2026-09-05 Same Race Multi legs per runner and per book: `top2_price`, `top3_price` and `top4_price` on next-to-go and events (TAB, Ladbrokes, Neds, PointsBet; Sportsbet where its racecard offers them). Guaranteed win_price >= top2 >= top3 >= top4 > 1.0; a leg that breaks the order at the source is dropped rather than published /v1/racing/next-to-go, /v1/racing/events
adc9d6f
2026-09-05 Scratchings carry the book's own stamp and flags: entries are {name, number, barrier, scratched_at, late, emergency}, merged across every reporting book and Racing Australia's official scratching sheet, visible from the moment a book reports one /v1/racing/events, /v1/racing/next-to-go
d867c51
2026-09-05 `runner_ref` is the last column on /v1/racing/closing-lines and /v1/racing/price-paths (`ra:<horsecode>` for thoroughbreds, `grv:<dogId>` for greyhounds), so archive rows join to live and results runners on a stable id instead of a name /v1/racing/closing-lines, /v1/racing/price-paths
26774d1
2026-09-04
2026-09-03
2026-09-03 New /v1/racing/horses/backfill: queue a list of horses for paced Racing Australia form collection instead of looping /v1/racing/horses/form. Free to submit, 3 credits per horse when delivered; unknown names come back in not_found, ambiguous ones with candidates. Plus and above /v1/racing/horses/backfill
5f8a879
2026-09-03 The full day's card: /v1/racing/next-to-go looks 24 hours ahead instead of six, so an Australian morning pull returns the afternoon. Every race carries `refresh_tier` (live inside three hours of the jump, slower beyond), so a far-out price is declared stale rather than hidden. `books_quoting_win` and `books_quoting_place` are counted separately on /v1/racing/best-odds; `books_quoting` is retained and equals books_quoting_win /v1/racing/next-to-go, /v1/racing/events, /v1/racing/best-odds
29b5f14
2026-09-03 Official starting price on /v1/racing/results: `sp` on every runner and placing, from Racing Australia for thoroughbreds and Topaz for greyhounds. Null while a result is interim /v1/racing/results
cf30732
2026-09-03 The active bookmaker catalogue is 14 Australian books. Six that had delivered no prices for more than 48 hours left the active list; their keys are still accepted in `bookmakers=` filters so nothing 422s Coverage
2026-09-02
2026-09-02 New plans: Plus at A$49/month for 140,000 credits and Platform at A$199/month for 1,500,000 credits with redistribution rights — Platform is the only plan that permits redistribution. Upgrades are now in place and prorated: GET /v1/billing/upgrade with your key shows the options, you keep the same key and pay the difference for the rest of the period Pricing, /v1/billing/upgrade
dc87419
2026-09-02 The API says what the feed has carried all along: Australian and New Zealand racing. NZ thoroughbred and harness meetings are served on every racing endpoint; use `country=NZ`. There are no New Zealand greyhounds in the feed Coverage, /v1/racing/*
d0edd5d
2026-09-02 One identity per track: `venue_id`, `venue_canonical` and `venue_site` on every racing response (Sandown Hillside and Lakeside, Pakenham Synthetic and the like resolve correctly), `track_name` gives Racing Australia's course name verbatim, and the new /v1/racing/venues (1 credit) is the measured venue directory. The raw `venue` string is unchanged /v1/racing/venues, /v1/racing/next-to-go, /v1/racing/events, /v1/racing/results, /v1/racing/closing-lines, /v1/racing/price-paths
23be36c
2026-09-02 New /v1/racing/jockeys/stats and /v1/racing/trainers/stats (2 credits): premiership top-20 tables, national and per state, split metro, provincial, country and picnic, current and previous season. Answers 503 while the store is still filling /v1/racing/jockeys/stats, /v1/racing/trainers/stats
47633de
2026-09-02 Greyhound form runs carry `grade_in` and `grade_out` and a second split where the track records one; horse form runs carry the trainer of that day, joined from the results archive (populated from 2026-09-01 onward, null before) /v1/racing/greyhounds/form, /v1/racing/horses/form
c61985a
2026-09-02 `best_place` quotes on /v1/racing/best-odds carry `source_url`, matching best_win. Ladbrokes, Neds and Palmerbet place prices are now read. Sportsbet publishes its board price, not its mid-day promotional price. `age_seconds` reports the true age of a pushed price /v1/racing/best-odds, /v1/racing/next-to-go
8c71fd7
2026-09-01
2026-09-01 New /v1/racing/horses/form (3 credits): last starts, career record, going splits and profile per thoroughbred from Racing Australia form pages, keyed by the same `ra:<horsecode>` runner_ref the live feed carries. Live surfaces carry Racing Australia race and meeting metadata /v1/racing/horses/form, /v1/racing/next-to-go, /v1/racing/events
c4b5c88
2026-09-01 New /v1/racing/changes (2 credits): everything that moved on the live racing board since a `since` cursor — one poll instead of re-downloading the card. At-least-once delivery; deduplicate on (race_id, name, bookmaker_key, updated_at). A `since` older than 30 minutes is a free 422 /v1/racing/changes
03cf4db
2026-09-01 New /v1/racing/greyhounds/form and /v1/racing/greyhounds/stats (3 credits each): form history per dog and track, distance, box and grade statistics from the official Topaz feed. /v1/racing/events serves scratchings, `market_status` and `inplay`, and box-vacancy placeholders collapse to one Vacant Box entry per box /v1/racing/greyhounds/form, /v1/racing/greyhounds/stats, /v1/racing/events
10be470
2026-09-01 New /v1/racing/price-paths (5 credits JSON, 20 CSV): bulk export of the permanent price-movement archive, one row per observed price point, up to a seven-day window per call. /v1/racing/price-history serves races that have aged out of the ~45-day live store from the same archive, in the same response shape; `history_from` on the response is the floor (capture began 2026-08-04). Betfair prices are withheld pending a data licence /v1/racing/price-paths, /v1/racing/price-history
39f169f
2026-09-01 Webhook event `race.odds_open` fires once per race, the moment the first bookmaker prices land. Webhook subscriptions now start at Standard (they used to start at Business); legacy Starter keys qualify too. /v1/racing/next-to-go accepts `num_races` up to 200, so one call returns the whole priced card /v1/webhooks, /v1/racing/next-to-go
a2b9dad
2026-09-01 Jockey, trainer, barrier and weight are consistent across every Australian thoroughbred meeting, filled from Racing Australia acceptances where no book supplies them. Results can be filtered by `country` /v1/racing/next-to-go, /v1/racing/events, /v1/racing/results
f0784d2
2026-08-31
2026-08-31 Official MCP server: `pip install puntersedge-mcp` (0.1.0). Ten read-only tools with the credit cost in every description and `credits_remaining` on every response. A self-serve cancel page at /v1/billing/cancel replaces the written request puntersedge-mcp, /v1/billing/cancel
0478e7a
2026-08-31 /v1/racing/results carries the full field: `runners` lists every starter with its finishing position, and every runner on results and on live prices carries `runner_ref`, a stable registry id (`ra:<horsecode>` for horses, `grv:<dogId>` for greyhounds) plus trainer and jockey. Join on runner_ref, never on the name /v1/racing/results, /v1/racing/next-to-go
299d546
2026-08-25
2026-08-25 Self-serve key reissue: POST /v1/keys/resend mails a fresh key to the account's verified address, for keys that were shown once and lost. Unknown query parameters are rejected with a 422 before any credit is charged /v1/keys/resend, /v1/racing/best-odds, /v1/racing/results
cc71613
2026-08-24
2026-08-24 Tier names in the published spec and in 402/403 bodies now match the public ladder: Standard (was Racing) and Business (was Pro Plus). The promotions board and the `/v1/value/*` mug-betting markets are retired and answer 410 at no charge OpenAPI, /v1/value/*
9477e0d
2026-08-23
2026-08-23 /v1/racing/closing-lines accepts `date=` as a single-day alias for from/to; passing both is a free 422 /v1/racing/closing-lines
bc1552a
2026-08-23 Python SDK 0.3.0 adds a racing arbitrage scanner: `puntersedge-arb scan --racing` backs one runner per leg across the whole field, book-vs-book, reading /v1/racing/best-odds. No exchange needed, and racing prices carry their own age so a racing-only scan costs 3 credits. Cross-book racing arbs are rare — most races are over-round across books and a scan finding nothing is the ordinary result. There is no racing back/lay support: /v1/arb/racing still returns 410 pending a Betfair data licence puntersedge 0.3.0, /v1/racing/best-odds
cd13af5
2026-08-23 EPL is served again — soccer_epl is active and queryable, correcting the 2026-08-18 entry below which said it 404s. soccer_apl stays unserved for a different reason than that entry gave: every event under it was UEFA Europa League, matched because the A-League test was a bare substring and "europa league" contains "a league". Those fixtures now sit under soccer_other and the connector test is word-bounded /v1/sports, /v1/arb/sports?sport_key=
02af243
2026-08-18
2026-08-18 Racing next-to-go: foreign meetings are served where books quote them, and races with no country label are no longer treated as foreign and filtered out /v1/racing/next-to-go
75fe24a
2026-08-18 EPL, A-League and Super Rugby are no longer served: soccer_epl and soccer_apl are deactivated and 404, and rugby_union carries international tests only. Soccer is served under soccer_other (MLS, La Liga, the English Championship and others) Coverage
2026-08-17
2026-08-17 A mistyped bookmaker key now returns a free 422 naming the valid keys, instead of a billed 200 with an empty list /v1/sports/{sport_key}/odds, /v1/best-odds/{sport_key}
c5a7db9
2026-08-17 Webhook subscriptions accept an event filter on creation, and the docs now describe what actually fires rather than a superset /v1/webhooks
592a251
2026-08-17 API key rotation gained a grace window: the old key keeps working while you cut over, so rotating a key is no longer a self-inflicted outage /v1/keys/rotate
c0c4629
2026-08-17 A 402 over-quota response now names the tier that fixes it and links straight there, sized against your measured burn rate rather than the next tier up All metered endpoints
7a8b845
2026-08-17 Subscribers can manage their own billing — card, invoices and cancellation — through a self-serve portal instead of emailing support Billing
eb25673
2026-08-17 The Postman collection is served at a public URL and ships runnable request bodies Docs, Postman collection
101e615
2026-08-17 Demo endpoints reject an unknown bookmaker or sport with a 400 instead of returning an empty 200 that looks like a coverage gap /v1/demo/*
1cf1dd6
2026-08-17 Rejected requests stopped consuming credits, and error responses stopped echoing fields from other customers' requests All endpoints
0473fc5
2026-08-17 Racing paths are grouped under their own tag in the OpenAPI schema, so they are findable in generated clients and in the docs sidebar openapi.json, /docs
25c74e1
2026-08-17 Free tier corrected to 1,500 credits per month on 47 generated landing pages that still said 500 — the rest of the estate, and the plan record itself, were already correct Pricing pages
5ef92a2
2026-08-17 /api/status corrected: sports polling is six customer-visible Australian bookmakers every 900 seconds, not “continuous polling from 7”, and the racing refresh figure was wrong by 6x. The self-certifying “reviewed today” badge was replaced with a date that only moves when a person moves it /api/status
edb1d8c
2026-08-16
2026-08-16 Security: the $0 key-mint path that could issue enterprise and pro_plus keys was closed, key rotation and /v1/keys/info were fixed, and the auth cache TTL moved from 20s to 65s /v1/keys/*, authentication
71314c3
2026-08-15
2026-08-15 Public docs corrected against live measurement: price-history retention, results bookmaker attribution, tote product list, next-to-go flucs coverage, sports refresh cadence, free-tier allowance and per-minute rate limits. No API behaviour changed — only the claims made about it Docs, /api/pricing, /developers/getting-started, /api/examples, llms.txt
2026-08-15 Pricing recorded: free tier is 1,500 credits/month (not the 500 stated at launch), the $29 tier is Starter (the name Pro belongs to a retired $299 tier), and Hobby ($9/7,500) and Racing ($19/40,000) are on sale. Credits reset on the 1st of each calendar month at 00:00 UTC, not on the subscription anniversary Pricing
2026-08-15 Historical odds and price movements confirmed as Pro Plus / Unlimited only — Free, Hobby, Racing and Starter receive a 403. The pricing page previously listed “All endpoints” on three of those tiers /v1/sports/{key}/odds/history, /movements
2026-08-15 Betfair Exchange data withheld from customer responses pending a Betfair commercial data licence. Fixed-odds prices from the Australian bookmakers are unaffected. The two Betfair-dependent endpoints now return 410 at zero credits rather than an empty list /v1/racing/exchange, /v1/arb/racing
2026-08-15 Racing best-odds added: best win, place and tote price per runner across books, with the bookmaker offering it, a deep link, and the market percentage /v1/racing/best-odds
2026-08-15 Market movers added: steamers and drifters since the market opened, with the per-bookmaker moves behind each consensus move /v1/racing/movers
2026-08-15 Racing price history added: every price move per runner per bookmaker, with a real opening line and a true closing line for closing-line value. History starts 4 August 2026 and is retained 45 days, so the window was 11 days at launch and grows by a day each day until it reaches the full 45 /v1/racing/price-history
2026-08-15 Settled race results added: finishing order with one bookmaker's settled win and place prices (BetRight), plus scratchings and their deductions. Deduction values are a fraction of the payout withheld — 0.34 = 34c in the dollar /v1/racing/results
2026-08-15 Tote prices added on next-to-go and best-odds, keyed by product: PROV (indicative pre-race) and MIDDIV. RD+ and BT+SP are settled products and appear on /v1/racing/results only; SP is not returned anywhere /v1/racing/next-to-go, /v1/racing/best-odds, /v1/racing/results
2026-08-15 next-to-go enriched on Australian meetings: jockey, trainer, barrier, weight, form, scratchings, track condition, distance and a deep link to the bookmaker's own race page. Opening price and flucs are carried inline for BetRight only — for every book's opening line and drift use /v1/racing/movers. Enrichment fields are null on international races /v1/racing/next-to-go
2026-08-15 Sports odds gained a competition field and filter, so NRL and NRLW (and AFL and AFLW) are distinguishable /v1/sports/{sport_key}/odds
2026-08-15 Odds-boost board retired: it could only ever return an empty list, because boosts are per-account tokens that appear in no public odds feed /v1/value/boosts
2026-06-18
2026-06-18 Docs updated to cover arbitrage, value and historical endpoints with code examples and an endpoint matrix /api-platform, /api/examples, /api/coverage
2026-06-17
2026-06-17 Racing back/lay arb gained verify=1 (live re-check of each leg against book + Betfair); data-quality summary endpoint added /v1/arb/racing, /v1/data-quality/summary
2026-06-17 Value endpoint added: EV-ranked daily promo board /v1/value/promos
2026-06-16
2026-06-16 Arbitrage endpoints added: sports surebets, spreads/totals line arb, racing back/lay vs Betfair, and best-prices comparison /v1/arb/sports, /v1/arb/lines, /v1/arb/racing, /v1/arb/best-prices
2026-06-16 Historical odds snapshots and price-movement feed added (Pro+); racing events list, webhooks, usage analytics and key rotation added /v1/sports/{key}/odds/history, /movements, /v1/racing/events, /v1/webhooks
2026-06-02
2026-06-02 API documentation rebuilt with accurate coverage, pricing, and code examples All /api/* pages
2026-06-02 Segmented sitemaps added — /api/* pages now in sitemap-api.xml SEO / sitemap
2026-06-01
2026-06-01 Trust/compliance documentation pages added (/api/status, /api/coverage) Docs
2026-04-22
2026-04-22 AU Odds API v1.0.0 launched. Endpoints: /v1/sports, /v1/sports/{key}/odds, /v1/best-odds/{key}, /v1/racing/next-to-go, /v1/usage, /v1/health All endpoints
2026-04-22 11 Australian bookmakers connected: Sportsbet, TAB, TABtouch, Neds, Ladbrokes AU, Unibet, Betfair Exchange, PointsBet, Betr, BetRight, PlayUp Coverage
2026-04-22 10 sports active at launch: AFL, NRL, NBA, Tennis ATP/WTA, EPL, A-League, Super Rugby, Big Bash (Beta), Test Cricket (Beta) Coverage
2026-04-22 4 pricing tiers: Free (500cr), Pro ($29/20k cr), Pro Plus ($99/100k cr), Unlimited ($249/5M cr) Pricing
2026-03-01
2026-03-01 Internal API development started Internal

Entries from 2026-08-16 cite the short commit SHA they were mined from, where one exists.

Breaking changes will be announced with ≥ 30 days notice where possible. No breaking changes have been made since launch.

Coverage Status & uptime Get API key
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.