openapi: 3.1.0 info: title: The Racing Australia Basic Plan 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: Basic Plan paths: /v1/courses/regions: get: tags: - Basic Plan summary: The Racing API Regions description:

Get a list of regions, with region codes.

Min. Required PlanFree
Rate Limit1 requests per second
operationId: regions_v1_courses_regions_get responses: '200': description: Successful Response content: application/json: schema: items: $ref: '#/components/schemas/Region' type: array title: Response Regions V1 Courses Regions Get '404': description: Not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBasic: [] x-codeSamples: - lang: Shell source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/courses/regions ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/courses/regions" 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/courses/regions?${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/courses/regions'') 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/courses/regions\"))\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/courses/regions?\" + 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/courses/regions?{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/courses: get: tags: - Basic Plan summary: The Racing API Courses description:

Get a list of courses, with course ids and regions.

Min. Required PlanFree
Rate Limit1 requests per second
operationId: courses_v1_courses_get security: - HTTPBasic: [] parameters: - name: region_codes in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' title: Regions description: Filter courses by region codes. Get the full list here. examples: - gb - ire description: Filter courses by region codes. Get the full list here. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CoursesPage' '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/courses ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/courses" 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/courses?${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/courses'') 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/courses\"))\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/courses?\" + 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/courses?{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/horses/{horse_id}/analysis/distance-times: get: tags: - Basic Plan summary: The Racing API Horse Distance Time Analysis description:

Get horse statistics by race distance, with breakdowns of times.

Min. Required PlanBasic
Rate Limit5 requests per second
operationId: horse_distance_time_analysis_v1_horses__horse_id__analysis_distance_times_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

' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/HorseDistanceTimeAnalysis' '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/horses/{horse_id}/analysis/distance-times ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/horses/{horse_id}/analysis/distance-times" 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/horses/{horse_id}/analysis/distance-times?${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/horses/{horse_id}/analysis/distance-times'') 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/horses/{horse_id}/analysis/distance-times\"))\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/horses/{horse_id}/analysis/distance-times?\" + 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/horses/{horse_id}/analysis/distance-times?{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: - Basic Plan 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/summaries: get: tags: - Basic Plan 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: - Basic Plan 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/results/today: get: tags: - Basic Plan summary: The Racing API Results Today description:

Get today's results

Min. Required PlanBasic
Rate Limit5 requests per second
operationId: results_today_v1_results_today_get security: - HTTPBasic: [] parameters: - name: region in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description:

Query results by region codes. Get the full list here.

title: Region description:

Query results by region codes. Get the full list here.

- 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/results/today ' label: cURL - lang: Python source: 'import requests from requests.auth import HTTPBasicAuth url = "https://api.theracingapi.com/v1/results/today" 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/results/today?${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/results/today'') 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/results/today\"))\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/results/today?\" + 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/results/today?{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 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: '' HorseDistanceTimeAnalysis: properties: id: type: string title: Id horse: type: string title: Horse 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 total_runs: type: integer title: Total Runs distances: items: $ref: '#/components/schemas/Distances' type: array title: Distances query: items: items: {} type: array type: array title: Query type: object required: - id - horse - sire - sire_id - dam - dam_id - damsire - damsire_id - total_runs - distances - query title: HorseDistanceTimeAnalysis example: dam: Green Vision (IRE) dam_id: dam_5639200 damsire: Green Desert damsire_id: dsi_2126159 distances: - 1_pl: -5.0 1st: 1 2nd: 2 3rd: 0 4th: 0 a/e: 0.5 dist: 6f dist_f: 6f dist_m: '1225' dist_y: '1340' runs: 11 times: - course: Chelmsford (AW) date: '2022-04-28' going: Standard position: '7' region: GB time: '1:11.94' win_%: 0.09 horse: Princess Shabnam (IRE) id: hrs_25481624 query: - - horse_id - hrs_25481624 sire: Gregorian (IRE) sire_id: sir_5494055 total_runs: 16 CoursesPage: properties: courses: items: $ref: '#/components/schemas/app__models__courses__Course' type: array title: Courses total: type: integer title: Total type: object required: - courses - total title: CoursesPage 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 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 Distances: properties: dist: type: string title: Distance dist_y: type: string title: Distance yards dist_m: type: string title: Distance metres dist_f: type: string title: Distance furlongs times: items: $ref: '#/components/schemas/TimesGoing' type: array title: Times runs: type: integer title: Runs 1st: type: integer title: 1st place finishes 2nd: type: integer title: 2nd place finishes 3rd: type: integer title: 3rd place finishes 4th: type: integer title: 4th place finishes a/e: type: number title: Actual/expected win_%: type: number title: Win percentage (decimal) 1_pl: type: number title: One unit p/l at SP type: object required: - dist - dist_y - dist_m - dist_f - times - runs - 1st - 2nd - 3rd - 4th - a/e - win_% - 1_pl title: Distances example: 1_pl: -5.0 1st: 1 2nd: 2 3rd: 0 4th: 0 a/e: 0.5 dist: 6f dist_f: 6f dist_m: '1225' dist_y: '1340' runs: 11 times: - course: Chelmsford (AW) date: '2022-04-28' going: Standard position: '7' region: GB time: '1:11.94' win_%: 0.09 Region: properties: region: type: string title: Region region_code: type: string title: Region Code type: object required: - region - region_code title: Region example: region: Great Britain region_code: gb 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 app__models__courses__Course: properties: id: type: string title: Id course: type: string title: Course region_code: type: string title: Region Code region: type: string title: Region type: object required: - id - course - region_code - region title: Course example: course: Ascot id: crs_52 region: Great Britain region_code: gb TimesGoing: properties: date: type: string title: Date region: type: string title: Region course: type: string title: Course time: type: string title: Time going: type: string title: Going position: type: string title: Position type: object required: - date - region - course - time - going - position title: TimesGoing example: course: Chelmsford (AW) date: '2022-04-28' going: Standard position: '7' region: GB time: '1:11.94' 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' 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