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
| Endpoint | Returns | When it changes |
|---|---|---|
GET /api/v1/indexes | The 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/latest | For 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}/settlements | Every 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}/products | The 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-record | Every 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.
| Close | Central | UTC | Pro Football 2026 Index | Pro Basketball 2026-27 Index | Pro Hockey 2026-27 Index | Pro Baseball 2026 Index | Pro Soccer 2026 Index |
|---|---|---|---|---|---|---|---|
| 2026-10-22 | 09:00 | 14:00 | No games the day before | Games the day before | Games the day before | No games the day before | Games the day before |
| 2026-10-23 | 09:00 | 14:00 | Games the day before | Games the day before | Games the day before | No games the day before | No games the day before |
| 2026-10-24 | 09:00 | 14:00 | No games the day before | Games the day before | Games the day before | Games the day before | No games the day before |
| 2026-10-25 | 09:00 | 14:00 | No games the day before | Games the day before | Games the day before | Games the day before | Games the day before |
| 2026-10-26 | 09:00 | 14:00 | Games the day before | Games the day before | Games the day before | No games the day before | Games the day before |
| 2026-10-27 | 09:00 | 14:00 | Games the day before | Games the day before | Games the day before | Games the day before | No games the day before |
| 2026-10-28 | 09:00 | 14:00 | No games the day before | Games the day before | Games the day before | Games the day before | No games the day before |
Publication calendar
| Index | Status | First value date | Launch date |
|---|---|---|---|
| Pro Football 2026 Index | Live | 2026-02-19 | — |
| Pro Basketball 2026-27 Index | Live | 2026-10-20 | — |
| Pro Hockey 2026-27 Index | Live | 2026-09-29 | — |
| Pro Baseball 2026 Index | Live | 2026-03-25 | 2026-09-30 |
| Pro Soccer 2026 Index | Live | 2026-02-21 | 2026-09-30 |
Pro Football 2026 expiries
| Expiry | Kind | Products | Last scheduled game | Settlement |
|---|---|---|---|---|
| After Week 1 | weekly | C | 2026-09-14 | 2026-09-15 09:00 CT |
| After Week 2 | weekly | C | 2026-09-21 | 2026-09-22 09:00 CT |
| After Week 3 | weekly | C | 2026-09-28 | 2026-09-29 09:00 CT |
| After Week 4 | weekly | C | 2026-10-05 | 2026-10-06 09:00 CT |
| After Week 4 | segment | B, C | 2026-10-05 | 2026-10-06 09:00 CT |
| After Week 5 | weekly | C | 2026-10-12 | 2026-10-13 09:00 CT |
| After Week 6 | weekly | C | 2026-10-19 | 2026-10-20 09:00 CT |
| After Week 7 | weekly | C | 2026-10-26 | 2026-10-27 09:00 CT |
| After Week 8 | weekly | C | 2026-11-02 | 2026-11-03 09:00 CT |
| After Week 9 | weekly | C | 2026-11-09 | 2026-11-10 09:00 CT |
| After Week 9 | segment | B, C | 2026-11-09 | 2026-11-10 09:00 CT |
| After Week 10 | weekly | C | 2026-11-16 | 2026-11-17 09:00 CT |
| After Week 11 | weekly | C | 2026-11-23 | 2026-11-24 09:00 CT |
| After Week 12 | weekly | C | 2026-11-30 | 2026-12-01 09:00 CT |
| After Week 13 | weekly | C | 2026-12-07 | 2026-12-08 09:00 CT |
| After Week 13 | segment | B, C | 2026-12-07 | 2026-12-08 09:00 CT |
| After Week 14 | weekly | C | 2026-12-14 | 2026-12-15 09:00 CT |
| After Week 15 | weekly | C | 2026-12-21 | 2026-12-22 09:00 CT |
| After Week 16 | weekly | C | 2026-12-28 | 2026-12-29 09:00 CT |
| After Week 17 | weekly | C | 2027-01-04 | 2027-01-05 09:00 CT |
| After Week 18 | weekly | C | 2027-01-10 | 2027-01-11 09:00 CT |
| After Week 18 | segment | B, C | 2027-01-10 | 2027-01-11 09:00 CT |
| After Round 1 | playoff | B, C | — | January 2027, 09:00 CT |
| After Round 2 | playoff | B, C | — | January 2027, 09:00 CT |
| After Round 3 | playoff | B, C | — | January 2027, 09:00 CT |
| After the title game | playoff | B, C | — | February 2027, 09:00 CT |
| Season end (after the title game) | season | A | — | 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.