Settlement data
Kalshi and Polymarket each write their own rules for how a market resolves. This page covers the endpoint that puts both sets of rules side by side.
GET /v2/pairs/{market_id}/settlementreturns the identity and settlement view of one matched pair, with no price join. It carries whether the two venues' resolution rules line up, any disclosed risk in how they might diverge, the settlement text each venue publishes, and, once the market settles, a verdict on whether the venues agreed.
Why settlement terms need a side-by-side read
Two venues, two rulebooks. A postponed game might settle once a makeup is played on one venue while the other holds the contract open indefinitely. A forfeit can pay one side of the field on one book and split 50-50 on the other. Even an ordinary tie can catch a two-leg hold off guard if only one venue writes an explicit voiding clause into its rules. A cross-venue price gap only behaves like a clean spread if both legs actually pay out the same way, so the settlement block is what you read before deciding a gap is tradeable at all.
Fetching settlement data
The path accepts the same three id forms as GET /v2/pairs/{market_id}: the canonical dino_<uuid>, a bare UUID, or the market's slug once one is assigned. Slugs read cleaner in logs and dashboards than a raw UUID, and they resolve on this endpoint exactly like the id does.
curl -s "https://api.dino.markets/v2/pairs/nyy-vs-bos-2026-08-01/settlement" \
-H "Authorization: Bearer sk_live_..."{
"id": "dino_9b1e2c34-5f6a-4d7e-8b9c-0a1b2c3d4e5f",
"slug": "nyy-vs-bos-2026-08-01",
"title": "Nyy vs Bos",
"status": "resolving",
"settlement": {
"parity": false,
"risks": [
{
"event": "forfeit_unverified",
"severity": "high",
"kalshi": "silent",
"polymarket": "50_50_prestart",
"note": "Polymarket settles a pre-start forfeit 50-50; Kalshi's policy isn't stated. A held two-leg position may not return $1 on a forfeit."
}
],
"kalshi_text": "If the listed game is not completed, this market resolves according to the official league make-up game. If no make-up game is played this season, the market resolves NO.",
"poly_text": "This market resolves according to the official result of the game named in the title. If the game is postponed, this market stays open until the game is completed.",
"verdict": null
}
}Fields
| Field | Type | Meaning |
|---|---|---|
id / slug / title | string | Identity fields, unchanged from the pair's canonical Market object. |
status | string | open, resolving, closed, or settled. See Market status. |
settlement.parity | boolean | Whether the pair's complete internal risk set is empty as of this read. |
settlement.risks[] | array | Disclosed divergence points, each with an event, a severity of high or bounded, and a plain-language note. Cancellation events are filtered from this array server-side; see Signal for the full gate. |
settlement.kalshi_text / settlement.poly_text | string|null | The resolution rule each venue publishes for this market, read side by side. |
settlement.verdict | string|null | null until status is settled, then agree, diverge, or edge_case. |
What this endpoint will never return
The venues settle their own contracts. dino.markets is not a settlement authority for Kalshi or Polymarket, and this endpoint never carries a raw per-venue winner field or a Kalshi outcome relabeled as ours to state. What it publishes is each venue's own disclosed rule text next to the other, plus a verdict that says whether the two venues agreed, diverged, or landed in an edge case once both have settled. Read a market's own venue link for the binding resolution of any specific contract. See the Disclaimer for the full posture.
From an MCP client
The get_settlement tool mirrors this endpoint: identity plus the settlement block, no price join, and the same id/slug/UUID resolution as get_market. Available on any active key, Free included. See the MCP server for connection details.