curl --request GET \
--url https://api.rook.pm/v1/relationships \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rook.pm/v1/relationships"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rook.pm/v1/relationships', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"items": [
{
"relationship_id": "rel_fed_cut_hold_exclusive",
"type": "EXCLUSIVITY",
"from_outcome_id": "out_fed_dec_2026_cut_yes",
"to_outcome_id": "out_fed_dec_2026_hold_yes",
"related_market_ids": [
"mkt_fed_dec_2026_cut",
"mkt_fed_dec_2026_hold"
],
"related_event_ids": [
"evt_pm_900001",
"evt_pm_900002"
],
"explanation": "The same Fed decision cannot both lower the policy rate and leave it unchanged. The two YES outcomes never pay together in these scenarios.",
"scenario_pins": [
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1"
}
],
"witnesses": [
{
"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"
}
]
}
],
"next_page_token": null,
"snapshot_id": "snap_rates_20261019_120000",
"as_of": "2026-10-19T12:00:00Z"
}Discover relationships
Discover markets connected by settlement logic to a known market, outcome or original venue event. Supply exactly one Rook selector: market_id, outcome_id or event_id. For a native ID, first obtain the Rook ID from /events, /markets or /markets:resolve.
Results explain relationships such as implication or exclusivity and identify the related market and original event IDs. Related markets may belong to different venue events. Discovery preserves both events and exposes their connection through families and relationships. Optional type and related_venue filters narrow results; family_id and scenario_version must be supplied together.
Use this endpoint to discover neighbors. To analyze a specific basket, explicitly select its outcomes and call /relationships:analyze; discovered neighbors are not automatically included in calculations.
curl --request GET \
--url https://api.rook.pm/v1/relationships \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rook.pm/v1/relationships"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rook.pm/v1/relationships', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"items": [
{
"relationship_id": "rel_fed_cut_hold_exclusive",
"type": "EXCLUSIVITY",
"from_outcome_id": "out_fed_dec_2026_cut_yes",
"to_outcome_id": "out_fed_dec_2026_hold_yes",
"related_market_ids": [
"mkt_fed_dec_2026_cut",
"mkt_fed_dec_2026_hold"
],
"related_event_ids": [
"evt_pm_900001",
"evt_pm_900002"
],
"explanation": "The same Fed decision cannot both lower the policy rate and leave it unchanged. The two YES outcomes never pay together in these scenarios.",
"scenario_pins": [
{
"family_id": "fam_fed_dec_2026",
"scenario_version": "1"
}
],
"witnesses": [
{
"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"
}
]
}
],
"next_page_token": null,
"snapshot_id": "snap_rates_20261019_120000",
"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.
Query Parameters
Rook canonical market ID. Resolve a venue_market_id first; related markets do not share an ID merely because they share a family. Narrows the selection to this resource. Opaque text identifier. Preserve its exact value.
1Rook outcome ID identifying one payout side, such as YES or NO. Opaque text identifier. Preserve its exact value.
1Rook ID for one original venue event. Its identity is scoped to venue and venue_event_id; related events remain separate. Narrows the selection to this resource. Opaque text identifier. Preserve its exact value.
1Rook family ID connecting related markets across original venue events. Narrows the selection to this resource.
1Filter by a supported settlement relationship type, such as implication or exclusivity.
EQUALITY, COMPLEMENT, IMPLICATION, EXCLUSIVITY, OVERLAP Only return discovered neighbors with listings on this venue; does not change the starting selection.
Published family scenario-catalog version. Use together with family_id to pin scenario meaning. Opaque text identifier. Preserve its exact value.
1Requested maximum items; service caps disclosed by coverage. Oversize requests fail explicitly.
x >= 1Opaque continuation; reuse the same filters/order. Cursor pins the original snapshot.