API reference / Racing
POST /v1/racing/horses/backfillQueue a batch of horses for paced form collection
3 credits per horse when it is delivered. Hand us a list of horses and we collect their Racing Australia form at a pace RA tolerates, then hold it for you. This is the supported way to backfill a model: looping /v1/racing/horses/form yourself will trip RA's bot protection long before a few thousand horses, and the 503s that follow are shared with every other customer. Names resolve the same way they do on the form endpoint — against acceptances (about three days ahead) and every archived result runner. A name we have never seen comes straight back in `not_found` rather than being queued; a name matching several horses comes back in `ambiguous` with the candidates, so you can re-submit the ref you meant. Neither costs anything. Horses we already hold a fresh copy of skip the queue and are ready at once. A horse already queued for you is not queued twice. Poll GET /v1/racing/horses/backfill/{job_id} for progress and collect from /results as rows complete — you do not have to wait for the whole batch.
X-API-Key
free to submit
curl -X POST 'https://api.puntersedge.online/v1/racing/horses/backfill' \
-H 'X-API-Key: YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"horses": ["HORSES"], "label": "LABEL"}'
| Name | In | Type | Required | Description |
|---|---|---|---|---|
horses |
body | array | yes | Horse names or ra: refs. Max 500 per call. A ref is exact; a name is resolved against acceptances and archived results. |
label |
body | string | no | Your own tag for this batch, echoed back on status. |
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 to submit.
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",
"label": "Saturday metro fields",
"queued": 38,
"already_stored": 6,
"duplicates": 0,
"not_found": [
"Fabulos Fiano"
],
"ambiguous": [
{
"input": "Media Spin",
"candidates": [
{
"runner_ref": "ra:MTMwNDY2ODI0NA",
"runner_name": "Media Spin",
"last_seen": "2026-09-07",
"source": "acceptances"
},
{
"runner_ref": "ra:MTI5ODc1NDQwMA",
"runner_name": "Media Spin (NZ)",
"last_seen": "2026-08-22",
"source": "results"
}
]
}
],
"estimated_ready": "2026-09-07T01:35:00Z"
}
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 timestampGET /v1/racing/events — Upcoming race listGET /v1/racing/greyhounds/form — Greyhound form history for one dogGET /v1/racing/greyhounds/stats — Greyhound record by track, distance, box or gradeDELETE /v1/racing/horses/backfill/{job_id} — Cancel the horses a job has not collected yetGET /v1/racing/horses/backfill/{job_id} — Progress of a backfill jobThe free tier needs no credit card, and the sandbox endpoints need no key at all.
Get a free API key Quickstart