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
| 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-04 | Runner-level betslip deep links: `betslip_url` beside `source_url` on best_win and best_place quotes, for the books that publish a runner route; null where the book has none |
/v1/racing/best-odds 1b36c5c |
| 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.