Poll as often as your rate limit allows. `credits_blocked` is the one field worth watching: the worker bills 3 credits per horse as it delivers it, and when your balance drops below that it stops taking rows for your key and leaves them queued. Nothing is lost — collection resumes when your credits reset on the 1st, or immediately if you upgrade. `upstream` says whether Racing Australia is answering form reads at all. `state: walled` means RA is serving its bot-protection challenge to every fresh read, so NO horse can be collected — by us or by anyone — until that stops; `walled_since` and `walled_hours` say how long it has been going on, which is the difference between a queue that is slow and a queue that is stopped. Your rows stay queued and unbilled throughout and collection resumes on its own; there is nothing to re-submit. While it lasts, GET /v1/racing/horses/runs answers from our own settled results instead and needs no Racing Australia read at all. The block is additive: every other field, and all billing and queue behaviour, is exactly as it was before 2026-09-21.
X-API-Key
free
curl 'https://api.puntersedge.online/v1/racing/horses/backfill/YOUR_JOB_ID' \
-H 'X-API-Key: YOUR_KEY'
| Name | In | Type | Required | Description |
|---|---|---|---|---|
job_id |
path | string | yes |
Status codes: 200, 401, 402, 422, 429, 500. Response bodies are JSON; the full schema is in /openapi.json.
200 application/json
— this call costs free.
Field names and types are as the API returns them; values are a real sample, trimmed to a few items.
{
"job_id": "bf_20260907_3a9c1e",
"submitted_at": "2026-09-07T00:52:10Z",
"total": 38,
"done": 21,
"queued": 17,
"failed": 0,
"credits_charged": 63,
"credits_blocked": false,
"queue_position": 0,
"estimated_ready": "2026-09-07T01:35:00Z",
"ready_to_collect": 21,
"upstream": {
"state": "walled",
"walled_since": "2026-09-19T15:00:00Z",
"walled_hours": 41.2,
"note": "Racing Australia is serving its bot-protection challenge to every fresh form read, so no new horse can be collected until it stops; your queued horses are untouched and unbilled, collection resumes on its own with no action from you, and for what we already hold on these horses today use GET /v1/racing/horses/runs."
}
}
GET /v1/racing/acceptances — Full-day AU thoroughbred acceptance card: every meeting, race and runnerGET /v1/racing/best-odds — Best racing price per runner across booksGET /v1/racing/changes — Races and prices that changed since a timestampPOST /v1/racing/clv — Score bets against the closing line (CLV)GET /v1/racing/consensus — The market consensus on one race: margin-free probability per runnerGET /v1/racing/events — Upcoming race listGET /v1/racing/form — Every runner in one race with its recent runs, from our own resultsGET /v1/racing/greyhounds/form — Greyhound form history for one dog, from our own resultsThe free tier needs no credit card, and the sandbox endpoints need no key at all.
Get a free API key Quickstart