curl --request POST \
--url https://api.rook.pm/v1/payouts:calculate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"selection": [
{
"outcome_id": "out_fed_dec_2026_cut_yes"
},
{
"outcome_id": "out_fed_dec_2026_hold_yes"
}
]
}
'import requests
url = "https://api.rook.pm/v1/payouts:calculate"
payload = { "selection": [{ "outcome_id": "out_fed_dec_2026_cut_yes" }, { "outcome_id": "out_fed_dec_2026_hold_yes" }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
selection: [
{outcome_id: 'out_fed_dec_2026_cut_yes'},
{outcome_id: 'out_fed_dec_2026_hold_yes'}
]
})
};
fetch('https://api.rook.pm/v1/payouts:calculate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"matrices": [
{
"scenario_columns": [
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1",
"scenario_id": "scn_cut"
},
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1",
"scenario_id": "scn_hold"
},
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1",
"scenario_id": "scn_hike"
}
],
"rows": [
{
"outcome_id": "out_fed_dec_2026_cut_yes",
"listing_id": "lst_pm_fed_dec_2026_cut_yes",
"payout_currency": "USDC",
"payout_unit": "1",
"values": [
"1",
"0",
"0"
]
},
{
"outcome_id": "out_fed_dec_2026_hold_yes",
"payout_currency": "USDC",
"payout_unit": "1",
"values": [
"0",
"1",
"0"
]
}
],
"total_column_count": 3,
"representation": "CUT_HOLD_HIKE"
}
],
"next_page_token": null,
"coverage": {
"complete": true,
"submitted_count": 2,
"supported_count": 2,
"items": [
{
"input_reference": "out_fed_dec_2026_cut_yes",
"outcome_id": "out_fed_dec_2026_cut_yes",
"status": "SUPPORTED",
"family_ids": [
"fam_fed_dec_2026"
]
},
{
"input_reference": "out_fed_dec_2026_hold_yes",
"outcome_id": "out_fed_dec_2026_hold_yes",
"status": "SUPPORTED",
"family_ids": [
"fam_fed_dec_2026"
]
}
]
},
"versions": {
"market_versions": [
{
"market_id": "mkt_fed_dec_2026_cut",
"version": "1"
},
{
"market_id": "mkt_fed_dec_2026_hold",
"version": "1"
}
],
"mapping_version": "1",
"scenario_pins": [
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1"
}
],
"as_of": "2026-10-19T12:00:00Z"
}
}Calculate payouts
Return the exact per-unit terminal payout of each selected outcome across settlement scenarios. Supply selection using Rook outcome or listing IDs. Optionally provide scenario references from /scenarios; omit them to retrieve all applicable columns under returned family/version pins.
Each matrix contains ordered scenario_columns and payout rows for only the requested outcomes. Read values[i] against scenario_columns[i], with the row’s currency and payout unit. Cross-family Combo cases use compatible joint scenario references rather than unrelated row indices.
Use this endpoint to answer when a market pays or to apply your own exact quantity arithmetic. For portfolio totals and candidate comparisons, use /evaluations:run. Values preserve exact decimals or rational fractions. Pagination continues columns with unchanged selection and pins; unsupported coverage is rejected or labeled according to require_complete_coverage.
curl --request POST \
--url https://api.rook.pm/v1/payouts:calculate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"selection": [
{
"outcome_id": "out_fed_dec_2026_cut_yes"
},
{
"outcome_id": "out_fed_dec_2026_hold_yes"
}
]
}
'import requests
url = "https://api.rook.pm/v1/payouts:calculate"
payload = { "selection": [{ "outcome_id": "out_fed_dec_2026_cut_yes" }, { "outcome_id": "out_fed_dec_2026_hold_yes" }] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
selection: [
{outcome_id: 'out_fed_dec_2026_cut_yes'},
{outcome_id: 'out_fed_dec_2026_hold_yes'}
]
})
};
fetch('https://api.rook.pm/v1/payouts:calculate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"matrices": [
{
"scenario_columns": [
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1",
"scenario_id": "scn_cut"
},
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1",
"scenario_id": "scn_hold"
},
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1",
"scenario_id": "scn_hike"
}
],
"rows": [
{
"outcome_id": "out_fed_dec_2026_cut_yes",
"listing_id": "lst_pm_fed_dec_2026_cut_yes",
"payout_currency": "USDC",
"payout_unit": "1",
"values": [
"1",
"0",
"0"
]
},
{
"outcome_id": "out_fed_dec_2026_hold_yes",
"payout_currency": "USDC",
"payout_unit": "1",
"values": [
"0",
"1",
"0"
]
}
],
"total_column_count": 3,
"representation": "CUT_HOLD_HIKE"
}
],
"next_page_token": null,
"coverage": {
"complete": true,
"submitted_count": 2,
"supported_count": 2,
"items": [
{
"input_reference": "out_fed_dec_2026_cut_yes",
"outcome_id": "out_fed_dec_2026_cut_yes",
"status": "SUPPORTED",
"family_ids": [
"fam_fed_dec_2026"
]
},
{
"input_reference": "out_fed_dec_2026_hold_yes",
"outcome_id": "out_fed_dec_2026_hold_yes",
"status": "SUPPORTED",
"family_ids": [
"fam_fed_dec_2026"
]
}
]
},
"versions": {
"market_versions": [
{
"market_id": "mkt_fed_dec_2026_cut",
"version": "1"
},
{
"market_id": "mkt_fed_dec_2026_hold",
"version": "1"
}
],
"mapping_version": "1",
"scenario_pins": [
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1"
}
],
"as_of": "2026-10-19T12:00:00Z"
}
}Authorizations
Proposed server-to-server API key. No client request HMAC signing scheme is specified.
Headers
Caller correlation reference; not an idempotency guarantee.
Body
One or more explicitly selected outcome/listing references; no rows for unrequested instruments.
1Supply exactly one outcome_id or listing_id; never both.
- Option 1
- Option 2
Show child attributes
Show child attributes
Optional single-family references or compatible cross-family tuples selecting columns; omit for all applicable columns.
1- Option 1
- Option 2
Show child attributes
Show child attributes
Optional immutable family/version pins; must agree with explicit scenario references.
Show child attributes
Show child attributes
True rejects missing selected payout interpretations; false returns scoped coverage and supported rows.
Requested maximum scenario columns per page; proposed default 50, subject to disclosed service bound.
x >= 1Continuation bound to the same selection, filters and pinned versions; no input changes between pages.