Skip to content

SPORTS

MLBNFLNBAWNBANHLTennisSoccerGolfUFC

PLATFORM

Historical CoverageLive NetworkSports NetworkDevelopersAPI ReferenceDocsPricingEnterprise

NEW API PRODUCTS

Formula 1 APIAustralian NBL APIEuroLeague APIAPI explorerYour API account

ACCOUNT

Manage subscription Get API Key →

NEW API PRODUCT

PropSports Formula 1 API

Formula 1 championship history since 1950 — seasons, circuits, drivers, constructors, Grand Prix weekends, sessions, classified results and standings — with PropBetEdge Driver, Constructor and Circuit DNA, Circuit Fit and driver Matchups.

Test-mode acceptance — not yet on sale

Data routes19
Base path/v1/f1
AuthX-API-Key
Contractf1-commercial-1.0.0
OpenAPIopenapi.json

01 Release status

Test-mode acceptance — not yet on sale

The Formula 1 API is in test-mode acceptance. Test-mode keys call every route on the production gateway while we verify the contract; the product is not on sale, no checkout sells it, and existing PropSports plans do not include it yet. Availability and pricing will be published here before launch.

Formula 1 is a separate PropSports product: it is not part of the core-sport catalog or its route counts. Keyless discovery (openapi.json) works today.

02 Overview

What the Formula 1 API delivers.

Formula 1 seasons since 1950, circuits, drivers, constructors, events, sessions, classified results, standings, and PropBetEdge Driver/Constructor/Circuit DNA, Circuit Fit and driver Matchups. Route availability depends on plan: core (all plans), DNA (All Sports and above), Fit and Matchups (Pro and above).

Motorsport media and data desks

Results, standings and career aggregates for race-weekend coverage and the record book behind it.

Fantasy and prediction-game builders

Session classifications, standings progression and driver profiles on one key.

Analysts and researchers

Driver and constructor performance across eras, circuit characteristics and head-to-head battles.

App developers

Season calendars, sessions and results in one structured contract with stable slugs.

03 Historical coverage

What is stored, and where it stops.

Exact spans, including known gaps.

  • SEASONSEvery Formula 1 championship season since 1950, with round counts (GET /v1/f1/seasons).
  • WEEKENDS AND SESSIONSGrand Prix events with their sessions (practice, sprint, qualifying, race) and classified results.
  • STANDINGSDrivers’ and constructors’ championship tables, optionally with round-by-round progression.

04 Analytics

PropBetEdge intelligence on the same key.

Model output lives in its own routes, apart from observed facts. DNA routes need the All Sports class or above; Circuit Fit and Matchups need the Pro class or above.

Driver DNA

Percentile profile of qualifying, racecraft, consistency and teammate battles.

/v1/f1/dna/driver/{id} All Sports class and above

Circuit Fit

How each driver profile suits an upcoming event.

/v1/f1/fit/{event} Pro class and above

Matchups

Head-to-head between two drivers: qualifying and race battles, recent meetings.

/v1/f1/matchups/{a}/{b} Pro class and above

05 Route catalog

19 data routes, plus discovery and account.

Generated from the published OpenAPI 3.1 document. Every route is GET on https://propsports.proptechusa.ai.

Discovery (keyless) 2

Core data 14

  • GET/v1/f1/seasonsEvery F1 plan

    Every championship season since 1950 with round counts.

    Try in the explorer
  • GET/v1/f1/circuitsEvery F1 plan

    Every circuit with location, layout and race history counts.

    Try in the explorer
  • GET/v1/f1/circuits/{id}Every F1 plan

    One circuit.

    Parameters for /v1/f1/circuits/{id}
    ParameterInRequiredDescription
    idpathYesCircuit id, ends in -circuit.
    Try in the explorer
  • GET/v1/f1/driversEvery F1 plan

    Drivers with career aggregates.

    Parameters for /v1/f1/drivers
    ParameterInRequiredDescription
    seasonqueryNoSeason year.
    activequeryNo1 = current grid only, 0 = all.
    Try in the explorer
  • GET/v1/f1/drivers/{id}Every F1 plan

    One driver with career aggregates.

    Parameters for /v1/f1/drivers/{id}
    ParameterInRequiredDescription
    idpathYesDriver slug, e.g. george-russell.
    Try in the explorer
  • GET/v1/f1/constructorsEvery F1 plan

    Constructors with history.

    Try in the explorer
  • GET/v1/f1/constructors/{id}Every F1 plan

    One constructor.

    Parameters for /v1/f1/constructors/{id}
    ParameterInRequiredDescription
    idpathYesConstructor slug.
    Try in the explorer
  • GET/v1/f1/eventsEvery F1 plan

    Grand Prix weekends of a season with their sessions.

    Parameters for /v1/f1/events
    ParameterInRequiredDescription
    seasonqueryNoSeason year.
    Try in the explorer
  • GET/v1/f1/events/{id}Every F1 plan

    One event with sessions and classified results.

    Parameters for /v1/f1/events/{id}
    ParameterInRequiredDescription
    idpathYesEvent id yyyy-slug.
    Try in the explorer
  • GET/v1/f1/sessionsEvery F1 plan

    Sessions (practice, sprint, qualifying, race) for an event or season.

    Parameters for /v1/f1/sessions
    ParameterInRequiredDescription
    eventqueryNoEvent id.
    seasonqueryNoSeason year.
    Try in the explorer
  • GET/v1/f1/sessions/{id}Every F1 plan

    One session with its classification.

    Parameters for /v1/f1/sessions/{id}
    ParameterInRequiredDescription
    idpathYesSession id.
    Try in the explorer
  • GET/v1/f1/standings/driversEvery F1 plan

    Drivers' championship table, optionally with round-by-round progression.

    Parameters for /v1/f1/standings/drivers
    ParameterInRequiredDescription
    seasonqueryNoSeason year.
    progressionqueryNo1 = include round-by-round progression.
    Try in the explorer
  • GET/v1/f1/standings/constructorsEvery F1 plan

    Constructors' championship table, optionally with progression.

    Parameters for /v1/f1/standings/constructors
    ParameterInRequiredDescription
    seasonqueryNoSeason year.
    progressionqueryNo1 = include round-by-round progression.
    Try in the explorer
  • GET/v1/f1/resultsEvery F1 plan

    Classified results per event and session type.

    Parameters for /v1/f1/results
    ParameterInRequiredDescription
    seasonqueryNoSeason year.
    eventqueryNoEvent id.
    session_typequeryNorace, sprint, qualifying, …
    Try in the explorer

Analytics 5

  • GET/v1/f1/dna/driver/{id}All Sports class and above

    Driver DNA: percentile profile of qualifying, racecraft, consistency and teammate battles.

    Parameters for /v1/f1/dna/driver/{id}
    ParameterInRequiredDescription
    idpathYesDriver slug.
    Try in the explorer
  • GET/v1/f1/dna/constructor/{id}All Sports class and above

    Constructor DNA by season.

    Parameters for /v1/f1/dna/constructor/{id}
    ParameterInRequiredDescription
    idpathYesConstructor slug.
    seasonqueryNoSeason year.
    Try in the explorer
  • GET/v1/f1/dna/circuit/{id}All Sports class and above

    Circuit DNA: what the track rewards, with winners.

    Parameters for /v1/f1/dna/circuit/{id}
    ParameterInRequiredDescription
    idpathYesCircuit id.
    Try in the explorer
  • GET/v1/f1/fit/{event}Pro class and above

    Circuit Fit: how each driver profile suits an upcoming event.

    Parameters for /v1/f1/fit/{event}
    ParameterInRequiredDescription
    eventpathYesEvent id yyyy-slug.
    Try in the explorer
  • GET/v1/f1/matchups/{a}/{b}Pro class and above

    Head-to-head between two drivers: qualifying and race battles, recent meetings.

    Parameters for /v1/f1/matchups/{a}/{b}
    ParameterInRequiredDescription
    apathYesDriver slug.
    bpathYesDriver slug.
    Try in the explorer

Account 2

  • GET/v1/accountAny PropSports key

    Key status, plan, product entitlements and today's quota.

    Try in the explorer
  • GET/v1/account/usageAny PropSports key

    Daily request totals and today's per-endpoint breakdown.

    Parameters for /v1/account/usage
    ParameterInRequiredDescription
    days integerqueryNoDays of history, 1–31 (default 14).
    Try in the explorer

06 Authentication

One header.

Send your PropSports key on every data request.

  • HEADERSend X-API-Key: <your key>. Authorization: Bearer <key> and ?key= are also accepted; prefer the header so keys stay out of logs.
  • ENTITLEMENTA key reaches Formula 1 only when its subscription includes the product; DNA, Circuit Fit and Matchups also check the plan class shown on each route. Otherwise the gateway answers 403 plan_not_entitled or 403 plan_upgrade_required.
  • KEYLESS/v1/f1/openapi.json needs no key. On this host, /v1/f1 requests without a key are served by the public PropBetEdge Formula 1 data plane, so send your key on every commercial call, including the catalogue.
  • ACCOUNTCheck plan, entitlements and quota with GET /v1/account, or on the account page, where you can also rotate or revoke the key.

07 Quickstart

First request.

Export your key as PROPSPORTS_KEY, then call /v1/f1/standings/drivers.

cURL
curl -s "https://propsports.proptechusa.ai/v1/f1/standings/drivers?season=2025" \
  -H "X-API-Key: $PROPSPORTS_KEY" \
  -D - -o response.json   # -D prints the X-RateLimit-* headers
JavaScript (fetch)
const res = await fetch(
  "https://propsports.proptechusa.ai/v1/f1/standings/drivers?season=2025",
  { headers: { "X-API-Key": process.env.PROPSPORTS_KEY } }
);
const body = await res.json();
if (!body.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
console.log(res.headers.get("X-RateLimit-Remaining"), body.meta.as_of, body.data);
Python (requests)
import os, requests

r = requests.get(
    "https://propsports.proptechusa.ai/v1/f1/standings/drivers",
    params={"season": "2025"},
    headers={"X-API-Key": os.environ["PROPSPORTS_KEY"]},
    timeout=30,
)
body = r.json()
if not body["ok"]:
    raise RuntimeError(f'{body["error"]["code"]}: {body["error"]["message"]}')
print(r.headers["X-RateLimit-Remaining"], body["meta"].get("as_of"), body["data"])

08 Filtering

Filter with documented query parameters.

  • FILTERSseason active event progression session_type. Each route lists the parameters it accepts; an unknown parameter returns 400 unknown_parameter and a malformed value 400 invalid_parameter.
  • RESPONSE SHAPEResponses use the PropSports envelope {ok, data, meta}; when a route returns a pagination block (total, limit, offset, returned, next_offset), read it rather than counting rows.
  • IDSDrivers and constructors use stable slugs (for example george-russell); events use yyyy-slug; circuit ids end in -circuit.

09 Rate limits and quotas

A burst limit and a daily quota.

  • BURST600 requests per minute per key. Above it the gateway answers 429 rate_limited with Retry-After: 60.
  • DAILY QUOTAYour plan's daily request quota, shared with every PropSports route on the same key. When it is used up: 429 daily_quota_exceeded. The counter resets at midnight America/New_York.
  • HEADERSX-RateLimit-Limit (daily quota), X-RateLimit-Remaining and X-RateLimit-Reset (ISO time of the next reset) on every metered response, plus X-Request-Id for support.
  • NOT METEREDKeyless discovery and /v1/account do not count against the quota. /v1/account/usage?days=14 returns your daily totals.

10 Data freshness

Every response says how current it is.

  • META.GENERATED_ATWhen the gateway produced the response.
  • META.AS_OFWhen the underlying table (standings, leaders, player statistics, model boards) was last computed. A response time is not the time the data changed.
  • META.SOURCE_STATEThe state of the stored data behind the route, for example CURRENT. Treat any other value as a signal to check /v1/f1/seasons before relying on the numbers.
  • NULLSA missing value is unknown, never zero. Analytics state what they do not measure instead of estimating it.

11 Errors

Structured errors with a stable code.

Every error is {"ok": false, "error": {"status", "code", "message", "hint"}, "meta": {"request_id", …}}. Branch on error.code; quote meta.request_id when you contact support.

Error statuses and codes
StatusMeaningerror.code
400Invalid or unknown parameter.invalid_parameter unknown_parameter invalid_query repeated_parameter invalid_request
401Missing or invalid API key.api_key_required invalid_api_key
402Subscription inactive, expired or key revoked.subscription_expired subscription_inactive api_key_revoked
403Plan does not include this product or route.plan_not_entitled plan_upgrade_required
404Unknown route or entity.route_not_found not_found not_available
429Per-minute burst limit or daily quota (daily_quota_exceeded) reached.rate_limited
451Data class withheld for legal reasons.unavailable_for_legal_reasons
503Product not released or data service unavailable.product_unavailable upstream_unavailable

12 Real responses

19 captured responses.

Captured 2026-11-01 from the Formula 1 commercial core over the live production data. Arrays are trimmed to three rows.

GET/v1/f1/events?season=2025200 · 64 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": [
    {
      "id": "2025-australian-grand-prix",
      "season": 2025,
      "round": 1,
      "name": "Australian Grand Prix",
      "circuit_id": "albert-park",
      "start_utc": "2025-03-14T01:30Z",
      "end_utc": "2025-03-16T04:00Z",
      "status": "completed",
      "format": "conventional",
      "sprint": false,
      "sessions": [
        {
          "id": "2025-australian-grand-prix-fp1",
          "event_id": "2025-australian-grand-prix",
          "type": "fp1",
          "label": "Practice 1",
          "start_utc": "2025-03-14T01:30Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        },
        {
          "id": "2025-australian-grand-prix-fp2",
          "event_id": "2025-australian-grand-prix",
          "type": "fp2",
          "label": "Practice 2",
          "start_utc": "2025-03-14T05:00Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        },
        {
          "id": "2025-australian-grand-prix-fp3",
          "event_id": "2025-australian-grand-prix",
          "type": "fp3",
          "label": "Practice 3",
          "start_utc": "2025-03-15T01:30Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        }
      ]
    },
    {
      "id": "2025-chinese-grand-prix",
      "season": 2025,
      "round": 2,
      "name": "Chinese Grand Prix",
      "circuit_id": "shanghai-international-circuit",
      "start_utc": "2025-03-21T03:30Z",
      "end_utc": "2025-03-23T07:00Z",
      "status": "completed",
      "format": "sprint",
      "sprint": true,
      "sessions": [
        {
          "id": "2025-chinese-grand-prix-fp1",
          "event_id": "2025-chinese-grand-prix",
          "type": "fp1",
          "label": "Practice 1",
          "start_utc": "2025-03-21T03:30Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        },
        {
          "id": "2025-chinese-grand-prix-sprint-qualifying",
          "event_id": "2025-chinese-grand-prix",
          "type": "sprint_qualifying",
          "label": "Sprint Qualifying",
          "start_utc": "2025-03-21T07:30Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        },
        {
          "id": "2025-chinese-grand-prix-sprint",
          "event_id": "2025-chinese-grand-prix",
          "type": "sprint",
          "label": "Sprint",
          "start_utc": "2025-03-22T03:00Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        }
      ]
    },
    {
      "id": "2025-japanese-grand-prix",
      "season": 2025,
      "round": 3,
      "name": "Japanese Grand Prix",
      "circuit_id": "suzuka-circuit",
      "start_utc": "2025-04-04T02:30Z",
      "end_utc": "2025-04-06T05:00Z",
      "status": "completed",
      "format": "conventional",
      "sprint": false,
      "sessions": [
        {
          "id": "2025-japanese-grand-prix-fp1",
          "event_id": "2025-japanese-grand-prix",
          "type": "fp1",
          "label": "Practice 1",
          "start_utc": "2025-04-04T02:30Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        },
        {
          "id": "2025-japanese-grand-prix-fp2",
          "event_id": "2025-japanese-grand-prix",
          "type": "fp2",
          "label": "Practice 2",
          "start_utc": "2025-04-04T06:00Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        },
        {
          "id": "2025-japanese-grand-prix-fp3",
          "event_id": "2025-japanese-grand-prix",
          "type": "fp3",
          "label": "Practice 3",
          "start_utc": "2025-04-05T02:30Z",
          "time_confirmed": true,
          "state": "completed",
          "laps_scheduled": null,
          "distance_km": null
        }
      ]
    }
  ],
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "events",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_1f6ba41e1f73af8705",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "season": 2025,
    "served_ms": 16,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/drivers?active=1200 · 12 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": [
    {
      "id": "fernando-alonso",
      "name": "Fernando Alonso",
      "first_name": "Fernando",
      "last_name": "Alonso",
      "code": "ALO",
      "nationality": "Spain",
      "date_of_birth": "1981-07-29",
      "number": "14",
      "team_id": "aston-martin",
      "team_season": 2026,
      "career": {
        "starts": 443,
        "wins": 32,
        "podiums": 106,
        "poles": 22,
        "fastest_laps": 26,
        "points": 2400,
        "championships": [
          2005,
          2006
        ],
        "first_season": 2001,
        "last_season": 2026,
        "best_finish": 1
      }
    },
    {
      "id": "nico-hulkenberg",
      "name": "Nico Hülkenberg",
      "first_name": "Nico",
      "last_name": "Hülkenberg",
      "code": "HUL",
      "nationality": "Germany",
      "date_of_birth": "1987-08-19",
      "number": "27",
      "team_id": "audi",
      "team_season": 2026,
      "career": {
        "starts": 272,
        "wins": 0,
        "podiums": 1,
        "poles": 1,
        "fastest_laps": 2,
        "points": 635,
        "championships": [],
        "first_season": 2010,
        "last_season": 2026,
        "best_finish": 3
      }
    },
    {
      "id": "sergio-perez",
      "name": "Sergio Pérez",
      "first_name": "Sergio",
      "last_name": "Pérez",
      "code": "PER",
      "nationality": "Mexico",
      "date_of_birth": "1989-12-26",
      "number": "11",
      "team_id": "cadillac",
      "team_season": 2026,
      "career": {
        "starts": 300,
        "wins": 6,
        "podiums": 38,
        "poles": 3,
        "fastest_laps": 12,
        "points": 1638,
        "championships": [],
        "first_season": 2011,
        "last_season": 2026,
        "best_finish": 1
      }
    }
  ],
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "drivers",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_1b61e6e2fcaacabd80",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "count": 23,
    "served_ms": 6,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/constructors200 · 8 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": [
    {
      "id": "a-t-s",
      "name": "A.T.S.",
      "lineage_id": "a-t-s",
      "first_season": 1963,
      "last_season": 1963
    },
    {
      "id": "adams",
      "name": "Adams",
      "lineage_id": "adams",
      "first_season": 1950,
      "last_season": 1950
    },
    {
      "id": "afm",
      "name": "AFM",
      "lineage_id": "afm",
      "first_season": 1952,
      "last_season": 1953
    }
  ],
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "constructors",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_03f74f2bf5abc696b2",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 3,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/circuits200 · 9 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": [
    {
      "id": "hungaroring",
      "name": "Hungaroring",
      "locality": "Budapest",
      "country": "Hungary",
      "lat": 47.582222222,
      "lon": 19.251111111,
      "latest_layout": {
        "length_km": 4.381,
        "turns": 14,
        "layout_type": "Track"
      },
      "opened": 1985
    },
    {
      "id": "suzuka-circuit",
      "name": "Suzuka Circuit",
      "locality": "Suzuka",
      "country": "Japan",
      "lat": 34.841666666,
      "lon": 136.538888888,
      "latest_layout": {
        "length_km": 5.807,
        "turns": 18,
        "layout_type": "Track"
      },
      "opened": 1962
    },
    {
      "id": "circuit-de-catalunya",
      "name": "Circuit de Catalunya",
      "locality": "Barcelona",
      "country": "Spain",
      "lat": 41.57,
      "lon": 2.261111111,
      "latest_layout": {
        "length_km": 4.655,
        "turns": 16,
        "layout_type": "Track"
      },
      "opened": 1989
    }
  ],
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "circuits",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_0775391e6450893dee",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 5,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1200 · 4 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "current_season": 2026,
    "counts": {
      "seasons": 77,
      "events": 1176,
      "drivers": 906,
      "constructors": 183,
      "circuits": 77
    },
    "features": [
      {
        "key": "f1_core",
        "min_plan": "developer",
        "label": "F1 core: seasons, drivers, constructors, circuits, events, sessions, standings, results",
        "available": true
      },
      {
        "key": "f1_dna",
        "min_plan": "pro",
        "label": "F1 Driver, Constructor and Circuit DNA (PropBetEdge-derived)",
        "available": true
      },
      {
        "key": "f1_intelligence",
        "min_plan": "ultra",
        "label": "F1 Circuit Fit and driver Matchups (PropBetEdge-derived)",
        "available": true
      }
    ],
    "routes": [
      {
        "key": "seasons",
        "path": "/v1/f1/seasons",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "drivers",
        "path": "/v1/f1/drivers",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "driver",
        "path": "/v1/f1/drivers/{id}",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "constructors",
        "path": "/v1/f1/constructors",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "constructor",
        "path": "/v1/f1/constructors/{id}",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "circuits",
        "path": "/v1/f1/circuits",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "circuit",
        "path": "/v1/f1/circuits/{id}",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "events",
        "path": "/v1/f1/events",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "event",
        "path": "/v1/f1/events/{event_id}",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "sessions",
        "path": "/v1/f1/sessions",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "session",
        "path": "/v1/f1/sessions/{event_id}",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "standings_drivers",
        "path": "/v1/f1/standings/drivers",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "standings_constructors",
        "path": "/v1/f1/standings/constructors",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "results",
        "path": "/v1/f1/results",
        "feature": "f1_core",
        "min_plan": "developer",
        "available": true
      },
      {
        "key": "driver_dna",
        "path": "/v1/f1/dna/driver/{id}",
        "feature": "f1_dna",
        "min_plan": "pro",
        "available": true
      },
      {
        "key": "constructor_dna",
        "path": "/v1/f1/dna/constructor/{id}",
        "feature": "f1_dna",
        "min_plan": "pro",
        "available": true
      },
      {
        "key": "circuit_dna",
        "path": "/v1/f1/dna/circuit/{id}",
        "feature": "f1_dna",
        "min_plan": "pro",
        "available": true
      },
      {
        "key": "circuit_fit",
        "path": "/v1/f1/fit/{event_id}",
        "feature": "f1_intelligence",
        "min_plan": "ultra",
        "available": true
      },
      {
        "key": "matchup",
        "path": "/v1/f1/matchups/{id}/{id}",
        "feature": "f1_intelligence",
        "min_plan": "ultra",
        "available": true
      }
    ]
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "index",
    "feature": null,
    "plan": "enterprise",
    "request_id": "req_312bc74be6db7d1bb1",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 0,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/seasons200 · 9 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": [
    {
      "year": 1950,
      "rounds": 7,
      "canceled": 0,
      "completed": 7,
      "regulations_era": "Early championship (1950–1960)"
    },
    {
      "year": 1951,
      "rounds": 8,
      "canceled": 0,
      "completed": 8,
      "regulations_era": "Early championship (1950–1960)"
    },
    {
      "year": 1952,
      "rounds": 8,
      "canceled": 0,
      "completed": 8,
      "regulations_era": "Early championship (1950–1960)"
    }
  ],
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "seasons",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_05cbf174be7e80fb9a",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 5,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/circuits/hungaroring200 · 3 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "id": "hungaroring",
    "name": "Hungaroring",
    "locality": "Budapest",
    "country": "Hungary",
    "lat": 47.582222222,
    "lon": 19.251111111,
    "latest_layout": {
      "length_km": 4.381,
      "turns": 14,
      "layout_type": "Track"
    },
    "opened": 1985
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "circuit",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_c141fa9eccaf7fc568",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 0,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/drivers/fernando-alonso200 · 3 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "id": "fernando-alonso",
    "name": "Fernando Alonso",
    "first_name": "Fernando",
    "last_name": "Alonso",
    "code": "ALO",
    "nationality": "Spain",
    "date_of_birth": "1981-07-29",
    "number": "14",
    "team_id": "aston-martin",
    "team_season": 2026,
    "career": {
      "starts": 443,
      "wins": 32,
      "podiums": 106,
      "poles": 22,
      "fastest_laps": 26,
      "points": 2400,
      "championships": [
        2005,
        2006
      ],
      "first_season": 2001,
      "last_season": 2026,
      "best_finish": 1
    }
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "driver",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_bdc4183627269e1a96",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 0,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/events/2025-australian-grand-prix200 · 6 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "id": "2025-australian-grand-prix",
    "season": 2025,
    "round": 1,
    "name": "Australian Grand Prix",
    "circuit_id": "albert-park",
    "start_utc": "2025-03-14T01:30Z",
    "end_utc": "2025-03-16T04:00Z",
    "status": "completed",
    "format": "conventional",
    "sprint": false,
    "sessions": [
      {
        "id": "2025-australian-grand-prix-fp1",
        "event_id": "2025-australian-grand-prix",
        "type": "fp1",
        "label": "Practice 1",
        "start_utc": "2025-03-14T01:30Z",
        "time_confirmed": true,
        "state": "completed",
        "laps_scheduled": null,
        "distance_km": null,
        "results": [
          {
            "position": 1,
            "driver_id": "lando-norris",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "4",
            "grid": null,
            "status": "classified",
            "laps": 21,
            "time": null,
            "time_ms": null,
            "gap": null,
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          },
          {
            "position": 2,
            "driver_id": "carlos-sainz",
            "constructor_id": "williams",
            "constructor_inferred": false,
            "car_number": "55",
            "grid": null,
            "status": "classified",
            "laps": 25,
            "time": null,
            "time_ms": null,
            "gap": "+0.149",
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          },
          {
            "position": 3,
            "driver_id": "charles-leclerc",
            "constructor_id": "ferrari",
            "constructor_inferred": false,
            "car_number": "16",
            "grid": null,
            "status": "classified",
            "laps": 21,
            "time": null,
            "time_ms": null,
            "gap": "+0.209",
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          }
        ]
      },
      {
        "id": "2025-australian-grand-prix-fp2",
        "event_id": "2025-australian-grand-prix",
        "type": "fp2",
        "label": "Practice 2",
        "start_utc": "2025-03-14T05:00Z",
        "time_confirmed": true,
        "state": "completed",
        "laps_scheduled": null,
        "distance_km": null,
        "results": [
          {
            "position": 1,
            "driver_id": "charles-leclerc",
            "constructor_id": "ferrari",
            "constructor_inferred": false,
            "car_number": "16",
            "grid": null,
            "status": "classified",
            "laps": 32,
            "time": null,
            "time_ms": null,
            "gap": null,
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          },
          {
            "position": 2,
            "driver_id": "oscar-piastri",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "81",
            "grid": null,
            "status": "classified",
            "laps": 30,
            "time": null,
            "time_ms": null,
            "gap": "+0.124",
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          },
          {
            "position": 3,
            "driver_id": "lando-norris",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "4",
            "grid": null,
            "status": "classified",
            "laps": 30,
            "time": null,
            "time_ms": null,
            "gap": "+0.141",
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          }
        ]
      },
      {
        "id": "2025-australian-grand-prix-fp3",
        "event_id": "2025-australian-grand-prix",
        "type": "fp3",
        "label": "Practice 3",
        "start_utc": "2025-03-15T01:30Z",
        "time_confirmed": true,
        "state": "completed",
        "laps_scheduled": null,
        "distance_km": null,
        "results": [
          {
            "position": 1,
            "driver_id": "oscar-piastri",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "81",
            "grid": null,
            "status": "classified",
            "laps": 16,
            "time": null,
            "time_ms": null,
            "gap": null,
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          },
          {
            "position": 2,
            "driver_id": "george-russell",
            "constructor_id": "mercedes",
            "constructor_inferred": false,
            "car_number": "63",
            "grid": null,
            "status": "classified",
            "laps": 17,
            "time": null,
            "time_ms": null,
            "gap": "+0.039",
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          },
          {
            "position": 3,
            "driver_id": "max-verstappen",
            "constructor_id": "red-bull",
            "constructor_inferred": false,
            "car_number": "1",
            "grid": null,
            "status": "classified",
            "laps": 18,
            "time": null,
            "time_ms": null,
            "gap": "+0.081",
            "behind_laps": null,
            "points": null,
            "points_scope": null,
            "laps_led": null,
            "pit_stops": null
          }
        ]
      }
    ]
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "event",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_6ca33432e1be739a99",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 2,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/sessions?event=2025-australian-grand-prix200 · 6 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": [
    {
      "id": "2025-australian-grand-prix-fp1",
      "event_id": "2025-australian-grand-prix",
      "type": "fp1",
      "label": "Practice 1",
      "start_utc": "2025-03-14T01:30Z",
      "time_confirmed": true,
      "state": "completed",
      "laps_scheduled": null,
      "distance_km": null
    },
    {
      "id": "2025-australian-grand-prix-fp2",
      "event_id": "2025-australian-grand-prix",
      "type": "fp2",
      "label": "Practice 2",
      "start_utc": "2025-03-14T05:00Z",
      "time_confirmed": true,
      "state": "completed",
      "laps_scheduled": null,
      "distance_km": null
    },
    {
      "id": "2025-australian-grand-prix-fp3",
      "event_id": "2025-australian-grand-prix",
      "type": "fp3",
      "label": "Practice 3",
      "start_utc": "2025-03-15T01:30Z",
      "time_confirmed": true,
      "state": "completed",
      "laps_scheduled": null,
      "distance_km": null
    },
    {
      "id": "2025-australian-grand-prix-qualifying",
      "event_id": "2025-australian-grand-prix",
      "type": "qualifying",
      "label": "Qualifying",
      "start_utc": "2025-03-15T05:00Z",
      "time_confirmed": true,
      "state": "completed",
      "laps_scheduled": null,
      "distance_km": null
    },
    {
      "id": "2025-australian-grand-prix-race",
      "event_id": "2025-australian-grand-prix",
      "type": "race",
      "label": "Grand Prix",
      "start_utc": "2025-03-16T04:00Z",
      "time_confirmed": true,
      "state": "completed",
      "laps_scheduled": 57,
      "distance_km": 307
    }
  ],
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "sessions",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_3bf9de8cab2125c343",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "season": 2025,
    "served_ms": 0,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/sessions/2025-australian-grand-prix-race200 · 4 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "id": "2025-australian-grand-prix-race",
    "event_id": "2025-australian-grand-prix",
    "type": "race",
    "label": "Grand Prix",
    "start_utc": "2025-03-16T04:00Z",
    "time_confirmed": true,
    "state": "completed",
    "laps_scheduled": 57,
    "distance_km": 307,
    "results": [
      {
        "position": 1,
        "driver_id": "lando-norris",
        "constructor_id": "mclaren",
        "constructor_inferred": false,
        "car_number": "4",
        "grid": 1,
        "status": "classified",
        "laps": 57,
        "time": "1:42:06.304",
        "time_ms": 6126304,
        "gap": null,
        "behind_laps": null,
        "points": 25,
        "points_scope": "race",
        "laps_led": 1,
        "pit_stops": 5
      },
      {
        "position": 2,
        "driver_id": "max-verstappen",
        "constructor_id": "red-bull",
        "constructor_inferred": false,
        "car_number": "1",
        "grid": 3,
        "status": "classified",
        "laps": 57,
        "time": "1:42:07.199",
        "time_ms": 6127199,
        "gap": "+0.895",
        "behind_laps": null,
        "points": 18,
        "points_scope": "race",
        "laps_led": 2,
        "pit_stops": 5
      },
      {
        "position": 3,
        "driver_id": "george-russell",
        "constructor_id": "mercedes",
        "constructor_inferred": false,
        "car_number": "63",
        "grid": 4,
        "status": "classified",
        "laps": 57,
        "time": "1:42:14.785",
        "time_ms": 6134785,
        "gap": "+8.481",
        "behind_laps": null,
        "points": 15,
        "points_scope": "race",
        "laps_led": null,
        "pit_stops": 5
      }
    ]
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "session",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_c83dc5ba4c7017f155",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 1,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/standings/drivers?season=2025&progression=1200 · 17 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "season": 2025,
    "standings": [
      {
        "position": 1,
        "driver_id": "lando-norris",
        "points": 423,
        "wins": 7,
        "poles": 7
      },
      {
        "position": 2,
        "driver_id": "max-verstappen",
        "points": 421,
        "wins": 8,
        "poles": 8
      },
      {
        "position": 3,
        "driver_id": "oscar-piastri",
        "points": 410,
        "wins": 7,
        "poles": 6
      }
    ],
    "progression": [
      {
        "event_id": "2025-australian-grand-prix",
        "round": 1,
        "totals": {
          "lando-norris": {
            "p": 25,
            "pos": 1
          },
          "max-verstappen": {
            "p": 18,
            "pos": 2
          },
          "george-russell": {
            "p": 15,
            "pos": 3
          },
          "kimi-antonelli": {
            "p": 12,
            "pos": 4
          },
          "alexander-albon": {
            "p": 10,
            "pos": 5
          },
          "lance-stroll": {
            "p": 8,
            "pos": 6
          },
          "nico-hulkenberg": {
            "p": 6,
            "pos": 7
          },
          "charles-leclerc": {
            "p": 4,
            "pos": 8
          },
          "oscar-piastri": {
            "p": 2,
            "pos": 9
          },
          "lewis-hamilton": {
            "p": 1,
            "pos": 10
          },
          "pierre-gasly": {
            "p": 0,
            "pos": 11
          },
          "yuki-tsunoda": {
            "p": 0,
            "pos": 12
          },
          "esteban-ocon": {
            "p": 0,
            "pos": 13
          },
          "oliver-bearman": {
            "p": 0,
            "pos": 14
          },
          "fernando-alonso": {
            "p": 0,
            "pos": 15
          },
          "carlos-sainz": {
            "p": 0,
            "pos": 16
          },
          "liam-lawson": {
            "p": 0,
            "pos": 17
          },
          "jack-doohan": {
            "p": 0,
            "pos": 18
          },
          "isack-hadjar": {
            "p": 0,
            "pos": 19
          },
          "gabriel-bortoleto": {
            "p": 0,
            "pos": 20
          }
        }
      },
      {
        "event_id": "2025-chinese-grand-prix",
        "round": 2,
        "totals": {
          "lando-norris": {
            "p": 44,
            "pos": 1
          },
          "max-verstappen": {
            "p": 36,
            "pos": 2
          },
          "george-russell": {
            "p": 35,
            "pos": 3
          },
          "oscar-piastri": {
            "p": 34,
            "pos": 4
          },
          "kimi-antonelli": {
            "p": 22,
            "pos": 5
          },
          "alexander-albon": {
            "p": 16,
            "pos": 6
          },
          "esteban-ocon": {
            "p": 10,
            "pos": 7
          },
          "lance-stroll": {
            "p": 10,
            "pos": 8
          },
          "lewis-hamilton": {
            "p": 9,
            "pos": 9
          },
          "charles-leclerc": {
            "p": 8,
            "pos": 10
          },
          "nico-hulkenberg": {
            "p": 6,
            "pos": 11
          },
          "oliver-bearman": {
            "p": 4,
            "pos": 12
          },
          "yuki-tsunoda": {
            "p": 3,
            "pos": 13
          },
          "carlos-sainz": {
            "p": 1,
            "pos": 14
          },
          "pierre-gasly": {
            "p": 0,
            "pos": 15
          },
          "isack-hadjar": {
            "p": 0,
            "pos": 16
          },
          "liam-lawson": {
            "p": 0,
            "pos": 17
          },
          "jack-doohan": {
            "p": 0,
            "pos": 18
          },
          "gabriel-bortoleto": {
            "p": 0,
            "pos": 19
          },
          "fernando-alonso": {
            "p": 0,
            "pos": 20
          }
        }
      },
      {
        "event_id": "2025-japanese-grand-prix",
        "round": 3,
        "totals": {
          "lando-norris": {
            "p": 62,
            "pos": 1
          },
          "max-verstappen": {
            "p": 61,
            "pos": 2
          },
          "oscar-piastri": {
            "p": 49,
            "pos": 3
          },
          "george-russell": {
            "p": 45,
            "pos": 4
          },
          "kimi-antonelli": {
            "p": 30,
            "pos": 5
          },
          "charles-leclerc": {
            "p": 20,
            "pos": 6
          },
          "alexander-albon": {
            "p": 18,
            "pos": 7
          },
          "lewis-hamilton": {
            "p": 15,
            "pos": 8
          },
          "esteban-ocon": {
            "p": 10,
            "pos": 9
          },
          "lance-stroll": {
            "p": 10,
            "pos": 10
          },
          "nico-hulkenberg": {
            "p": 6,
            "pos": 11
          },
          "oliver-bearman": {
            "p": 5,
            "pos": 12
          },
          "isack-hadjar": {
            "p": 4,
            "pos": 13
          },
          "yuki-tsunoda": {
            "p": 3,
            "pos": 14
          },
          "carlos-sainz": {
            "p": 1,
            "pos": 15
          },
          "pierre-gasly": {
            "p": 0,
            "pos": 16
          },
          "fernando-alonso": {
            "p": 0,
            "pos": 17
          },
          "liam-lawson": {
            "p": 0,
            "pos": 18
          },
          "jack-doohan": {
            "p": 0,
            "pos": 19
          },
          "gabriel-bortoleto": {
            "p": 0,
            "pos": 20
          }
        }
      }
    ],
    "note": null
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "standings_drivers",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_7098aa6cf2b59ec2ec",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 10,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/standings/constructors?season=2025200 · 4 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "season": 2025,
    "standings": [
      {
        "position": 1,
        "constructor_id": "mclaren",
        "points": 833,
        "wins": 14,
        "poles": 13
      },
      {
        "position": 2,
        "constructor_id": "mercedes",
        "points": 469,
        "wins": 2,
        "poles": 2
      },
      {
        "position": 3,
        "constructor_id": "red-bull",
        "points": 451,
        "wins": 8,
        "poles": 8
      },
      {
        "position": 4,
        "constructor_id": "ferrari",
        "points": 398,
        "wins": 0,
        "poles": 1
      },
      {
        "position": 5,
        "constructor_id": "williams",
        "points": 137,
        "wins": 0,
        "poles": 0
      },
      {
        "position": 6,
        "constructor_id": "racing-bulls",
        "points": 92,
        "wins": 0,
        "poles": 0
      },
      {
        "position": 7,
        "constructor_id": "aston-martin",
        "points": 89,
        "wins": 0,
        "poles": 0
      },
      {
        "position": 8,
        "constructor_id": "haas",
        "points": 79,
        "wins": 0,
        "poles": 0
      },
      {
        "position": 9,
        "constructor_id": "kick-sauber",
        "points": 70,
        "wins": 0,
        "poles": 0
      },
      {
        "position": 10,
        "constructor_id": "alpine",
        "points": 22,
        "wins": 0,
        "poles": 0
      }
    ],
    "note": null
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "standings_constructors",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_a0cf5cffb4cd6da7fc",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "served_ms": 1,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/results?season=2025200 · 12 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": [
    {
      "event_id": "2025-australian-grand-prix",
      "round": 1,
      "name": "Australian Grand Prix",
      "session": {
        "id": "2025-australian-grand-prix-race",
        "event_id": "2025-australian-grand-prix",
        "type": "race",
        "label": "Grand Prix",
        "start_utc": "2025-03-16T04:00Z",
        "time_confirmed": true,
        "state": "completed",
        "laps_scheduled": 57,
        "distance_km": 307,
        "results": [
          {
            "position": 1,
            "driver_id": "lando-norris",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "4",
            "grid": 1,
            "status": "classified",
            "laps": 57,
            "time": "1:42:06.304",
            "time_ms": 6126304,
            "gap": null,
            "behind_laps": null,
            "points": 25,
            "points_scope": "race",
            "laps_led": 1,
            "pit_stops": 5
          },
          {
            "position": 2,
            "driver_id": "max-verstappen",
            "constructor_id": "red-bull",
            "constructor_inferred": false,
            "car_number": "1",
            "grid": 3,
            "status": "classified",
            "laps": 57,
            "time": "1:42:07.199",
            "time_ms": 6127199,
            "gap": "+0.895",
            "behind_laps": null,
            "points": 18,
            "points_scope": "race",
            "laps_led": 2,
            "pit_stops": 5
          },
          {
            "position": 3,
            "driver_id": "george-russell",
            "constructor_id": "mercedes",
            "constructor_inferred": false,
            "car_number": "63",
            "grid": 4,
            "status": "classified",
            "laps": 57,
            "time": "1:42:14.785",
            "time_ms": 6134785,
            "gap": "+8.481",
            "behind_laps": null,
            "points": 15,
            "points_scope": "race",
            "laps_led": null,
            "pit_stops": 5
          }
        ]
      }
    },
    {
      "event_id": "2025-chinese-grand-prix",
      "round": 2,
      "name": "Chinese Grand Prix",
      "session": {
        "id": "2025-chinese-grand-prix-race",
        "event_id": "2025-chinese-grand-prix",
        "type": "race",
        "label": "Grand Prix",
        "start_utc": "2025-03-23T07:00Z",
        "time_confirmed": true,
        "state": "completed",
        "laps_scheduled": 56,
        "distance_km": 305,
        "results": [
          {
            "position": 1,
            "driver_id": "oscar-piastri",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "81",
            "grid": 1,
            "status": "classified",
            "laps": 56,
            "time": "1:30:55.026",
            "time_ms": 5455026,
            "gap": null,
            "behind_laps": null,
            "points": 32,
            "points_scope": "weekend_incl_sprint",
            "laps_led": 1,
            "pit_stops": 1
          },
          {
            "position": 2,
            "driver_id": "lando-norris",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "4",
            "grid": 3,
            "status": "classified",
            "laps": 56,
            "time": "1:31:04.774",
            "time_ms": 5464774,
            "gap": "+9.748",
            "behind_laps": null,
            "points": 19,
            "points_scope": "weekend_incl_sprint",
            "laps_led": 1,
            "pit_stops": 1
          },
          {
            "position": 3,
            "driver_id": "george-russell",
            "constructor_id": "mercedes",
            "constructor_inferred": false,
            "car_number": "63",
            "grid": 2,
            "status": "classified",
            "laps": 56,
            "time": "1:31:06.123",
            "time_ms": 5466123,
            "gap": "+11.097",
            "behind_laps": null,
            "points": 20,
            "points_scope": "weekend_incl_sprint",
            "laps_led": null,
            "pit_stops": 1
          }
        ]
      }
    },
    {
      "event_id": "2025-japanese-grand-prix",
      "round": 3,
      "name": "Japanese Grand Prix",
      "session": {
        "id": "2025-japanese-grand-prix-race",
        "event_id": "2025-japanese-grand-prix",
        "type": "race",
        "label": "Grand Prix",
        "start_utc": "2025-04-06T05:00Z",
        "time_confirmed": true,
        "state": "completed",
        "laps_scheduled": 53,
        "distance_km": 307,
        "results": [
          {
            "position": 1,
            "driver_id": "max-verstappen",
            "constructor_id": "red-bull",
            "constructor_inferred": false,
            "car_number": "1",
            "grid": 1,
            "status": "classified",
            "laps": 53,
            "time": "1:22:06.983",
            "time_ms": 4926983,
            "gap": null,
            "behind_laps": null,
            "points": 25,
            "points_scope": "race",
            "laps_led": 2,
            "pit_stops": 1
          },
          {
            "position": 2,
            "driver_id": "lando-norris",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "4",
            "grid": 2,
            "status": "classified",
            "laps": 53,
            "time": "1:22:08.406",
            "time_ms": 4928406,
            "gap": "+1.423",
            "behind_laps": null,
            "points": 18,
            "points_scope": "race",
            "laps_led": null,
            "pit_stops": 1
          },
          {
            "position": 3,
            "driver_id": "oscar-piastri",
            "constructor_id": "mclaren",
            "constructor_inferred": false,
            "car_number": "81",
            "grid": 3,
            "status": "classified",
            "laps": 53,
            "time": "1:22:09.112",
            "time_ms": 4929112,
            "gap": "+2.129",
            "behind_laps": null,
            "points": 15,
            "points_scope": "race",
            "laps_led": null,
            "pit_stops": 1
          }
        ]
      }
    }
  ],
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "results",
    "feature": "f1_core",
    "plan": "enterprise",
    "request_id": "req_7402ef191ae9ba9dcc",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": false,
    "season": 2025,
    "session_type": "race",
    "served_ms": 3,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/dna/driver/fernando-alonso200 · 43 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "driver_id": "fernando-alonso",
    "current": {
      "driver_id": "fernando-alonso",
      "window": "2025–2026",
      "dimensions": {
        "qualifying": {
          "label": "Qualifying Pace",
          "percentile": 90,
          "sample_size": 38,
          "min_sample": 6,
          "confidence": "high",
          "population": "24 drivers (2025–2026)",
          "population_size": 24,
          "basis": "median teammate qualifying gap (%), sign inverted",
          "raw": {
            "teammate_gap_pct_median": -0.359,
            "teammate_gap_samples": 38,
            "teammate_h2h": "39-2",
            "q3_rate": 0.31,
            "pole_rate": 0,
            "front_row_rate": 0
          }
        },
        "race_result": {
          "label": "Race Result vs Teammate",
          "percentile": 90,
          "sample_size": 36,
          "min_sample": 6,
          "confidence": "high",
          "population": "24 drivers (2025–2026)",
          "population_size": 24,
          "basis": "share of races finishing ahead of teammate (one-car retirements count for the finisher)",
          "raw": {
            "teammate_race_h2h": "25-11",
            "avg_finish_delta_when_both_classified": 2.619
          }
        },
        "positions_gained": {
          "label": "Positions Gained",
          "percentile": 33,
          "sample_size": 31,
          "min_sample": 6,
          "confidence": "high",
          "population": "23 drivers (2025–2026)",
          "population_size": 23,
          "basis": "mean grid-to-finish gain above the expectation for that grid slot (classified finishes)",
          "raw": {
            "mean_positions_gained": 1.194,
            "expectation_adjusted": -0.895
          }
        },
        "finishing": {
          "label": "Finishing",
          "percentile": 85,
          "sample_size": 42,
          "min_sample": 8,
          "confidence": "high",
          "population": "23 drivers (2025–2026)",
          "population_size": 23,
          "basis": "classification rate minus teammate classification rate (same car); any retirement cause counts",
          "raw": {
            "classification_rate": 0.738,
            "teammate_classification_rate": 0.659,
            "retirements": 11
          }
        },
        "consistency": {
          "label": "Consistency",
          "percentile": 80,
          "sample_size": 38,
          "min_sample": 8,
          "confidence": "high",
          "population": "23 drivers (2025–2026)",
          "population_size": 23,
          "basis": "spread (std dev) of teammate qualifying gaps; lower spread ranks higher",
          "raw": {
            "teammate_gap_std_pct": 0.381,
            "finish_position_std": 4.239
          }
        },
        "scoring": {
          "label": "Team Points Share",
          "percentile": 83,
          "sample_size": 17,
          "min_sample": 6,
          "confidence": "medium",
          "population": "21 drivers (2025–2026)",
          "population_size": 21,
          "basis": "share of the team's points in events where the team scored",
          "raw": {
            "points": 63,
            "team_points": 96,
            "points_per_start": 1.5
          }
        },
        "street": {
          "label": "Street Circuits",
          "percentile": 93,
          "sample_size": 7,
          "min_sample": 3,
          "confidence": "low",
          "population": "23 drivers (2025–2026)",
          "population_size": 23,
          "basis": "teammate qualifying gap on street layouts relative to the driver's overall gap (positive = relatively stronger)",
          "raw": {
            "teammate_gap_pct_median": -0.761,
            "overall_gap_pct_median": -0.359
          }
        },
        "high_speed": {
          "label": "High-Speed Circuits",
          "percentile": 7,
          "sample_size": 13,
          "min_sample": 3,
          "confidence": "medium",
          "population": "23 drivers (2025–2026)",
          "population_size": 23,
          "basis": "teammate qualifying gap on high pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
          "raw": {
            "teammate_gap_pct_median": -0.202,
            "overall_gap_pct_median": -0.359
          }
        },
        "low_speed": {
          "label": "Low-Speed Circuits",
          "percentile": 93,
          "sample_size": 15,
          "min_sample": 3,
          "confidence": "medium",
          "population": "23 drivers (2025–2026)",
          "population_size": 23,
          "basis": "teammate qualifying gap on low pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
          "raw": {
            "teammate_gap_pct_median": -0.661,
            "overall_gap_pct_median": -0.359
          }
        }
      },
      "populated_dimensions": 9,
      "qualifies": true,
      "unavailable": {
        "starts": "Needs lap-1 positions; no licensed lap-by-lap source.",
        "defense": "Needs lap-by-lap position changes; not available.",
        "tyre_management": "Needs stint and compound data; not available.",
        "wet_weather": "Needs session weather observations; not available historically.",
        "late_race": "Needs lap times or lap positions; not available.",
        "race_pace": "Needs lap times; race classification is used for Race Result vs Teammate instead."
      },
      "version": "f1-dna-1.0.0",
      "as_of": "2026-11-01T12:30:52.377Z"
    },
    "career": {
      "driver_id": "fernando-alonso",
      "window": "career, all eras",
      "dimensions": {
        "qualifying": {
          "label": "Qualifying Pace",
          "percentile": 89,
          "sample_size": 291,
          "min_sample": 6,
          "confidence": "high",
          "population": "582 drivers (career, all eras)",
          "population_size": 582,
          "basis": "median teammate qualifying gap (%), sign inverted",
          "raw": {
            "teammate_gap_pct_median": -0.332,
            "teammate_gap_samples": 291,
            "teammate_h2h": "334-109",
            "q3_rate": 0.093,
            "pole_rate": 0.049,
            "front_row_rate": 0.09
          }
        },
        "race_result": {
          "label": "Race Result vs Teammate",
          "percentile": 93,
          "sample_size": 412,
          "min_sample": 6,
          "confidence": "high",
          "population": "539 drivers (career, all eras)",
          "population_size": 539,
          "basis": "share of races finishing ahead of teammate (one-car retirements count for the finisher)",
          "raw": {
            "teammate_race_h2h": "285-127",
            "avg_finish_delta_when_both_classified": 2.338
          }
        },
        "positions_gained": {
          "label": "Positions Gained",
          "percentile": 75,
          "sample_size": 359,
          "min_sample": 6,
          "confidence": "high",
          "population": "321 drivers (career, all eras)",
          "population_size": 321,
          "basis": "mean grid-to-finish gain above the expectation for that grid slot (classified finishes)",
          "raw": {
            "mean_positions_gained": 1.721,
            "expectation_adjusted": 0.784
          }
        },
        "finishing": {
          "label": "Finishing",
          "percentile": 60,
          "sample_size": 443,
          "min_sample": 8,
          "confidence": "high",
          "population": "375 drivers (career, all eras)",
          "population_size": 375,
          "basis": "classification rate minus teammate classification rate (same car); any retirement cause counts",
          "raw": {
            "classification_rate": 0.81,
            "teammate_classification_rate": 0.795,
            "retirements": 84
          }
        },
        "consistency": {
          "label": "Consistency",
          "percentile": 68,
          "sample_size": 291,
          "min_sample": 8,
          "confidence": "high",
          "population": "79 drivers (career, all eras)",
          "population_size": 79,
          "basis": "spread (std dev) of teammate qualifying gaps; lower spread ranks higher",
          "raw": {
            "teammate_gap_std_pct": 0.785,
            "finish_position_std": 4.464
          }
        },
        "scoring": {
          "label": "Team Points Share",
          "percentile": 97,
          "sample_size": 320,
          "min_sample": 6,
          "confidence": "high",
          "population": "290 drivers (career, all eras)",
          "population_size": 290,
          "basis": "share of the team's points in events where the team scored",
          "raw": {
            "points": 2400,
            "team_points": 3647,
            "points_per_start": 5.418
          }
        },
        "street": {
          "label": "Street Circuits",
          "percentile": 76,
          "sample_size": 49,
          "min_sample": 3,
          "confidence": "high",
          "population": "72 drivers (career, all eras)",
          "population_size": 72,
          "basis": "teammate qualifying gap on street layouts relative to the driver's overall gap (positive = relatively stronger)",
          "raw": {
            "teammate_gap_pct_median": -0.45,
            "overall_gap_pct_median": -0.332
          }
        },
        "high_speed": {
          "label": "High-Speed Circuits",
          "percentile": 37,
          "sample_size": 91,
          "min_sample": 3,
          "confidence": "high",
          "population": "78 drivers (career, all eras)",
          "population_size": 78,
          "basis": "teammate qualifying gap on high pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
          "raw": {
            "teammate_gap_pct_median": -0.326,
            "overall_gap_pct_median": -0.332
          }
        },
        "low_speed": {
          "label": "Low-Speed Circuits",
          "percentile": 63,
          "sample_size": 99,
          "min_sample": 3,
          "confidence": "high",
          "population": "80 drivers (career, all eras)",
          "population_size": 80,
          "basis": "teammate qualifying gap on low pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
          "raw": {
            "teammate_gap_pct_median": -0.352,
            "overall_gap_pct_median": -0.332
          }
        }
      },
      "populated_dimensions": 9,
      "qualifies": true,
      "unavailable": {
        "starts": "Needs lap-1 positions; no licensed lap-by-lap source.",
        "defense": "Needs lap-by-lap position changes; not available.",
        "tyre_management": "Needs stint and compound data; not available.",
        "wet_weather": "Needs session weather observations; not available historically.",
        "late_race": "Needs lap times or lap positions; not available.",
        "race_pace": "Needs lap times; race classification is used for Race Result vs Teammate instead."
      },
      "version": "f1-dna-1.0.0",
      "as_of": "2026-11-01T12:30:52.377Z"
    }
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "driver_dna",
    "feature": "f1_dna",
    "plan": "enterprise",
    "request_id": "req_fc6c09a6e8282b786a",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": true,
    "dna_version": "f1-dna-1.0.0",
    "derived_by": "PropBetEdge",
    "served_ms": 38,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/dna/constructor/alfa-romeo-sauber?season=2025200 · 6 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "constructor_id": "alfa-romeo-sauber",
    "seasons": {
      "2025": null
    }
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "constructor_dna",
    "feature": "f1_dna",
    "plan": "enterprise",
    "request_id": "req_5656298b00bf9b2967",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": true,
    "dna_version": "f1-dna-1.0.0",
    "derived_by": "PropBetEdge",
    "served_ms": 0,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/dna/circuit/hungaroring200 · 6 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "circuit_id": "hungaroring",
    "races_held": 41,
    "first_season": 1986,
    "last_season": 2026,
    "recent_races": 11,
    "race_laps": 70,
    "race_distance_km": 306,
    "lat": null,
    "lon": null,
    "opened": null,
    "pole_lap_speed_kmh": 207.496,
    "speed_class": "low",
    "pole_win_rate": 0.364,
    "front_row_win_rate": 0.636,
    "grid_finish_rho": 0.85,
    "mean_abs_position_change": 2.529,
    "attrition_rate": 0.05,
    "stops_per_car": 2,
    "sample": {
      "pole_races": 11,
      "rho_races": 11,
      "attrition_races": 11,
      "stop_races": 11
    },
    "winners": [
      {
        "season": 2026,
        "event_id": "2026-hungarian-grand-prix",
        "driver_id": "lando-norris",
        "constructor_id": "mclaren",
        "grid": 1
      },
      {
        "season": 2025,
        "event_id": "2025-hungarian-grand-prix",
        "driver_id": "lando-norris",
        "constructor_id": "mclaren",
        "grid": 3
      },
      {
        "season": 2024,
        "event_id": "2024-hungarian-grand-prix",
        "driver_id": "oscar-piastri",
        "constructor_id": "mclaren",
        "grid": 2
      },
      {
        "season": 2023,
        "event_id": "2023-hungarian-grand-prix",
        "driver_id": "max-verstappen",
        "constructor_id": "red-bull",
        "grid": 2
      },
      {
        "season": 2022,
        "event_id": "2022-hungarian-grand-prix",
        "driver_id": "max-verstappen",
        "constructor_id": "red-bull",
        "grid": 10
      },
      {
        "season": 2021,
        "event_id": "2021-hungarian-grand-prix",
        "driver_id": "esteban-ocon",
        "constructor_id": "alpine",
        "grid": 8
      },
      {
        "season": 2020,
        "event_id": "2020-hungarian-grand-prix",
        "driver_id": "lewis-hamilton",
        "constructor_id": "mercedes",
        "grid": 1
      },
      {
        "season": 2019,
        "event_id": "2019-hungarian-grand-prix",
        "driver_id": "lewis-hamilton",
        "constructor_id": "mercedes",
        "grid": 3
      },
      {
        "season": 2018,
        "event_id": "2018-hungarian-grand-prix",
        "driver_id": "lewis-hamilton",
        "constructor_id": "mercedes",
        "grid": 1
      },
      {
        "season": 2017,
        "event_id": "2017-hungarian-grand-prix",
        "driver_id": "sebastian-vettel",
        "constructor_id": "ferrari",
        "grid": 1
      }
    ],
    "top_drivers": [
      {
        "id": "lewis-hamilton",
        "wins": 8
      },
      {
        "id": "michael-schumacher",
        "wins": 4
      },
      {
        "id": "ayrton-senna",
        "wins": 3
      }
    ],
    "top_constructors": [
      {
        "id": "mclaren",
        "wins": 14
      },
      {
        "id": "williams",
        "wins": 7
      },
      {
        "id": "ferrari",
        "wins": 7
      }
    ],
    "dimensions": {
      "track_position": {
        "label": "Track Position Importance",
        "percentile": 27,
        "value": 0.607,
        "sample_size": 11,
        "confidence": "high",
        "population": "31 circuits with ≥2 races in the last 10 seasons",
        "basis": "mean of grid→finish rank correlation and pole conversion (last 10 seasons)"
      },
      "overtaking": {
        "label": "Overtaking / Position Change",
        "percentile": 27,
        "value": 2.529,
        "sample_size": 11,
        "confidence": "high",
        "population": "31 circuits with ≥2 races in the last 10 seasons",
        "basis": "median mean absolute grid-to-finish change of classified cars"
      },
      "high_speed_demand": {
        "label": "High-Speed Demand",
        "percentile": 16,
        "value": 207.496,
        "sample_size": 11,
        "confidence": "high",
        "population": "29 circuits with ≥2 races in the last 10 seasons",
        "basis": "pole-lap average speed (lap length ÷ fastest qualifying lap)"
      },
      "low_speed_demand": {
        "label": "Low-Speed Demand",
        "percentile": 84,
        "value": -207.496,
        "sample_size": 11,
        "confidence": "high",
        "population": "29 circuits with ≥2 races in the last 10 seasons",
        "basis": "inverse of pole-lap average speed"
      },
      "attrition": {
        "label": "Attrition",
        "percentile": 3,
        "value": 0.05,
        "sample_size": 11,
        "confidence": "high",
        "population": "31 circuits with ≥2 races in the last 10 seasons",
        "basis": "median share of starters not classified (any cause; safety-car data unavailable)"
      },
      "pit_load": {
        "label": "Observed Pit Stops",
        "percentile": 66,
        "value": 2,
        "sample_size": 11,
        "confidence": "high",
        "population": "31 circuits with ≥2 races in the last 10 seasons",
        "basis": "median pit stops per classified car (2014+; observed counts, not a tyre model)"
      }
    },
    "unavailable": {
      "straight_line_demand": "Needs speed-trap or full-throttle data.",
      "braking_demand": "Needs braking telemetry.",
      "medium_speed_demand": "Needs corner-speed telemetry.",
      "tyre_stress": "Needs Pirelli/tyre data; observed pit stops shown instead.",
      "safety_car_volatility": "Needs race-control (safety car) events; attrition shown instead.",
      "weather_volatility": "Needs historical weather observations.",
      "drs_zones": "No licensed source for DRS zone definitions.",
      "elevation_change": "Not sourced.",
      "direction": "Not sourced."
    },
    "version": "f1-dna-1.0.0",
    "as_of": "2026-11-01T12:30:52.377Z",
    "street": false
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "circuit_dna",
    "feature": "f1_dna",
    "plan": "enterprise",
    "request_id": "req_9476cd0c9ba58ae6ed",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": true,
    "dna_version": "f1-dna-1.0.0",
    "derived_by": "PropBetEdge",
    "served_ms": 3,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/fit/2026-united-states-grand-prix200 · 4 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "event_id": "2026-united-states-grand-prix",
    "circuit_id": "circuit-of-the-americas",
    "version": "f1-dna-1.0.0",
    "as_of": "2026-11-01T12:30:52.377Z",
    "disclaimer": "Descriptive fit of current Driver/Constructor DNA to this circuit’s profile. Not a prediction or betting signal.",
    "drivers": [
      {
        "driver_id": "max-verstappen",
        "constructor_id": "red-bull",
        "fit_score": 82,
        "components": [
          {
            "key": "qualifying_x_track_position",
            "label": "Qualifying × track position",
            "percentile": 98,
            "weight": 0.97,
            "why": "Track position importance 47th pct",
            "confidence": "high"
          },
          {
            "key": "gains_x_overtaking",
            "label": "Race gains × overtaking",
            "percentile": 98,
            "weight": 0.75,
            "why": "Position-change circuit 45th pct",
            "confidence": "high"
          },
          {
            "key": "driver_low_speed",
            "label": "Driver at low-speed circuits",
            "percentile": 63,
            "weight": 0.8,
            "why": "Low pole-lap speed",
            "confidence": "medium"
          }
        ],
        "strongest": [
          "qualifying_x_track_position",
          "gains_x_overtaking"
        ],
        "weakest": [
          "driver_low_speed",
          "car_qualifying"
        ],
        "confidence": "high",
        "circuit_history": {
          "starts": 11,
          "best_finish": 1,
          "avg_finish_vs_teammate": 3.429
        }
      },
      {
        "driver_id": "charles-leclerc",
        "constructor_id": "ferrari",
        "fit_score": 65,
        "components": [
          {
            "key": "qualifying_x_track_position",
            "label": "Qualifying × track position",
            "percentile": 73,
            "weight": 0.97,
            "why": "Track position importance 47th pct",
            "confidence": "high"
          },
          {
            "key": "gains_x_overtaking",
            "label": "Race gains × overtaking",
            "percentile": 85,
            "weight": 0.75,
            "why": "Position-change circuit 45th pct",
            "confidence": "high"
          },
          {
            "key": "driver_low_speed",
            "label": "Driver at low-speed circuits",
            "percentile": 37,
            "weight": 0.8,
            "why": "Low pole-lap speed",
            "confidence": "medium"
          }
        ],
        "strongest": [
          "car_qualifying",
          "gains_x_overtaking"
        ],
        "weakest": [
          "driver_low_speed",
          "car_low_speed"
        ],
        "confidence": "high",
        "circuit_history": {
          "starts": 8,
          "best_finish": 1,
          "avg_finish_vs_teammate": 1.333
        }
      },
      {
        "driver_id": "lewis-hamilton",
        "constructor_id": "ferrari",
        "fit_score": 65,
        "components": [
          {
            "key": "qualifying_x_track_position",
            "label": "Qualifying × track position",
            "percentile": 35,
            "weight": 0.97,
            "why": "Track position importance 47th pct",
            "confidence": "high"
          },
          {
            "key": "gains_x_overtaking",
            "label": "Race gains × overtaking",
            "percentile": 89,
            "weight": 0.75,
            "why": "Position-change circuit 45th pct",
            "confidence": "high"
          },
          {
            "key": "driver_low_speed",
            "label": "Driver at low-speed circuits",
            "percentile": 76,
            "weight": 0.8,
            "why": "Low pole-lap speed",
            "confidence": "medium"
          }
        ],
        "strongest": [
          "gains_x_overtaking",
          "car_qualifying"
        ],
        "weakest": [
          "qualifying_x_track_position",
          "car_low_speed"
        ],
        "confidence": "high",
        "circuit_history": {
          "starts": 14,
          "best_finish": 1,
          "avg_finish_vs_teammate": 1.545
        }
      }
    ]
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "circuit_fit",
    "feature": "f1_intelligence",
    "plan": "enterprise",
    "request_id": "req_55578085e504d39fe3",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": true,
    "dna_version": "f1-dna-1.0.0",
    "derived_by": "PropBetEdge",
    "served_ms": 1,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}
GET/v1/f1/matchups/fernando-alonso/nico-hulkenberg200 · 33 ms
{
  "data_source": "PropSports",
  "ok": true,
  "data": {
    "a": "fernando-alonso",
    "b": "nico-hulkenberg",
    "shared_events": 245,
    "same_team_events": 0,
    "race_comparable_events": 159,
    "race_excluded_events": 86,
    "race_ahead": [
      108,
      51
    ],
    "quali_comparable_events": 245,
    "quali_ahead": [
      129,
      116
    ],
    "grid_fallback_events": 0,
    "grid_ahead": [
      0,
      0
    ],
    "quali_unavailable_events": 0,
    "points": [
      1406,
      582
    ],
    "wins": [
      10,
      0
    ],
    "podiums": [
      42,
      1
    ],
    "dnfs": [
      49,
      47
    ],
    "first_season": 2010,
    "last_season": 2026,
    "by_season": {
      "2010": {
        "events": 19,
        "same_team": 0,
        "race_ahead": [
          12,
          2
        ],
        "race_comparable": 14,
        "quali_ahead": [
          15,
          4
        ],
        "quali_comparable": 19,
        "points": [
          252,
          22
        ]
      },
      "2012": {
        "events": 20,
        "same_team": 0,
        "race_ahead": [
          16,
          0
        ],
        "race_comparable": 16,
        "quali_ahead": [
          16,
          4
        ],
        "quali_comparable": 20,
        "points": [
          278,
          63
        ]
      },
      "2013": {
        "events": 19,
        "same_team": 0,
        "race_ahead": [
          15,
          1
        ],
        "race_comparable": 16,
        "quali_ahead": [
          14,
          5
        ],
        "quali_comparable": 19,
        "points": [
          242,
          51
        ]
      },
      "2014": {
        "events": 19,
        "same_team": 0,
        "race_ahead": [
          12,
          3
        ],
        "race_comparable": 15,
        "quali_ahead": [
          18,
          1
        ],
        "quali_comparable": 19,
        "points": [
          161,
          96
        ]
      },
      "2015": {
        "events": 18,
        "same_team": 0,
        "race_ahead": [
          1,
          4
        ],
        "race_comparable": 5,
        "quali_ahead": [
          1,
          17
        ],
        "quali_comparable": 18,
        "points": [
          11,
          52
        ]
      },
      "2016": {
        "events": 20,
        "same_team": 0,
        "race_ahead": [
          4,
          9
        ],
        "race_comparable": 13,
        "quali_ahead": [
          2,
          18
        ],
        "quali_comparable": 20,
        "points": [
          54,
          72
        ]
      },
      "2017": {
        "events": 19,
        "same_team": 0,
        "race_ahead": [
          2,
          3
        ],
        "race_comparable": 5,
        "quali_ahead": [
          4,
          15
        ],
        "quali_comparable": 19,
        "points": [
          17,
          43
        ]
      },
      "2018": {
        "events": 21,
        "same_team": 0,
        "race_ahead": [
          3,
          6
        ],
        "race_comparable": 9,
        "quali_ahead": [
          4,
          17
        ],
        "quali_comparable": 21,
        "points": [
          50,
          69
        ]
      },
      "2022": {
        "events": 2,
        "same_team": 0,
        "race_ahead": [
          1,
          0
        ],
        "race_comparable": 1,
        "quali_ahead": [
          2,
          0
        ],
        "quali_comparable": 2,
        "points": [
          2,
          0
        ]
      },
      "2023": {
        "events": 22,
        "same_team": 0,
        "race_ahead": [
          17,
          1
        ],
        "race_comparable": 18,
        "quali_ahead": [
          18,
          4
        ],
        "quali_comparable": 22,
        "points": [
          206,
          9
        ]
      },
      "2024": {
        "events": 24,
        "same_team": 0,
        "race_ahead": [
          13,
          7
        ],
        "race_comparable": 20,
        "quali_ahead": [
          15,
          9
        ],
        "quali_comparable": 24,
        "points": [
          70,
          41
        ]
      },
      "2025": {
        "events": 24,
        "same_team": 0,
        "race_ahead": [
          10,
          7
        ],
        "race_comparable": 17,
        "quali_ahead": [
          19,
          5
        ],
        "quali_comparable": 24,
        "points": [
          56,
          51
        ]
      },
      "2026": {
        "events": 18,
        "same_team": 0,
        "race_ahead": [
          2,
          8
        ],
        "race_comparable": 10,
        "quali_ahead": [
          1,
          17
        ],
        "quali_comparable": 18,
        "points": [
          7,
          13
        ]
      }
    },
    "recent": [
      {
        "event_id": "2026-united-states-grand-prix",
        "a": {
          "constructor_id": "aston-martin",
          "quali": 15,
          "grid": 12,
          "finish": 16,
          "status": "classified",
          "classified": true,
          "points": 0
        },
        "b": {
          "constructor_id": "audi",
          "quali": 12,
          "grid": 11,
          "finish": 11,
          "status": "classified",
          "classified": true,
          "points": 0
        },
        "same_team": false,
        "ahead": "b"
      },
      {
        "event_id": "2026-singapore-grand-prix",
        "a": {
          "constructor_id": "aston-martin",
          "quali": 17,
          "grid": 20,
          "finish": 16,
          "status": "classified",
          "classified": true,
          "points": 0
        },
        "b": {
          "constructor_id": "audi",
          "quali": 11,
          "grid": 10,
          "finish": 8,
          "status": "classified",
          "classified": true,
          "points": 6
        },
        "same_team": false,
        "ahead": "b"
      },
      {
        "event_id": "2026-bahrain-grand-prix-in-malaysia",
        "a": {
          "constructor_id": "aston-martin",
          "quali": 12,
          "grid": 12,
          "finish": 8,
          "status": "classified",
          "classified": true,
          "points": 4
        },
        "b": {
          "constructor_id": "audi",
          "quali": 17,
          "grid": 15,
          "finish": 11,
          "status": "classified",
          "classified": true,
          "points": 0
        },
        "same_team": false,
        "ahead": "a"
      }
    ],
    "teammates": null
  },
  "meta": {
    "sport": "f1",
    "contract": "f1-commercial-1.0.0",
    "data_source": "PropSports",
    "route": "matchup",
    "feature": "f1_intelligence",
    "plan": "enterprise",
    "request_id": "req_be246ebfd7687356d9",
    "projection_version": "16e2314bd13e32d2",
    "generated_at": "2026-11-01T12:30:55.974Z",
    "activated_at": "2026-11-01T12:32:24.389Z",
    "as_of": "2026-11-01T12:30:52.377Z",
    "current_season": 2026,
    "history_from": 1950,
    "derived": true,
    "dna_version": "f1-dna-1.0.0",
    "derived_by": "PropBetEdge",
    "served_ms": 27,
    "api_version": "2026-11-01",
    "product": "propsports-f1",
    "release": "test"
  }
}

13 Changelog

Contract history.

  • 2026-11-01 — V1.0.0 CONTRACTFirst published contract f1-commercial-1.0.0 (API version 2026-11-01): 19 data routes, keyless discovery, structured errors, X-RateLimit headers, the shared daily quota and a 600-per-minute burst limit.

Build on the Formula 1 API

Test-mode acceptance · not yet on sale. Explore the contract now; the store lists Formula 1 once it is on sale.

New API products