Integration

One pull a day. Every value is published at the official close, 09:00 Central Time on the calendar day after any day with an official result. Nothing to install: JSON over HTTPS, no key. One request per index after each close is all a venue needs; index values never move between closes, so a venue reads once and holds the result until the next.

Endpoints

EndpointReturnsWhen it changes
GET /api/v1/indexesThe registry: every index with id, name, league, season, status, pool, maximum value per share, constituent count, first value date and launch date.When an index is added or its status changes.
GET /api/v1/indexes/{id}/settlements/latestFor one index: a summary per constituent (settled, unrealized, wins, ties, games remaining, next game, rungs credited, eliminated) and the most recent events with their hashes.At each official close with a result.
GET /api/v1/indexes/{id}/settlementsEvery event in the ledger for the index, in sequence, each with its hash and the hash before it.Append-only; grows at each close with a result.
GET /api/v1/indexes/{id}/settlements?constituent={TICKER}One constituent's summary and every event for it.Same.
GET /api/v1/indexes/{id}/productsThe index-linked products and the expiry calendar for the index, with the settlement date and time of each expiry. Published for Pro Football 2026 today.When the league publishes its postseason schedule, or a products specification version changes.
GET /api/v1/close-recordEvery official close for every live index: on time, late (with minutes and cause), missed, or no events.At each close.
GET /api/v1/indexes/{id}/reconciliation/{close}The second-source check for each close: status, checker_status, counts, the outcome for each new event, committed_at and late.At each close.

Index ids are stable for a season. The ledger id inside a response (ledger_index_id) is a frozen record identifier and never changes.

Reading a settlement

A constituent's settled value is the cash it has already earned from official results: a fixed amount per regular-season win (half for a tie or draw) plus any playoff rungs credited. unrealized is the maximum it can still earn: games remaining times the per-win amount, plus every rung not yet decided. For a club still alive, settled plus unrealized equals the maximum value per share less the per-win amount for every game it has lost, and half of that for every tie or draw. Across all constituents, settled plus unrealized equals the pool, fixed before the season.

GET /api/v1/indexes/pro-football-2026/settlements/latest, truncated for display:

{
  "as_of": "2026-10-20",
  "generated_at": "2026-10-22T14:56:01.398Z",
  "framework_version": "1.0",
  "methodology_version": "1.0",
  "methodology_version_deprecated_alias": "1.1.0",
  "ledger_contract_version": "ledger-1",
  "methodology_url": "https://majorleaguemarkets.com/methodology/pro-football-2026",
  "terms_url": "https://majorleaguemarkets.com/terms",
  "source": "Major League Markets",
  "disclaimer": "Settled values are calculated from official league results under the published methodology. Nothing on this site is an offer to sell or a solicitation to buy any financial instrument, and no product is currently available. Major League Markets is not affiliated with, endorsed by, or sponsored by any professional sports league, team, or player.",
  "deprecations": [
    {
      "field": "methodology_version",
      "old": "1.1.0 (top-level)",
      "new": "per-index methodology_version",
      "alias_removed_after": "2026-11-19"
    }
  ],
  "index_id": "pro-football-2026",
  "ledger_index_id": "nfl-2026",
  "summary": {
    "settled_total": 186,
    "unrealized_total": 514,
    "events_count": 94,
    "constituents": {
      "ARI": {
        "settled": 4,
        "unrealized": 88,
        "wins": 2,
        "ties": 0,
        "no_result_credits": 0,
        "games_remaining": 11,
        "eliminated": false,
        "rungs": [],
        "next_game": {
          "game_id": "2026_07_DEN_ARI",
          "game_date": "2026-10-25",
          "away": "DEN",
          "home": "ARI"
        }
      },
      "ATL": {
        "settled": 4,
        "unrealized": 88,
        "wins": 2,
        "ties": 0,
        "no_result_credits": 0,
        "games_remaining": 11,
        "eliminated": false,
        "rungs": [],
        "next_game": {
          "game_id": "2026_07_SF_ATL",
          "game_date": "2026-10-25",
          "away": "SF",
          "home": "ATL"
        }
      },
      "BAL": {
        "settled": 8,
        "unrealized": 88,
        "wins": 4,
        "ties": 0,
        "no_result_credits": 0,
        "games_remaining": 11,
        "eliminated": false,
        "rungs": [],
        "next_game": {
          "game_id": "2026_07_CIN_BAL",
          "game_date": "2026-10-25",
          "away": "CIN",
          "home": "BAL"
        }
      },
      ...
    }
  },
  "events": [
    {
      "seq": 45,
      "event_id": "nfl-2026:2026_03_NYJ_DET:win:DET",
      "constituent": "DET",
      "type": "win",
      "amount": 2,
      "cumulative": 4,
      "game_id": "2026_03_NYJ_DET",
      "game_date": "2026-09-27",
      "close_date": "2026-09-28",
      "result_ref": "DET 31, NYJ 24",
      "prev_hash": "0ee85ab249f0f5f216c13cf05edfd265019f3212f009411db7d2bebb5565d5a1",
      "hash": "580a0bfa169033db0770b71c7c938750a1aac54429942fcf4cb68f2b17b5ceff"
    },
    {
      "seq": 46,
      "event_id": "nfl-2026:2026_03_SEA_WAS:win:WAS",
      "constituent": "WAS",
      "type": "win",
      "amount": 2,
      "cumulative": 2,
      "game_id": "2026_03_SEA_WAS",
      "game_date": "2026-09-27",
      "close_date": "2026-09-28",
      "result_ref": "WAS 33, SEA 31",
      "prev_hash": "580a0bfa169033db0770b71c7c938750a1aac54429942fcf4cb68f2b17b5ceff",
      "hash": "f1d3a795731aa9e50be780d52c0d7bceea49db77bd8e381a8bce5a1845b4aa9d"
    },
    ...
  ]
}

Events, hashes and corrections

Every change to a settled value is an event: one row with the constituent, the type (win, tie, a rung name, or correction), the amount, the cumulative value after it, the game or round it comes from, the result as recorded, the close it posted at, and two hashes. prev_hash is the hash of the event before it and hash covers this event and prev_hash, so the ledger is a chain anyone can verify from the first event.

A result the league changes after a close is never edited. If a credited result is withdrawn, a correction event with a negative amount posts at the next close; its result_ref reads "correction of" followed by the id of the event it reverses. If a result is added or restored, it posts as an ordinary event at the first close it is eligible for. A contract that settled on an earlier close is not reopened; a correction applies from the close it posts at.

GET /api/v1/indexes/pro-football-2026/settlements?constituent=KC, truncated for display:

{
  "as_of": "2026-10-20",
  "generated_at": "2026-10-22T14:56:01.398Z",
  "framework_version": "1.0",
  "methodology_version": "1.0",
  "methodology_version_deprecated_alias": "1.1.0",
  "ledger_contract_version": "ledger-1",
  "methodology_url": "https://majorleaguemarkets.com/methodology/pro-football-2026",
  "terms_url": "https://majorleaguemarkets.com/terms",
  "source": "Major League Markets",
  "disclaimer": "Settled values are calculated from official league results under the published methodology. Nothing on this site is an offer to sell or a solicitation to buy any financial instrument, and no product is currently available. Major League Markets is not affiliated with, endorsed by, or sponsored by any professional sports league, team, or player.",
  "deprecations": [
    {
      "field": "methodology_version",
      "old": "1.1.0 (top-level)",
      "new": "per-index methodology_version",
      "alias_removed_after": "2026-11-19"
    }
  ],
  "index_id": "pro-football-2026",
  "ledger_index_id": "nfl-2026",
  "constituent": "KC",
  "summary": {
    "settled": 10,
    "unrealized": 90,
    "wins": 5,
    "ties": 0,
    "no_result_credits": 0,
    "games_remaining": 12,
    "eliminated": false,
    "rungs": [],
    "next_game": {
      "game_id": "2026_07_KC_SEA",
      "game_date": "2026-10-25",
      "away": "KC",
      "home": "SEA"
    }
  },
  "events": [
    {
      "seq": 16,
      "event_id": "nfl-2026:2026_01_DEN_KC:win:KC",
      "constituent": "KC",
      "type": "win",
      "amount": 2,
      "cumulative": 2,
      "game_id": "2026_01_DEN_KC",
      "game_date": "2026-09-14",
      "close_date": "2026-09-15",
      "result_ref": "KC 31, DEN 10",
      "prev_hash": "b5bfc797301ce62ddc5bc97b61d731db32284771d78c4c43e2e782b39cdf1367",
      "hash": "0b28997553b14b2676c818d47c26e2127478bd80e0b88e3cdf8b49e7db4b0f8b"
    },
    {
      "seq": 22,
      "event_id": "nfl-2026:2026_02_IND_KC:win:KC",
      "constituent": "KC",
      "type": "win",
      "amount": 2,
      "cumulative": 4,
      "game_id": "2026_02_IND_KC",
      "game_date": "2026-09-20",
      "close_date": "2026-09-21",
      "result_ref": "KC 33, IND 30",
      "prev_hash": "f37d26f4cbff54ca70997967e88cfb7f58bc04361d1f073017d5742509dbc858",
      "hash": "50a63cd6442aa697dde01fec8eb6aeee07fd840b1ebaaab1db41f10629134553"
    },
    ...
  ]
}

No correction has been needed to date; this is the shape one would take.

{
  "seq": 95,
  "event_id": "example:nfl-2026:2026_01_DEN_KC:win:KC:correction:1",
  "constituent": "KC",
  "type": "correction",
  "amount": -2,
  "cumulative": 8,
  "game_id": "2026_01_DEN_KC",
  "game_date": "2026-09-14",
  "close_date": "2026-10-21",
  "result_ref": "correction of nfl-2026:2026_01_DEN_KC:win:KC",
  "corrects_event_id": "nfl-2026:2026_01_DEN_KC:win:KC",
  "reason": "Example only.",
  "prev_hash": "9d938b4807fba7e6cf94ce9f7be542e832f76c55e2bfeb849d137643d512d4af",
  "hash": "ff920469c4109489e32ea7ac4e3a0f59a933834a0a82c65a7959184c9ea5eec4"
}

Close schedule

The official close is 09:00 Central Time on the calendar day after any day with an official result (T+1). A game dated D posts at the close on D+1. The close runs at 09:00 Central whether or not clocks have changed; in UTC that is 14:00 during Central Daylight Time and 15:00 during Central Standard Time. A venue should read after 09:30 Central and treat the as_of field as the close it holds.

CloseCentralUTCPro Football 2026 IndexPro Basketball 2026-27 IndexPro Hockey 2026-27 IndexPro Baseball 2026 IndexPro Soccer 2026 Index
2026-10-2209:0014:00No games the day beforeGames the day beforeGames the day beforeNo games the day beforeGames the day before
2026-10-2309:0014:00Games the day beforeGames the day beforeGames the day beforeNo games the day beforeNo games the day before
2026-10-2409:0014:00No games the day beforeGames the day beforeGames the day beforeGames the day beforeNo games the day before
2026-10-2509:0014:00No games the day beforeGames the day beforeGames the day beforeGames the day beforeGames the day before
2026-10-2609:0014:00Games the day beforeGames the day beforeGames the day beforeNo games the day beforeGames the day before
2026-10-2709:0014:00Games the day beforeGames the day beforeGames the day beforeGames the day beforeNo games the day before
2026-10-2809:0014:00No games the day beforeGames the day beforeGames the day beforeGames the day beforeNo games the day before

Publication calendar

IndexStatusFirst value dateLaunch date
Pro Football 2026 IndexLive2026-02-19—
Pro Basketball 2026-27 IndexLive2026-10-20—
Pro Hockey 2026-27 IndexLive2026-09-29—
Pro Baseball 2026 IndexLive2026-03-252026-09-30
Pro Soccer 2026 IndexLive2026-02-212026-09-30

Pro Football 2026 expiries

ExpiryKindProductsLast scheduled gameSettlement
After Week 1weeklyC2026-09-142026-09-15 09:00 CT
After Week 2weeklyC2026-09-212026-09-22 09:00 CT
After Week 3weeklyC2026-09-282026-09-29 09:00 CT
After Week 4weeklyC2026-10-052026-10-06 09:00 CT
After Week 4segmentB, C2026-10-052026-10-06 09:00 CT
After Week 5weeklyC2026-10-122026-10-13 09:00 CT
After Week 6weeklyC2026-10-192026-10-20 09:00 CT
After Week 7weeklyC2026-10-262026-10-27 09:00 CT
After Week 8weeklyC2026-11-022026-11-03 09:00 CT
After Week 9weeklyC2026-11-092026-11-10 09:00 CT
After Week 9segmentB, C2026-11-092026-11-10 09:00 CT
After Week 10weeklyC2026-11-162026-11-17 09:00 CT
After Week 11weeklyC2026-11-232026-11-24 09:00 CT
After Week 12weeklyC2026-11-302026-12-01 09:00 CT
After Week 13weeklyC2026-12-072026-12-08 09:00 CT
After Week 13segmentB, C2026-12-072026-12-08 09:00 CT
After Week 14weeklyC2026-12-142026-12-15 09:00 CT
After Week 15weeklyC2026-12-212026-12-22 09:00 CT
After Week 16weeklyC2026-12-282026-12-29 09:00 CT
After Week 17weeklyC2027-01-042027-01-05 09:00 CT
After Week 18weeklyC2027-01-102027-01-11 09:00 CT
After Week 18segmentB, C2027-01-102027-01-11 09:00 CT
After Round 1playoffB, C—January 2027, 09:00 CT
After Round 2playoffB, C—January 2027, 09:00 CT
After Round 3playoffB, C—January 2027, 09:00 CT
After the title gameplayoffB, C—February 2027, 09:00 CT
Season end (after the title game)seasonA—February 2027, 09:00 CT

What Major League Markets commits to

  • Publish every live index at the official close, 09:00 Central Time, T+1.
  • Check every new result against a second, independent source before it posts, and publish the outcome of that check with the close.
  • Never restate a published close. Errors are corrected forward as dated correction events.
  • Record every close, on time or late, in the public close record with its cause.
  • Lock each methodology for the season once the season begins; announce any change outside a season at least seven days before it takes effect.
  • Keep the API shape stable within a version; announce a field change with a dated deprecation entry in the envelope at least 30 days before removal.

Index Data is provided under the Index Data Terms. Commercial use, redistribution and settlement require a license.

Settled values are calculated from official league results under the published methodology.

Nothing on this site is an offer to sell or a solicitation to buy any financial instrument, and no product is currently available. Major League Markets is not a sportsbook.

Major League Markets is not affiliated with, endorsed by, or sponsored by any professional sports league, team, or player.