APIHorseRacing

Documentation / Race reports

Race report

GET /v1/reports/{race_id}

The written account of a single race, with a line for every runner.

Available on

Free key not on this plan
Live not on this plan
Archive not on this plan
Complete 2017 → upcoming
Complete + Analyst 2017 → upcoming

Send your key in the X-API-Key header, or as ?key= if your tool cannot set one. A date outside your plan's window returns 403 outside_window naming the window, never an empty array.

Parameters

None. This endpoint takes nothing beyond your key.

Request

curl https://api.apihorseracing.com/v1/reports/rc_1P005G7 \
  -H "X-API-Key: $AHR_KEY"

Response

200 OK application/json harvested 8 days ago
{
    "meta": {
        "request_id": "b7722a39a17fd661",
        "data_as_of": "2026-09-12T05:10:27+00:00",
        "plan": "analyst",
        "window": "2017 → upcoming"
    },
    "data": {
        "race_id": "rc_2WS5ZEG",
        "headline": "Sulafaat wins at 3/1 for cold yard",
        "preview": "Lopes Dancer, backed in from 15/8 to 6/4, was the market leader at 34.5% chance. Sulafaat, second in the betting, had won 2 of 13 at Newcastle. Superyacht returned after 1341 days off at 8/1. Remember The Days, 46lb lower than last time, drifted from 9/2 to 6/1.",
        "report": "Sulafaat won at 3/1, having finished second on his two previous Newcastle runs this month. The favourite, Lopes Dancer, finished third at 6/4. Champagne Rules finished second at 6/1. Remember The Days, who had drifted 27% in the market and run off a mark 46lb lower than his last run, finished last of six. All six horses completed.",
        "runners": {
            "Lopes Dancer": "Lopes Dancer finished third of 6 at 6/4 favourite, having been backed in from 15/8; the market made him a 34.5% chance.",
            "Sulafaat": "Sulafaat won at 3/1, having finished second in each of his two previous Newcastle starts this month; he had won 2 of 13 here before today.",
            "Remember The Days": "Remember The Days finished sixth of 6 at 6/1, having drifted from 9/2 and run off a mark 46lb lower than last time.",
            "Champagne Rules": "Champagne Rules finished second of 6 at 6/1, having run at this course and distance before.",
            "Superyacht": "Superyacht finished fifth of 6 at 8/1, returning after 1341 days off the track.",
            "Madeeh": "Madeeh finished fourth of 6 at 8/1, having been backed in from 12/1 into 8/1."
        },
        "written_at": "2026-09-13T19:39:33+00:00"
    }
}

A real response from /v1/reports/rc_2WS5ZEG, captured by calling the live API rather than written by hand.

Response fields

Each field is described once and rendered on every endpoint that returns it, so the wording cannot drift between pages.

FieldTypeWhat it is
race_id string Opaque race identifier. Stable, and safe to store.
runners integer Runners who took part.

Errors this endpoint returns

CodeStatusWhen
unauthorized 401 No key, or one we do not recognise. Check the header name and that the key has not been rotated from your account page.
rate_limited 429 Past your per-minute rate. Retry-After is set, and X-RateLimit-Remaining tells you where you stand on every successful response too.
server_error 500 Ours, not yours. Every response carries a request_id; quote it and we can find the exact request.

Run it live

A real request from your browser straight to api.apihorseracing.com with your own key. Nothing is proxied and nothing is logged by this page.

Remembered in this browser so you do not paste it on every page.

Related in Race reports