The Racing API Pro Plan API

The Pro Plan API from The Racing API — 46 operation(s) for pro plan.

Operations 1

GET /v1/racecards/{race_id}/pro The Racing API Race Pro #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/the-racing-api-pro-plan-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

the-racing-api-pro-plan-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Racing Pro 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: Pro Plan
paths:
  /v1/racecards/{race_id}/pro:
    get:
      tags:
      - Pro Plan
      summary: The Racing API Race Pro
      description: <h4>Get a race, including runner odds for UK & Ireland races only.</h4><table><tbody><tr><td><b>Min. Required Plan</b></td><td>Pro</td></tr><tr><td><b>Rate Limit</b></td><td>5 requests per second</td></tr></tbody></table>
      operationId: race_pro_v1_racecards__race_id__pro_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/RacecardOddsPro'
        '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}/pro

          '
        label: cURL
      - lang: Python
        source: 'import requests

          from requests.auth import HTTPBasicAuth


          url = "https://api.theracingapi.com/v1/racecards/{race_id}/pro"

          params = {}

          response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params)

          print(response.json())'
        label: Python3
      - lang: PHP
        source: "<?php\n$username = 'USERNAME';\n$password = 'PASSWORD';\n$url = \"https://api.theracingapi.com/v1/racecards/{race_id}/pro\";\n\n$params = http_build_query([ ]);\n\n$ch = curl_init(\"$url?$params\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);\ncurl_setopt($ch, CURLOPT_USERPWD, \"$username:$password\");\n\n$response = curl_exec($ch);\n\nif (curl_errno($ch)) {\n  echo 'Error:' . curl_error($ch);\n} else {\n  echo $response;\n}\n\ncurl_close($ch);\n?>"
        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}/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/{race_id}/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<String, String> 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}/pro\"))\n    .header(\"Authorization\", \"Basic \" + credentials)\n    .build();\n\nHttpResponse<String> 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}/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/{race_id}/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
components:
  schemas:
    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
    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: ''
    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: ''
    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
    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
    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
    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'
    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'
    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.
    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
  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