openapi: 3.1.0 info: title: The Racing Australia Racecards API version: 1.4.3 x-logo: url: https://www.theracingapi.com/static/images/logo_padded.png description: High performance API for horse racing statistical modelling, application development and web content. Complete coverage of UK, Irish and Hong Kong horse racing. contact: url: https://www.theracingapi.com/ x-generated-from: official-openapi-spec servers: - url: https://api.theracingapi.com description: Production server tags: - name: Racecards paths: /v1/racecards/free: get: tags: - Racecards summary: The Racing API Racecards Free description:

Get racecards for today and tomorrow (basic data only)

Min. Required PlanFree
Rate Limit1 request per second
operationId: racecards_free_v1_racecards_free_get security: - HTTPBasic: [] parameters: - name: day in: query required: false schema: anyOf: - type: string - type: 'null' title: Day description: Query racecards by day:
today, tomorrow default: today description: Query racecards by day:
today, tomorrow - name: region_codes in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Regions description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' - name: course_ids in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Courses description: Query by course ids. Get the full list here. description: Query by course ids. Get the full list here. - name: limit in: query required: false schema: anyOf: - type: integer maximum: 500 minimum: 1 - type: 'null' title: Limit default: 500 - name: skip in: query required: false schema: anyOf: - type: integer maximum: 500 - type: 'null' title: Skip default: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RacecardsBasicPage' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/free ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/free" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/free?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/free'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/free\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/free?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/free?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/racecards/basic: get: tags: - Racecards summary: The Racing API Racecards Basic description:

Get racecards for today and tomorrow

Min. Required PlanBasic
Rate Limit2 requests per second
operationId: racecards_basic_v1_racecards_basic_get security: - HTTPBasic: [] parameters: - name: day in: query required: false schema: anyOf: - type: string - type: 'null' title: Day description: Query racecards by day:
today, tomorrow default: today description: Query racecards by day:
today, tomorrow - name: region_codes in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Regions description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' - name: course_ids in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Courses description: Query by course ids. Get the full list here. description: Query by course ids. Get the full list here. - name: limit in: query required: false schema: anyOf: - type: integer maximum: 500 minimum: 1 - type: 'null' title: Limit default: 500 - name: skip in: query required: false schema: anyOf: - type: integer maximum: 500 - type: 'null' title: Skip default: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RacecardsPage' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/basic ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/basic" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/basic?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/basic'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/basic\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/basic?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/basic?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/racecards/standard: get: tags: - Racecards summary: The Racing API Racecards Standard description:

Get racecards for today and tomorrow, including runner odds for UK & Irish racing.

Min. Required PlanStandard
Rate Limit2 requests per second
operationId: racecards_standard_v1_racecards_standard_get security: - HTTPBasic: [] parameters: - name: day in: query required: false schema: anyOf: - type: string - type: 'null' title: Day description: Query racecards by day:
today, tomorrow default: today description: Query racecards by day:
today, tomorrow - name: region_codes in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Regions description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' - name: course_ids in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Courses description: Query by course ids. Get the full list here. description: Query by course ids. Get the full list here. - name: limit in: query required: false schema: anyOf: - type: integer maximum: 500 minimum: 1 - type: 'null' title: Limit default: 500 - name: skip in: query required: false schema: anyOf: - type: integer maximum: 500 - type: 'null' title: Skip default: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RacecardsOddsPage' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/standard ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/standard" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/standard?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/standard'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/standard\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/standard?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/standard?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/racecards/pro: get: tags: - Racecards summary: The Racing API Racecards Pro description:

Get future and historical racecards, including runner odds for UK & Irish racing.

Min. Required PlanPro
Rate Limit2 requests per second

ℹ️ Historical racecards are available from 2023-01-23, when our tracking began. Future racecards are available up to 1 week in advance.

operationId: racecards_pro_v1_racecards_pro_get security: - HTTPBasic: [] parameters: - name: date in: query required: false schema: anyOf: - type: string - type: 'null' title: Date description: Query racecards by date with format YYYY-MM-DD (e.g 2023-04-05) description: Query racecards by date with format YYYY-MM-DD (e.g 2023-04-05) - name: region_codes in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Regions description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' - name: course_ids in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Courses description: Query by course ids. Get the full list here. description: Query by course ids. Get the full list here. - name: limit in: query required: false schema: anyOf: - type: integer maximum: 500 minimum: 1 - type: 'null' title: Limit default: 500 - name: skip in: query required: false schema: anyOf: - type: integer maximum: 500 - type: 'null' title: Skip default: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RacecardsOddsProPage' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/pro ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/pro" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/pro?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/pro'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/pro\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/pro?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/pro?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/racecards/big-races: get: tags: - Racecards summary: The Racing API Racecards Big Races description:

Get detailed racecards for future big races and main events, such as Cheltenham, The Grand National and The Derby.

Min. Required PlanStandard
Rate Limit2 requests per second
operationId: racecards_big_races_v1_racecards_big_races_get security: - HTTPBasic: [] parameters: - name: start_date in: query required: false schema: anyOf: - type: string - type: 'null' description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

Date must be today or greater, defaults to today.

title: Start Date description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

Date must be today or greater, defaults to today.

- name: end_date in: query required: false schema: anyOf: - type: string - type: 'null' description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

title: End Date description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

- name: region_codes in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Regions description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' - name: course_ids in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Courses description: Query by course ids. Get the full list here. description: Query by course ids. Get the full list here. - name: limit in: query required: false schema: anyOf: - type: integer maximum: 500 minimum: 1 - type: 'null' title: Limit default: 500 - name: skip in: query required: false schema: anyOf: - type: integer maximum: 500 - type: 'null' title: Skip default: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RacecardsOddsPage' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/big-races ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/big-races" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/big-races?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/big-races'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/big-races\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/big-races?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/big-races?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/racecards/summaries: get: tags: - Racecards summary: The Racing API Racecards Summaries description:

Get racecard summaries by date

Min. Required PlanBasic
Rate Limit5 requests per second
operationId: racecards_summaries_v1_racecards_summaries_get security: - HTTPBasic: [] parameters: - name: date in: query required: false schema: anyOf: - type: string - type: 'null' title: Date description: Query racecard summaries by date with format YYYY-MM-DD (e.g 2023-04-05) default: '2026-05-03' description: Query racecard summaries by date with format YYYY-MM-DD (e.g 2023-04-05) - name: region_codes in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Regions description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' - name: course_ids in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Courses description: Query by course ids. Get the full list here. description: Query by course ids. Get the full list here. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RacecardsSummary' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/summaries ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/summaries" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/summaries?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/summaries'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/summaries\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/summaries?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/summaries?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/racecards/{horse_id}/results: get: tags: - Racecards summary: The Racing API Racecard Horse Results description:

Get historic results for a horse on any upcoming racecard.

Min. Required PlanBasic
Rate Limit5 requests per second
operationId: racecard_horse_results_v1_racecards__horse_id__results_get security: - HTTPBasic: [] parameters: - name: horse_id in: path required: true schema: type: string title: Horse Id - name: start_date in: query required: false schema: anyOf: - type: string - type: 'null' description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

title: Start Date description:

Query from date with format YYYY-MM-DD, e.g. 2020-01-01

- name: end_date in: query required: false schema: anyOf: - type: string - type: 'null' description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

title: End Date description:

Query to date with format YYYY-MM-DD, e.g. 2020-01-01

- name: region in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' title: Region description: '

Query by region codes. Get the full list here.

Note: If the course query parameter is specified, this will be ignored.

' - name: course in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Query by course ids. Get the full list here. title: Course description: Query by course ids. Get the full list here. - name: type in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' title: Type description: '

Query by race type

Options: chase, flat, hurdle, nh_flat

' - name: going in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yielding, hard, heavy, holding, muddy, sloppy, slow, soft, soft_to_heavy, standard, standard_to_fast, standard_to_slow, very_soft, yielding, yielding_to_soft

' title: Going description: '

Query by going

Options: fast, firm, good, good_to_firm, good_to_soft, good_to_yielding, hard, heavy, holding, muddy, sloppy, slow, soft, soft_to_heavy, standard, standard_to_fast, standard_to_slow, very_soft, yielding, yielding_to_soft

' - name: race_class in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6, class_7

' title: Race Class description: '

Query by class

Options: class_1, class_2, class_3, class_4, class_5, class_6, class_7

' - name: min_distance_y in: query required: false schema: anyOf: - type: integer - type: 'null' description:

Query by minimum race distance (yards)

title: Min Distance Y description:

Query by minimum race distance (yards)

- name: max_distance_y in: query required: false schema: anyOf: - type: integer - type: 'null' description:

Query by maximum race distance (yards)

title: Max Distance Y description:

Query by maximum race distance (yards)

- name: age_band in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3-6yo, 3yo, 3yo+, 4-5yo, 4-6yo, 4-7yo, 4-8yo, 4yo, 4yo+, 5-6yo, 5-7yo, 5-8yo, 5yo, 5yo+, 6-7yo, 6yo, 6yo+, 7yo+, 8yo+, 9yo+

' title: Age Band description: '

Query by age band

Options: 10yo+, 2-3yo, 2yo, 2yo+, 3-4yo, 3-5yo, 3-6yo, 3yo, 3yo+, 4-5yo, 4-6yo, 4-7yo, 4-8yo, 4yo, 4yo+, 5-6yo, 5-7yo, 5-8yo, 5yo, 5yo+, 6-7yo, 6yo, 6yo+, 7yo+, 8yo+, 9yo+

' - name: sex_restriction in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' title: Sex Restriction description: '

Query by sex restriction

Options: c&f, c&g, f, f&m, m, m&g

' - name: limit in: query required: false schema: anyOf: - type: integer maximum: 100 minimum: 1 - type: 'null' title: Limit default: 50 - name: skip in: query required: false schema: anyOf: - type: integer - type: 'null' title: Skip default: 0 responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ResultsBasicPage' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/{horse_id}/results ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/{horse_id}/results" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/{horse_id}/results?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/{horse_id}/results'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/{horse_id}/results\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/{horse_id}/results?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/{horse_id}/results?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK /v1/racecards/{race_id}/standard: get: tags: - Racecards summary: The Racing API Race Standard description:

Get a race scheduled for today or tomorrow (or if classified as a 'big race'), including runner odds for UK & Ireland races.

Min. Required PlanStandard
Rate Limit5 requests per second
operationId: race_standard_v1_racecards__race_id__standard_get security: - HTTPBasic: [] parameters: - name: race_id in: path required: true schema: type: string title: Race Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RacecardOdds' '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/racecards/{race_id}/standard ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/racecards/{race_id}/standard" params = {} response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params) print(response.json())' label: Python3 - lang: PHP source: "" label: PHP - lang: JavaScript source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/racecards/{race_id}/standard?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));" label: Node.js - lang: Ruby source: 'require ''net/http'' require ''uri'' require ''json'' params = {} uri = URI(''https://api.theracingapi.com/v1/racecards/{race_id}/standard'') uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request.basic_auth(''USERNAME'', ''PASSWORD'') response = http.request(request) puts JSON.parse(response.body)' label: Ruby - lang: Java source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/racecards/{race_id}/standard\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());" label: Java - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/racecards/{race_id}/standard?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}" label: Go - lang: C# source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/racecards/{race_id}/standard?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);" label: .NET x-microcks-operation: delay: 0 dispatcher: FALLBACK components: schemas: ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError ResultBasic: properties: race_id: type: string title: Race Id date: type: string title: Date region: type: string title: Region course: type: string title: Course course_id: type: string title: Course Id 'off': type: string title: 'Off' off_dt: anyOf: - type: string - type: 'null' title: Off Dt default: '' race_name: type: string title: Race Name type: type: string title: Type class: type: string title: Class pattern: type: string title: Pattern rating_band: type: string title: Rating Band age_band: type: string title: Age Band sex_rest: type: string title: Sex Rest dist: type: string title: Dist dist_y: type: string title: Dist Y dist_m: type: string title: Dist M dist_f: type: string title: Dist F going: type: string title: Going surface: anyOf: - type: string - type: 'null' title: Surface default: '' jumps: anyOf: - type: string - type: 'null' title: Jumps default: '' runners: items: $ref: '#/components/schemas/app__models__result__RunnerBasic' type: array title: Runners winning_time_detail: anyOf: - type: string - type: 'null' title: Winning Time Detail default: '' comments: anyOf: - type: string - type: 'null' title: Comments default: '' non_runners: anyOf: - type: string - type: 'null' title: Non Runners default: '' tote_win: anyOf: - type: string - type: 'null' title: Tote Win default: '' tote_pl: anyOf: - type: string - type: 'null' title: Tote Pl default: '' tote_ex: anyOf: - type: string - type: 'null' title: Tote Ex default: '' tote_csf: anyOf: - type: string - type: 'null' title: Tote Csf default: '' tote_tricast: anyOf: - type: string - type: 'null' title: Tote Tricast default: '' tote_trifecta: anyOf: - type: string - type: 'null' title: Tote Trifecta default: '' type: object required: - race_id - date - region - course - course_id - 'off' - race_name - type - class - pattern - rating_band - age_band - sex_rest - dist - dist_y - dist_m - dist_f - going - runners title: ResultBasic example: age_band: 4yo+ class: '' comments: '' course: Ballinrobe (IRE) course_id: crs_4550 date: '2025-08-11' dist: 2m7f dist_f: 23f dist_m: '4625' dist_y: '5058' going: Good jumps: 12 hurdles non_runners: Diamonds Diva (reserve), Great Rainbow (reserve), Loughrask Rainbow (reserve) 'off': '8:25' off_dt: '2025-08-11T20:25:00+01:00' pattern: '' race_id: rac_11715730 race_name: J.J. Burke Peugeot Handicap Hurdle rating_band: 0-100 region: IRE runners: - age: '8' btn: '0' comment: Held up in rear - headway 3 out - went third after 2 out - challenging when not fluent last - led home turn - ridden clear final furlong(op 13/2) dam: Save Me The Waltz (FR) dam_id: dam_4189605 damsire: Halling damsire_id: dsi_675241 draw: '' headgear: v horse: Mephisto (IRE) horse_id: hrs_19359270 jockey: Shane Fitzgerald jockey_claim_lbs: '0' jockey_id: jky_302916 number: '2' or: '98' ovr_btn: '0' owner: Restricted Movement Syndicate owner_id: own_1204876 position: '1' prize: €5900 rpr: '105' sex: G silk_url: https://www.url-for-silk.com/svg/456789.svg sire: Kendargent (FR) sire_id: sir_4514419 sp: 15/2 sp_dec: '8.50' time: '5:44.90' trainer: Gerard Keane trainer_id: trn_86382 tsr: '64' weight: 11-12 weight_lbs: '166' sex_rest: '' surface: Turf tote_csf: €300.55 tote_ex: €253.10 tote_pl: €2.30 €5.80 €4.20 tote_tricast: €5228.29 tote_trifecta: '' tote_win: €8.50 type: Hurdle winning_time_detail: 5m 44.90s (slow by 7.90s) RunnerTrainer14Days: properties: runs: anyOf: - type: string - type: 'null' title: Runs default: '' wins: anyOf: - type: string - type: 'null' title: Wins default: '' percent: anyOf: - type: string - type: 'null' title: Percent default: '' type: object title: RunnerTrainer14Days example: percent: '20' runs: '25' wins: '5' ResultsBasicPage: properties: results: anyOf: - items: $ref: '#/components/schemas/ResultBasic' type: array - type: 'null' title: Results total: type: integer title: Total limit: type: integer title: Limit skip: type: integer title: Skip query: items: items: {} type: array type: array title: Query type: object required: - results - total - limit - skip - query title: ResultsBasicPage RacecardSummary: properties: date: type: string title: Date region: type: string title: Region course_id: type: string title: Course Id course: type: string title: Course race_id: type: string title: Race Id race_name: type: string title: Race Name race_class: type: string title: Race Class off_time: type: string title: Off Time off_dt: anyOf: - type: string - type: 'null' title: Off Dt default: '' big_race: anyOf: - type: boolean - type: 'null' title: Big Race default: false is_abandoned: anyOf: - type: boolean - type: 'null' title: Is Abandoned default: false type: object required: - date - region - course_id - course - race_id - race_name - race_class - off_time title: RacecardSummary example: big_race: false course: Bahrain course_id: crs_22594 date: '2026-02-06' is_abandoned: false off_dt: '2026-02-06T14:00:00+00:00' off_time: '2:00' race_class: '' race_id: rac_11868129 race_name: Race 3 (Conditions Race) (Turf) region: BHR RunnerStableTour: properties: quote: anyOf: - type: string - type: 'null' title: Quote default: '' type: object title: RunnerStableTour example: quote: He's been working well at home and we're hopeful. RunnerQuote: properties: date: anyOf: - type: string - type: 'null' title: Date default: '' horse: anyOf: - type: string - type: 'null' title: Horse default: '' horse_id: anyOf: - type: string - type: 'null' title: Horse Id default: '' race: anyOf: - type: string - type: 'null' title: Race default: '' race_id: anyOf: - type: string - type: 'null' title: Race Id default: '' course: anyOf: - type: string - type: 'null' title: Course default: '' course_id: anyOf: - type: string - type: 'null' title: Course Id default: '' distance_f: anyOf: - type: string - type: 'null' title: Distance F default: '' distance_y: anyOf: - type: string - type: 'null' title: Distance Y default: '' quote: anyOf: - type: string - type: 'null' title: Quote default: '' type: object title: RunnerQuote example: course: Ascot course_id: crs_52 date: '2024-06-15' distance_f: 12f distance_y: '2640' horse: Frankel horse_id: hrs_5344171 quote: He ran a great race and showed his class. race: King George VI race_id: rac_12345678 app__models__racecards__RunnerOdds: properties: horse_id: type: string title: Horse Id horse: type: string title: Horse dob: anyOf: - type: string - type: 'null' title: Dob age: anyOf: - type: string - type: 'null' title: Age sex: anyOf: - type: string - type: 'null' title: Sex sex_code: anyOf: - type: string - type: 'null' title: Sex Code colour: anyOf: - type: string - type: 'null' title: Colour region: anyOf: - type: string - type: 'null' title: Region breeder: anyOf: - type: string - type: 'null' title: Breeder dam: type: string title: Dam dam_id: type: string title: Dam Id dam_region: anyOf: - type: string - type: 'null' title: Dam Region default: '' sire: type: string title: Sire sire_id: type: string title: Sire Id sire_region: anyOf: - type: string - type: 'null' title: Sire Region default: '' damsire: type: string title: Damsire damsire_id: type: string title: Damsire Id damsire_region: anyOf: - type: string - type: 'null' title: Damsire Region default: '' trainer: type: string title: Trainer trainer_id: type: string title: Trainer Id trainer_location: anyOf: - type: string - type: 'null' title: Trainer Location default: '' trainer_14_days: anyOf: - $ref: '#/components/schemas/RunnerTrainer14Days' - type: 'null' default: {} owner: type: string title: Owner owner_id: type: string title: Owner Id prev_trainers: anyOf: - items: $ref: '#/components/schemas/RunnerPrevTrainer' type: array - type: 'null' title: Prev Trainers default: [] prev_owners: anyOf: - items: $ref: '#/components/schemas/RunnerPrevOwner' type: array - type: 'null' title: Prev Owners default: [] comment: anyOf: - type: string - type: 'null' title: Comment default: '' spotlight: anyOf: - type: string - type: 'null' title: Spotlight default: '' quotes: anyOf: - items: $ref: '#/components/schemas/RunnerQuote' type: array - type: 'null' title: Quotes default: [] stable_tour: anyOf: - items: $ref: '#/components/schemas/RunnerStableTour' type: array - type: 'null' title: Stable Tour default: [] medical: anyOf: - items: $ref: '#/components/schemas/RunnerMedical' type: array - type: 'null' title: Medical default: [] number: type: string title: Number draw: type: string title: Draw headgear: anyOf: - type: string - type: 'null' title: Headgear default: '' headgear_run: anyOf: - type: string - type: 'null' title: Headgear Run default: '' wind_surgery: anyOf: - type: string - type: 'null' title: Wind Surgery default: '' wind_surgery_run: anyOf: - type: string - type: 'null' title: Wind Surgery Run default: '' past_results_flags: anyOf: - items: type: string type: array - type: 'null' title: Past Results Flags default: [] lbs: type: string title: Lbs ofr: type: string title: Ofr rpr: type: string title: Rpr ts: type: string title: Ts jockey: type: string title: Jockey jockey_id: type: string title: Jockey Id silk_url: anyOf: - type: string - type: 'null' title: Silk Url default: '' last_run: type: string title: Last Run form: anyOf: - type: string - type: 'null' title: Form trainer_rtf: anyOf: - type: string - type: 'null' title: Trainer Rtf odds: anyOf: - items: $ref: '#/components/schemas/OddsNoHistory' type: array - type: 'null' title: Odds default: [] type: object required: - horse_id - horse - dob - age - sex - sex_code - colour - region - breeder - dam - dam_id - sire - sire_id - damsire - damsire_id - trainer - trainer_id - owner - owner_id - number - draw - lbs - ofr - rpr - ts - jockey - jockey_id - last_run - form - trainer_rtf title: RunnerOdds example: age: '6' breeder: Tada Nobutaka colour: b comment: Very useful in his prime but seems to have lost his way this year dam: Lerici dam_id: dam_4823441 dam_region: USA damsire: Woodman damsire_id: dsi_2126229 damsire_region: USA dob: '2017-04-22' draw: '8' form: 3-7880 headgear: '' headgear_run: '' horse: Pistoletto horse_id: hrs_18092480 jockey: Adam Tracey(7) jockey_id: jky_301290 last_run: '25' lbs: '140' medical: [] number: '1' odds: - bookmaker: Bet365 decimal: '9' ew_denom: '5' ew_places: '3' fractional: '8' updated: '2023-05-02 12:36:43' - bookmaker: Paddy Power decimal: '8.5' ew_denom: '5' ew_places: '3' fractional: 15/2 updated: '2023-05-02 12:36:43' ofr: '75' owner: J A Thompson & S Russell owner_id: own_1227828 past_results_flags: [] prev_owners: - change_date: '2021-08-07' owner: G McGladery, J A Thompson & S Russell owner_id: own_1191676 prev_trainers: - change_date: '2020-09-26' trainer: A P O'Brien trainer_id: trn_71802 quotes: - course: Newmarket course_id: crs_988 date: '2019-10-11' distance_f: '5' distance_y: '1100' horse: Pistoletto horse_id: hrs_18092480 quote: He travelled nicely into the race - Kevin Buckley. race: Cornwallis Stakes (Group 3) race_id: rac_9618089 region: USA rpr: '82' sex: gelding sex_code: G silk_url: https://www.url-for-silk.com/svg/456789.svg sire: War Front sire_id: sir_4544750 sire_region: USA spotlight: Very useful in his prime but seems to have lost his way this year; sure to appreciate today's ease in grade. stable_tour: [] trainer: John Ryan trainer_14_days: percent: '0' runs: '5' wins: '0' trainer_id: trn_160758 trainer_location: Newmarket, Suffolk trainer_rtf: '' ts: '81' wind_surgery: '' wind_surgery_run: '' Racecard: properties: race_id: type: string title: Race Id course: type: string title: Course course_id: type: string title: Course Id date: type: string title: Date off_time: type: string title: Off Time off_dt: anyOf: - type: string - type: 'null' title: Off Dt default: '' race_name: type: string title: Race Name distance_round: type: string title: Distance Round distance: type: string title: Distance distance_f: type: string title: Distance F region: type: string title: Region pattern: type: string title: Pattern sex_restriction: anyOf: - type: string - type: 'null' title: Sex Restriction default: '' race_class: type: string title: Race Class type: type: string title: Type age_band: type: string title: Age Band rating_band: type: string title: Rating Band prize: type: string title: Prize field_size: type: string title: Field Size going_detailed: anyOf: - type: string - type: 'null' title: Going Detailed rail_movements: anyOf: - type: string - type: 'null' title: Rail Movements stalls: anyOf: - type: string - type: 'null' title: Stalls weather: anyOf: - type: string - type: 'null' title: Weather going: type: string title: Going surface: anyOf: - type: string - type: 'null' title: Surface runners: items: $ref: '#/components/schemas/app__models__racecards__Runner' type: array title: Runners big_race: anyOf: - type: boolean - type: 'null' title: Big Race default: false is_abandoned: anyOf: - type: boolean - type: 'null' title: Is Abandoned default: false race_status: anyOf: - type: string - type: 'null' title: Race Status default: '' type: object required: - race_id - course - course_id - date - off_time - race_name - distance_round - distance - distance_f - region - pattern - race_class - type - age_band - rating_band - prize - field_size - going_detailed - rail_movements - stalls - weather - going - surface - runners title: Racecard example: age_band: 4yo+ big_race: false course: Brighton course_id: crs_182 date: '2023-05-02' distance: 6f210y distance_f: '7.0' distance_round: 7f field_size: '9' going: Good To Firm going_detailed: '' is_abandoned: false off_dt: '2023-05-02T13:50:00+01:00' off_time: '1:50' pattern: '' prize: £4,606 race_class: Class 5 race_id: rac_10880272 race_name: At The Races App Form Study Apprentice Handicap race_status: '' rail_movements: '' rating_band: 0-75 region: GB runners: - age: '6' breeder: Tada Nobutaka colour: b dam: Lerici dam_id: dam_4823441 damsire: Woodman damsire_id: dsi_2126229 dob: '2017-04-22' draw: '8' form: 3-7880 headgear: '' horse: Pistoletto horse_id: hrs_18092480 jockey: Adam Tracey(7) jockey_id: jky_301290 last_run: '25' lbs: '140' number: '1' ofr: '75' owner: J A Thompson & S Russell owner_id: own_1227828 region: USA rpr: '82' sex: gelding sex_code: G sire: War Front sire_id: sir_4544750 trainer: John Ryan trainer_id: trn_160758 ts: '81' sex_restriction: '' stalls: '' surface: Turf type: Flat weather: '' RacecardBasic: properties: race_id: type: string title: Race Id course: type: string title: Course date: type: string title: Date off_time: type: string title: Off Time off_dt: anyOf: - type: string - type: 'null' title: Off Dt default: '' race_name: type: string title: Race Name distance_f: type: string title: Distance F region: type: string title: Region pattern: type: string title: Pattern race_class: type: string title: Race Class type: type: string title: Type age_band: type: string title: Age Band rating_band: type: string title: Rating Band sex_restriction: anyOf: - type: string - type: 'null' title: Sex Restriction default: '' prize: type: string title: Prize field_size: type: string title: Field Size going: type: string title: Going surface: anyOf: - type: string - type: 'null' title: Surface runners: items: $ref: '#/components/schemas/app__models__racecards__RunnerBasic' type: array title: Runners race_status: anyOf: - type: string - type: 'null' title: Race Status default: '' type: object required: - race_id - course - date - off_time - race_name - distance_f - region - pattern - race_class - type - age_band - rating_band - prize - field_size - going - surface - runners title: RacecardBasic example: age_band: 4yo+ course: Brighton date: '2023-05-02' distance_f: '7.0' field_size: '9' going: Good To Firm off_dt: '2023-05-02T13:50:00+01:00' off_time: '1:50' pattern: '' prize: £4,606 race_class: Class 5 race_id: rac_10880272 race_name: At The Races App Form Study Apprentice Handicap race_status: '' rating_band: 0-75 region: GB runners: - age: '6' colour: b dam: Lerici dam_id: dam_4823441 damsire: Woodman damsire_id: dsi_2126229 draw: '8' form: 3-7880 headgear: '' horse: Pistoletto horse_id: hrs_18092480 jockey: Adam Tracey(7) jockey_id: jky_301290 last_run: '25' lbs: '140' number: '1' ofr: '75' owner: J A Thompson & S Russell owner_id: own_1227828 region: USA sex: gelding sex_code: G sire: War Front sire_id: sir_4544750 trainer: John Ryan trainer_id: trn_160758 sex_restriction: '' surface: Turf type: Flat RacecardOdds: properties: race_id: type: string title: Race Id course: type: string title: Course course_id: type: string title: Course Id date: type: string title: Date off_time: type: string title: Off Time off_dt: anyOf: - type: string - type: 'null' title: Off Dt default: '' race_name: type: string title: Race Name distance_round: type: string title: Distance Round distance: type: string title: Distance distance_f: type: string title: Distance F region: type: string title: Region pattern: type: string title: Pattern sex_restriction: anyOf: - type: string - type: 'null' title: Sex Restriction default: '' race_class: type: string title: Race Class type: type: string title: Type age_band: type: string title: Age Band rating_band: type: string title: Rating Band prize: type: string title: Prize field_size: type: string title: Field Size going_detailed: anyOf: - type: string - type: 'null' title: Going Detailed rail_movements: anyOf: - type: string - type: 'null' title: Rail Movements stalls: anyOf: - type: string - type: 'null' title: Stalls weather: anyOf: - type: string - type: 'null' title: Weather going: type: string title: Going surface: anyOf: - type: string - type: 'null' title: Surface jumps: anyOf: - type: string - type: 'null' title: Jumps default: '' runners: items: $ref: '#/components/schemas/app__models__racecards__RunnerOdds' type: array title: Runners big_race: anyOf: - type: boolean - type: 'null' title: Big Race default: false is_abandoned: anyOf: - type: boolean - type: 'null' title: Is Abandoned default: false tip: anyOf: - type: string - type: 'null' title: Tip default: '' verdict: anyOf: - type: string - type: 'null' title: Verdict default: '' betting_forecast: anyOf: - type: string - type: 'null' title: Betting Forecast default: '' race_status: anyOf: - type: string - type: 'null' title: Race Status default: '' type: object required: - race_id - course - course_id - date - off_time - race_name - distance_round - distance - distance_f - region - pattern - race_class - type - age_band - rating_band - prize - field_size - going_detailed - rail_movements - stalls - weather - going - surface - runners title: RacecardOdds example: age_band: 4yo+ betting_forecast: 3/1 Snowthorn, 4/1 King Alloy, 6/1 I P O Bros, 10/1 Team Happy big_race: false course: Brighton course_id: crs_182 date: '2023-05-02' distance: 6f210y distance_f: '7.0' distance_round: 7f field_size: '9' going: Good To Firm going_detailed: '' is_abandoned: false jumps: '' off_dt: '2023-05-02T13:50:00+01:00' off_time: '1:50' pattern: '' prize: £4,606 race_class: Class 5 race_id: rac_10880272 race_name: At The Races App Form Study Apprentice Handicap race_status: '' rail_movements: '' rating_band: 0-75 region: GB runners: - age: '6' breeder: Tada Nobutaka colour: b comment: Very useful in his prime but seems to have lost his way this year dam: Lerici dam_id: dam_4823441 dam_region: USA damsire: Woodman damsire_id: dsi_2126229 damsire_region: USA dob: '2017-04-22' draw: '8' form: 3-7880 headgear: '' headgear_run: '' horse: Pistoletto horse_id: hrs_18092480 jockey: Adam Tracey(7) jockey_id: jky_301290 last_run: '25' lbs: '140' medical: [] number: '1' odds: - bookmaker: Bet365 decimal: '9' ew_denom: '5' ew_places: '3' fractional: '8' updated: '2023-05-02 12:36:43' - bookmaker: Paddy Power decimal: '8.5' ew_denom: '5' ew_places: '3' fractional: 15/2 updated: '2023-05-02 12:36:43' ofr: '75' owner: J A Thompson & S Russell owner_id: own_1227828 past_results_flags: [] prev_owners: - change_date: '2021-08-07' owner: G McGladery, J A Thompson & S Russell owner_id: own_1191676 prev_trainers: - change_date: '2020-09-26' trainer: A P O'Brien trainer_id: trn_71802 quotes: - course: Newmarket course_id: crs_988 date: '2019-10-11' distance_f: '5' distance_y: '1100' horse: Pistoletto horse_id: hrs_18092480 quote: He travelled nicely into the race - Kevin Buckley. race: Cornwallis Stakes (Group 3) race_id: rac_9618089 region: USA rpr: '82' sex: gelding sex_code: G silk_url: https://www.url-for-silk.com/svg/456789.svg sire: War Front sire_id: sir_4544750 sire_region: USA spotlight: Very useful in his prime but seems to have lost his way this year; sure to appreciate today's ease in grade. stable_tour: [] trainer: John Ryan trainer_14_days: percent: '0' runs: '5' wins: '0' trainer_id: trn_160758 trainer_location: Newmarket, Suffolk trainer_rtf: '' ts: '81' wind_surgery: '' wind_surgery_run: '' sex_restriction: '' stalls: '' surface: Turf tip: Team Happy type: Flat verdict: Many of these arrive with something to prove but TEAM HAPPY has shown signs of a revival lately and might exploit a good mark. weather: '' RunnerMedical: properties: date: anyOf: - type: string - type: 'null' title: Date default: '' type: anyOf: - type: string - type: 'null' title: Type default: '' type: object title: RunnerMedical example: date: '2024-06-15' type: Wind surgery RunnerPrevOwner: properties: owner: anyOf: - type: string - type: 'null' title: Owner default: '' owner_id: anyOf: - type: string - type: 'null' title: Owner Id default: '' change_date: anyOf: - type: string - type: 'null' title: Change Date default: '' type: object title: RunnerPrevOwner example: change_date: '2024-01-15' owner: Previous Racing Ltd owner_id: own_123456 RacecardOddsPro: properties: race_id: type: string title: Race Id course: type: string title: Course course_id: type: string title: Course Id date: type: string title: Date off_time: type: string title: Off Time off_dt: anyOf: - type: string - type: 'null' title: Off Dt default: '' race_name: type: string title: Race Name distance_round: type: string title: Distance Round distance: type: string title: Distance distance_f: type: string title: Distance F region: type: string title: Region pattern: type: string title: Pattern sex_restriction: anyOf: - type: string - type: 'null' title: Sex Restriction default: '' race_class: type: string title: Race Class type: type: string title: Type age_band: type: string title: Age Band rating_band: type: string title: Rating Band prize: type: string title: Prize field_size: type: string title: Field Size going_detailed: anyOf: - type: string - type: 'null' title: Going Detailed rail_movements: anyOf: - type: string - type: 'null' title: Rail Movements stalls: anyOf: - type: string - type: 'null' title: Stalls weather: anyOf: - type: string - type: 'null' title: Weather going: type: string title: Going surface: anyOf: - type: string - type: 'null' title: Surface jumps: anyOf: - type: string - type: 'null' title: Jumps default: '' runners: items: $ref: '#/components/schemas/RunnerOddsPro' type: array title: Runners big_race: anyOf: - type: boolean - type: 'null' title: Big Race default: false is_abandoned: anyOf: - type: boolean - type: 'null' title: Is Abandoned default: false tip: anyOf: - type: string - type: 'null' title: Tip default: '' verdict: anyOf: - type: string - type: 'null' title: Verdict default: '' betting_forecast: anyOf: - type: string - type: 'null' title: Betting Forecast default: '' race_status: anyOf: - type: string - type: 'null' title: Race Status default: '' type: object required: - race_id - course - course_id - date - off_time - race_name - distance_round - distance - distance_f - region - pattern - race_class - type - age_band - rating_band - prize - field_size - going_detailed - rail_movements - stalls - weather - going - surface - runners title: RacecardOddsPro example: age_band: 3yo+ betting_forecast: 6/4 Majestic Valour, 9/2 Sea Diamond, 6/1 Autumn Vibes, 7/1 Lucky Ranger big_race: false course: Sha Tin course_id: crs_10816 date: '2026-01-11' distance: 6f distance_f: '6.0' distance_round: 6f field_size: '12' going: Good going_detailed: 'TURF: GOOD TO FIRM' is_abandoned: false jumps: '' off_dt: '2026-01-11T05:00:00+00:00' off_time: '5:00' pattern: '' prize: £62,459 race_class: '' race_id: rac_11845223 race_name: Wu Kai Sha Handicap (Div I) (Class 4) (3yo+) (Course C+3) (Turf) race_status: '' rail_movements: '' rating_band: '' region: HK runners: - age: '9' breeder: Scea Haras De Saint Pair colour: b/br comment: Much better known as a miler but begins the new campaign on a very tempting mark dam: Trois Lunes dam_id: dam_5583571 dam_region: FR damsire: Manduro damsire_id: dsi_4247215 damsire_region: GER dob: '2014-02-27' draw: '9' form: 60500- headgear: '' headgear_run: '' horse: Trais Fluors horse_id: hrs_8192583 jockey: Rose Dawes(5) jockey_id: jky_301152 last_run: '192' lbs: '139' medical: [] number: '2' odds: - bookmaker: Bet365 decimal: '4.33' ew_denom: '5' ew_places: '3' fractional: 10/3 history: [] updated: '2023-05-02 12:36:43' - bookmaker: Betfair Exchange decimal: '4.5' ew_denom: '' ew_places: '' fractional: 7/2 history: [] updated: '2023-05-02 12:36:43' ofr: '74' owner: M Channon owner_id: own_31504 past_results_flags: [] prev_owners: - change_date: '2021-09-06' owner: Lee Harris owner_id: own_1182044 - change_date: '2021-03-22' owner: Robert Ng owner_id: own_466920 prev_trainers: - change_date: '2023-03-24' trainer: Mick Channon trainer_id: trn_42084 - change_date: '2021-03-22' trainer: K J Condon trainer_id: trn_137160 - change_date: '2019-10-23' trainer: A Fabre trainer_id: trn_9837 quotes: - course: Sandown course_id: crs_1404 date: '2021-06-12' distance_f: '8' distance_y: '1760' horse: Trais Fluors horse_id: hrs_8192583 quote: He was suited by the better ground here, which was key - Silvestre de Sousa, rider. race: Play Coral Racing-Super-Series For Free Handicap race_id: rac_10204649 region: GB rpr: '85' sex: gelding sex_code: G silk_url: https://www.url-for-silk.com/svg/456789.svg sire: Dansili sire_id: sir_3527125 sire_region: GB spotlight: Steadily regressive 9yo who is much better known as a miler and ended last season with two down-the-field runs; begins the new campaign on a tempting mark, though, and can't be ruled out. stable_tour: [] trainer: Jack Channon trainer_14_days: percent: '31' runs: '16' wins: '5' trainer_id: trn_361449 trainer_location: West Ilsley, Berks trainer_rtf: '71' ts: '83' wind_surgery: '' wind_surgery_run: '' sex_restriction: '' stalls: '' surface: Turf tip: Majestic Valour type: Flat verdict: This looks a good opportunity for promising 4yo MAJESTIC VALOUR to get back to winning ways. weather: '' RacecardsBasicPage: properties: racecards: items: $ref: '#/components/schemas/RacecardBasic' type: array title: Racecards total: type: integer title: Total limit: type: integer title: Limit skip: type: integer title: Skip query: items: items: {} type: array type: array title: Query type: object required: - racecards - total - limit - skip - query title: RacecardsBasicPage RacecardsPage: properties: racecards: items: $ref: '#/components/schemas/Racecard' type: array title: Racecards total: type: integer title: Total limit: type: integer title: Limit skip: type: integer title: Skip query: items: items: {} type: array type: array title: Query type: object required: - racecards - total - limit - skip - query title: RacecardsPage app__models__racecards__RunnerBasic: properties: horse: type: string title: Horse horse_id: type: string title: Horse Id age: type: string title: Age sex: anyOf: - type: string - type: 'null' title: Sex sex_code: anyOf: - type: string - type: 'null' title: Sex Code colour: anyOf: - type: string - type: 'null' title: Colour region: type: string title: Region dam: type: string title: Dam dam_id: type: string title: Dam Id sire: type: string title: Sire sire_id: type: string title: Sire Id damsire: type: string title: Damsire damsire_id: type: string title: Damsire Id trainer: type: string title: Trainer trainer_id: type: string title: Trainer Id owner: type: string title: Owner owner_id: type: string title: Owner Id number: type: string title: Number draw: type: string title: Draw headgear: anyOf: - type: string - type: 'null' title: Headgear lbs: type: string title: Lbs ofr: type: string title: Ofr jockey: type: string title: Jockey jockey_id: type: string title: Jockey Id last_run: type: string title: Last Run form: anyOf: - type: string - type: 'null' title: Form type: object required: - horse - horse_id - age - sex - sex_code - colour - region - dam - dam_id - sire - sire_id - damsire - damsire_id - trainer - trainer_id - owner - owner_id - number - draw - headgear - lbs - ofr - jockey - jockey_id - last_run - form title: RunnerBasic example: age: '6' colour: b dam: Lerici dam_id: dam_4823441 damsire: Woodman damsire_id: dsi_2126229 draw: '8' form: 3-7880 headgear: '' horse: Pistoletto horse_id: hrs_18092480 jockey: Adam Tracey(7) jockey_id: jky_301290 last_run: '25' lbs: '140' number: '1' ofr: '75' owner: J A Thompson & S Russell owner_id: own_1227828 region: USA sex: gelding sex_code: G sire: War Front sire_id: sir_4544750 trainer: John Ryan trainer_id: trn_160758 app__models__racecards__Runner: properties: horse_id: type: string title: Horse Id horse: type: string title: Horse dob: anyOf: - type: string - type: 'null' title: Dob age: anyOf: - type: string - type: 'null' title: Age sex: anyOf: - type: string - type: 'null' title: Sex sex_code: anyOf: - type: string - type: 'null' title: Sex Code colour: anyOf: - type: string - type: 'null' title: Colour region: anyOf: - type: string - type: 'null' title: Region breeder: anyOf: - type: string - type: 'null' title: Breeder dam: type: string title: Dam dam_id: type: string title: Dam Id dam_region: anyOf: - type: string - type: 'null' title: Dam Region default: '' sire: type: string title: Sire sire_id: type: string title: Sire Id sire_region: anyOf: - type: string - type: 'null' title: Sire Region default: '' damsire: type: string title: Damsire damsire_id: type: string title: Damsire Id damsire_region: anyOf: - type: string - type: 'null' title: Damsire Region default: '' trainer: type: string title: Trainer trainer_id: type: string title: Trainer Id trainer_location: anyOf: - type: string - type: 'null' title: Trainer Location default: '' trainer_14_days: anyOf: - $ref: '#/components/schemas/RunnerTrainer14Days' - type: 'null' default: {} owner: type: string title: Owner owner_id: type: string title: Owner Id prev_trainers: anyOf: - items: $ref: '#/components/schemas/RunnerPrevTrainer' type: array - type: 'null' title: Prev Trainers default: [] prev_owners: anyOf: - items: $ref: '#/components/schemas/RunnerPrevOwner' type: array - type: 'null' title: Prev Owners default: [] comment: anyOf: - type: string - type: 'null' title: Comment default: '' spotlight: anyOf: - type: string - type: 'null' title: Spotlight default: '' quotes: anyOf: - items: $ref: '#/components/schemas/RunnerQuote' type: array - type: 'null' title: Quotes default: [] stable_tour: anyOf: - items: $ref: '#/components/schemas/RunnerStableTour' type: array - type: 'null' title: Stable Tour default: [] medical: anyOf: - items: $ref: '#/components/schemas/RunnerMedical' type: array - type: 'null' title: Medical default: [] number: type: string title: Number draw: type: string title: Draw headgear: anyOf: - type: string - type: 'null' title: Headgear default: '' headgear_run: anyOf: - type: string - type: 'null' title: Headgear Run default: '' wind_surgery: anyOf: - type: string - type: 'null' title: Wind Surgery default: '' wind_surgery_run: anyOf: - type: string - type: 'null' title: Wind Surgery Run default: '' past_results_flags: anyOf: - items: type: string type: array - type: 'null' title: Past Results Flags default: [] lbs: type: string title: Lbs ofr: type: string title: Ofr rpr: type: string title: Rpr ts: type: string title: Ts jockey: type: string title: Jockey jockey_id: type: string title: Jockey Id silk_url: anyOf: - type: string - type: 'null' title: Silk Url default: '' last_run: type: string title: Last Run form: anyOf: - type: string - type: 'null' title: Form trainer_rtf: anyOf: - type: string - type: 'null' title: Trainer Rtf type: object required: - horse_id - horse - dob - age - sex - sex_code - colour - region - breeder - dam - dam_id - sire - sire_id - damsire - damsire_id - trainer - trainer_id - owner - owner_id - number - draw - lbs - ofr - rpr - ts - jockey - jockey_id - last_run - form - trainer_rtf title: Runner example: age: '6' breeder: Tada Nobutaka colour: b comment: Very useful in his prime but seems to have lost his way this year; has questions to answer dam: Lerici dam_id: dam_4823441 dam_region: USA damsire: Woodman damsire_id: dsi_2126229 damsire_region: USA dob: '2017-04-22' draw: '8' form: 3-7880 headgear: '' headgear_run: '' horse: Pistoletto horse_id: hrs_18092480 jockey: Adam Tracey(7) jockey_id: jky_301290 last_run: '25' lbs: '140' medical: [] number: '1' ofr: '75' owner: J A Thompson & S Russell owner_id: own_1227828 past_results_flags: [] prev_owners: - change_date: '2021-08-07' owner: G McGladery, J A Thompson & S Russell owner_id: own_1191676 - change_date: '2020-09-26' owner: Michael Tabor & Derrick Smith & Mrs John Magnier owner_id: own_575044 prev_trainers: - change_date: '2020-09-26' trainer: A P O'Brien trainer_id: trn_71802 quotes: - course: Newmarket course_id: crs_988 date: '2019-10-11' distance_f: '5' distance_y: '1100' horse: Pistoletto horse_id: hrs_18092480 quote: Ryan was very pleased and while Pistoletto just didn't seem to get his feet when he left the stalls, and was a bit more slowly away than some, he travelled nicely into the race - Kevin Buckley, Coomore representative. race: Newmarket Academy Godolphin Beacon Project Cornwallis Stakes (Group 3) race_id: rac_9618089 region: USA rpr: '82' sex: gelding sex_code: G silk_url: https://www.url-for-silk.com/svg/456789.svg sire: War Front sire_id: sir_4544750 sire_region: USA spotlight: Very useful in his prime but seems to have lost his way this year; sure to appreciate today's ease in grade after contesting two valuable races at Lingfield (1m2f/1m4f) but may need further than 7f nowadays and has some questions to answer. stable_tour: [] trainer: John Ryan trainer_14_days: percent: '0' runs: '5' wins: '0' trainer_id: trn_160758 trainer_location: Newmarket, Suffolk trainer_rtf: '' ts: '81' wind_surgery: '' wind_surgery_run: '' HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError RunnerPrevTrainer: properties: trainer: anyOf: - type: string - type: 'null' title: Trainer default: '' trainer_id: anyOf: - type: string - type: 'null' title: Trainer Id default: '' change_date: anyOf: - type: string - type: 'null' title: Change Date default: '' type: object title: RunnerPrevTrainer example: change_date: '2024-03-01' trainer: John Smith trainer_id: trn_123456 RacecardsOddsProPage: properties: racecards: items: $ref: '#/components/schemas/RacecardOddsPro' type: array title: Racecards total: type: integer title: Total limit: type: integer title: Limit skip: type: integer title: Skip query: items: items: {} type: array type: array title: Query type: object required: - racecards - total - limit - skip - query title: RacecardsOddsProPage OddsHistory: properties: bookmaker: type: string title: Bookmaker fractional: type: string title: Fractional decimal: type: string title: Decimal ew_places: type: string title: Ew Places ew_denom: type: string title: Ew Denom updated: type: string title: Updated history: anyOf: - items: {} type: array - type: 'null' title: History default: [] type: object required: - bookmaker - fractional - decimal - ew_places - ew_denom - updated title: OddsHistory example: bookmaker: Bet365 decimal: '6.0' ew_denom: '5' ew_places: '3' fractional: 5/1 history: - changed_at: '2026-02-06T12:00:00+00:00' decimal: '7.0' fractional: 6/1 updated: '2026-02-06 13:30:00' OddsNoHistory: properties: bookmaker: type: string title: Bookmaker fractional: type: string title: Fractional decimal: type: string title: Decimal ew_places: type: string title: Ew Places ew_denom: type: string title: Ew Denom updated: type: string title: Updated type: object required: - bookmaker - fractional - decimal - ew_places - ew_denom - updated title: OddsNoHistory example: bookmaker: Bet365 decimal: '6.0' ew_denom: '5' ew_places: '3' fractional: 5/1 updated: '2026-02-06 13:30:00' RacecardsSummary: properties: racecard_summaries: items: $ref: '#/components/schemas/RacecardSummary' type: array title: Racecard Summaries query: items: items: {} type: array type: array title: Query type: object required: - racecard_summaries - query title: RacecardsSummary example: query: - - date - '2026-02-06' racecard_summaries: - big_race: false course: Bahrain course_id: crs_22594 date: '2026-02-06' is_abandoned: false off_dt: '2026-02-06T14:00:00+00:00' off_time: '2:00' race_class: '' race_id: rac_11868129 race_name: Race 3 (Conditions Race) (Turf) region: BHR - big_race: false course: Bangor-on-Dee course_id: crs_104 date: '2026-02-06' is_abandoned: true off_dt: '2026-02-06T13:25:00+00:00' off_time: '1:25' race_class: Class 4 race_id: rac_62443901 race_name: Alfa Aggregates Products Mares' Handicap Chase region: GB app__models__result__RunnerBasic: properties: horse_id: type: string title: Horse Id horse: type: string title: Horse sp: type: string title: Sp sp_dec: type: string title: Sp Dec number: type: string title: Number position: type: string title: Position draw: type: string title: Draw btn: type: string title: Btn ovr_btn: type: string title: Ovr Btn age: type: string title: Age sex: type: string title: Sex weight: type: string title: Weight weight_lbs: type: string title: Weight Lbs headgear: type: string title: Headgear time: type: string title: Time or: type: string title: Or rpr: type: string title: Rpr tsr: type: string title: Tsr prize: type: string title: Prize jockey: type: string title: Jockey jockey_claim_lbs: anyOf: - type: string - type: 'null' title: Jockey Claim Lbs default: '0' jockey_id: type: string title: Jockey Id trainer: type: string title: Trainer trainer_id: type: string title: Trainer Id owner: type: string title: Owner owner_id: type: string title: Owner Id sire: type: string title: Sire sire_id: type: string title: Sire Id dam: type: string title: Dam dam_id: type: string title: Dam Id damsire: type: string title: Damsire damsire_id: type: string title: Damsire Id comment: type: string title: Comment silk_url: anyOf: - type: string - type: 'null' title: Silk Url default: '' type: object required: - horse_id - horse - sp - sp_dec - number - position - draw - btn - ovr_btn - age - sex - weight - weight_lbs - headgear - time - or - rpr - tsr - prize - jockey - jockey_id - trainer - trainer_id - owner - owner_id - sire - sire_id - dam - dam_id - damsire - damsire_id - comment title: RunnerBasic example: age: '8' btn: '0' comment: Held up in rear - headway 3 out - went third after 2 out - challenging when not fluent last - led home turn - ridden clear final furlong(op 13/2) dam: Save Me The Waltz (FR) dam_id: dam_4189605 damsire: Halling damsire_id: dsi_675241 draw: '' headgear: v horse: Mephisto (IRE) horse_id: hrs_19359270 jockey: Shane Fitzgerald jockey_claim_lbs: '0' jockey_id: jky_302916 number: '2' or: '98' ovr_btn: '0' owner: Restricted Movement Syndicate owner_id: own_1204876 position: '1' prize: €5900 rpr: '105' sex: G silk_url: https://www.url-for-silk.com/svg/456789.svg sire: Kendargent (FR) sire_id: sir_4514419 sp: 15/2 sp_dec: '8.50' time: '5:44.90' trainer: Gerard Keane trainer_id: trn_86382 tsr: '64' weight: 11-12 weight_lbs: '166' RunnerOddsPro: properties: horse_id: type: string title: Horse Id horse: type: string title: Horse dob: anyOf: - type: string - type: 'null' title: Dob age: anyOf: - type: string - type: 'null' title: Age sex: anyOf: - type: string - type: 'null' title: Sex sex_code: anyOf: - type: string - type: 'null' title: Sex Code colour: anyOf: - type: string - type: 'null' title: Colour region: anyOf: - type: string - type: 'null' title: Region breeder: anyOf: - type: string - type: 'null' title: Breeder dam: type: string title: Dam dam_id: type: string title: Dam Id dam_region: anyOf: - type: string - type: 'null' title: Dam Region default: '' sire: type: string title: Sire sire_id: type: string title: Sire Id sire_region: anyOf: - type: string - type: 'null' title: Sire Region default: '' damsire: type: string title: Damsire damsire_id: type: string title: Damsire Id damsire_region: anyOf: - type: string - type: 'null' title: Damsire Region default: '' trainer: type: string title: Trainer trainer_id: type: string title: Trainer Id trainer_location: anyOf: - type: string - type: 'null' title: Trainer Location default: '' trainer_14_days: anyOf: - $ref: '#/components/schemas/RunnerTrainer14Days' - type: 'null' default: {} owner: type: string title: Owner owner_id: type: string title: Owner Id prev_trainers: anyOf: - items: $ref: '#/components/schemas/RunnerPrevTrainer' type: array - type: 'null' title: Prev Trainers default: [] prev_owners: anyOf: - items: $ref: '#/components/schemas/RunnerPrevOwner' type: array - type: 'null' title: Prev Owners default: [] comment: anyOf: - type: string - type: 'null' title: Comment default: '' spotlight: anyOf: - type: string - type: 'null' title: Spotlight default: '' quotes: anyOf: - items: $ref: '#/components/schemas/RunnerQuote' type: array - type: 'null' title: Quotes default: [] stable_tour: anyOf: - items: $ref: '#/components/schemas/RunnerStableTour' type: array - type: 'null' title: Stable Tour default: [] medical: anyOf: - items: $ref: '#/components/schemas/RunnerMedical' type: array - type: 'null' title: Medical default: [] number: type: string title: Number draw: type: string title: Draw headgear: anyOf: - type: string - type: 'null' title: Headgear default: '' headgear_run: anyOf: - type: string - type: 'null' title: Headgear Run default: '' wind_surgery: anyOf: - type: string - type: 'null' title: Wind Surgery default: '' wind_surgery_run: anyOf: - type: string - type: 'null' title: Wind Surgery Run default: '' past_results_flags: anyOf: - items: type: string type: array - type: 'null' title: Past Results Flags default: [] lbs: type: string title: Lbs ofr: type: string title: Ofr rpr: type: string title: Rpr ts: type: string title: Ts jockey: type: string title: Jockey jockey_id: type: string title: Jockey Id silk_url: anyOf: - type: string - type: 'null' title: Silk Url default: '' last_run: type: string title: Last Run form: anyOf: - type: string - type: 'null' title: Form trainer_rtf: anyOf: - type: string - type: 'null' title: Trainer Rtf odds: anyOf: - items: $ref: '#/components/schemas/OddsHistory' type: array - type: 'null' title: Odds default: [] type: object required: - horse_id - horse - dob - age - sex - sex_code - colour - region - breeder - dam - dam_id - sire - sire_id - damsire - damsire_id - trainer - trainer_id - owner - owner_id - number - draw - lbs - ofr - rpr - ts - jockey - jockey_id - last_run - form - trainer_rtf title: RunnerOddsPro example: age: '9' breeder: Scea Haras De Saint Pair colour: b/br comment: Much better known as a miler but begins the new campaign on a very tempting mark dam: Trois Lunes dam_id: dam_5583571 dam_region: FR damsire: Manduro damsire_id: dsi_4247215 damsire_region: GER dob: '2014-02-27' draw: '9' form: 60500- headgear: '' headgear_run: '' horse: Trais Fluors horse_id: hrs_8192583 jockey: Rose Dawes(5) jockey_id: jky_301152 last_run: '192' lbs: '139' medical: [] number: '2' odds: - bookmaker: Bet365 decimal: '4.33' ew_denom: '5' ew_places: '3' fractional: 10/3 history: [] updated: '2023-05-02 12:36:43' - bookmaker: Betfair Exchange decimal: '4.5' ew_denom: '' ew_places: '' fractional: 7/2 history: [] updated: '2023-05-02 12:36:43' ofr: '74' owner: M Channon owner_id: own_31504 past_results_flags: [] prev_owners: - change_date: '2021-09-06' owner: Lee Harris owner_id: own_1182044 - change_date: '2021-03-22' owner: Robert Ng owner_id: own_466920 prev_trainers: - change_date: '2023-03-24' trainer: Mick Channon trainer_id: trn_42084 - change_date: '2021-03-22' trainer: K J Condon trainer_id: trn_137160 - change_date: '2019-10-23' trainer: A Fabre trainer_id: trn_9837 quotes: - course: Sandown course_id: crs_1404 date: '2021-06-12' distance_f: '8' distance_y: '1760' horse: Trais Fluors horse_id: hrs_8192583 quote: He was suited by the better ground here, which was key - Silvestre de Sousa, rider. race: Play Coral Racing-Super-Series For Free Handicap race_id: rac_10204649 region: GB rpr: '85' sex: gelding sex_code: G silk_url: https://www.url-for-silk.com/svg/456789.svg sire: Dansili sire_id: sir_3527125 sire_region: GB spotlight: Steadily regressive 9yo who is much better known as a miler and ended last season with two down-the-field runs; begins the new campaign on a tempting mark, though, and can't be ruled out. stable_tour: [] trainer: Jack Channon trainer_14_days: percent: '31' runs: '16' wins: '5' trainer_id: trn_361449 trainer_location: West Ilsley, Berks trainer_rtf: '71' ts: '83' wind_surgery: '' wind_surgery_run: '' RacecardsOddsPage: properties: racecards: items: $ref: '#/components/schemas/RacecardOdds' type: array title: Racecards total: type: integer title: Total limit: type: integer title: Limit skip: type: integer title: Skip query: items: items: {} type: array type: array title: Query type: object required: - racecards - total - limit - skip - query title: RacecardsOddsPage securitySchemes: HTTPBasic: type: http scheme: basic x-tagGroups: - name: Get Started tags: - Introduction - Authentication - Endpoint Overview - Rate Limits - Changelog - name: Core API tags: - Courses - Dams - Damsires - Horses - Jockeys - Odds - Owners - Racecards - Results - Sires - Trainers - name: Core API (by plan level) tags: - Free Plan - Basic Plan - Standard Plan - Pro Plan - name: Regional APIs tags: - Australia - North America