FormFav LogoFormFav
    GET
    /v1/predictions
    Pro

    Predictions

    Beta

    Machine-learning-generated win and place probabilities for every runner in a race. An independent, quantitative view of each runner's chances based on form, class, pace, connections, and dozens of other factors.

    What This Is (and Isn't)

    This is not tips. It's a quantitative probability model. A runner with a 28% win probability in a 12-horse field is being rated well above the ~8% base rate, but that still means they lose roughly 7 times out of 10.

    The value is in comparing these probabilities across the field and against market odds — not in treating the top-ranked runner as a guaranteed winner. The winProb values across all runners in a race sum to approximately 1.0 — they're probabilities, not arbitrary scores. While predictions are in beta their calibration is still being tuned, and the percentages can be flatter than they should be.

    Parameters

    datestring
    required
    Race date in YYYY-MM-DD format. Accepts dates within the last 30 days up to 7 days ahead. Requests outside this window return a 400.
    trackstring
    required
    Track slug identifier. Supports flexible venue name input.
    raceinteger
    required
    Race number (1-20).
    race_codestring
    optional
    Default: gallops
    Race type: gallops, harness, or greyhounds.
    countrystring
    optional
    Default: au
    Two-letter country code, e.g. au, nz, hk, gb, us, and more.

    Code Examples

    javascript
    const response = await fetch(
      'https://api.formfav.com/v1/predictions?' +
      new URLSearchParams({
        date: '2026-01-24',
        track: 'randwick',
        race: '8'
      }),
      {
        headers: { 'X-API-Key': 'your_api_key_here' }
      }
    );
    
    const data = await response.json();
    
    // Find value: compare model probability to implied market odds
    data.predictions.forEach(p => {
      console.log(`${p.name}: ${(p.winProb * 100).toFixed(1)}% win`);
    });

    Response Fields

    datestring
    Race date
    trackstring
    Track name
    raceNumberinteger
    Race number
    modelVersionstring
    Version of the model that generated these predictions
    confidencestring
    How confident the model is in this race: high, medium, or low
    predictionsarray
    One entry per non-scratched runner, sorted by win probability (best first)
    predictions[].numberinteger
    Runner/barrier number
    predictions[].namestring
    Runner name
    predictions[].winProbfloat (0-1)
    Predicted probability of winning
    predictions[].placeProbfloat (0-1)
    Predicted probability of placing, over the places the race pays: top 3 with 8 or more runners, top 2 with 5–7, and win only with 4 or fewer. Across a race, placeProb sums to the number of places paid.
    predictions[].modelRankinteger
    Rank by win probability (1 = model's top pick)

    Confidence Levels

    The race-level confidence field indicates how decisive the model's assessment is:

    LevelWhat It Means
    highClear separation between runners — the model has a strong view on this race
    mediumReasonable separation — the model can differentiate but there's uncertainty
    lowTight, competitive field — probabilities are bunched and hard to separate

    A low confidence race isn't a bad prediction — it's an honest signal that the race is genuinely open.

    What the Model Considers

    Inputs

    • •Recent form and consistency
    • •Track and distance record
    • •Class level and race fit
    • •Running style and predicted race pace
    • •Barrier position
    • •Jockey and trainer performance
    • •Weight carried
    • •Condition and surface suitability
    • •Fitness indicators

    Deliberately Excluded

    • •Live market odds — excluded to produce a fully independent view
    • •Private information — only publicly available data is used
    • •Post-generation changes — late scratchings, barrier changes, or track condition downgrades after predictions are generated are not factored in

    Coverage

    • •Thoroughbred, harness and greyhound racing
    • •Predictions require sufficient historical data — debut runners or those with very limited form may have reduced signal
    • •Predictions are generated after form data is loaded and are typically available before race day

    Example Response

    200
    Response
    json
    {
      "date": "2026-01-24",
      "track": "Randwick",
      "raceNumber": 8,
      "modelVersion": "v2.1.0",
      "confidence": "medium",
      "predictions": [
        {
          "number": 4,
          "name": "Star Runner",
          "winProb": 0.2834,
          "placeProb": 0.7215,
          "modelRank": 1
        },
        {
          "number": 7,
          "name": "Fast Track",
          "winProb": 0.1923,
          "placeProb": 0.5841,
          "modelRank": 2
        },
        {
          "number": 1,
          "name": "Lucky Strike",
          "winProb": 0.1247,
          "placeProb": 0.4103,
          "modelRank": 3
        }
      ]
    }