Skip to content

Positions and settlements

A position is a bet that is still running. A settlement is one that has finished, whether it was closed, the knockout was hit, or the game resolved. Both need a key with the read permission.

GET /positions

This endpoint returns the wallet's open bets. Optional filters are contractId, league and team, and paging uses limit and offset.

{
  "positions": [
    {
      "contractId": "MLB_CLE_DET_260813",
      "outcome": "DET",
      "contracts": 47,
      "entryPrice": "0.2113",
      "estimatedClosingPrice": "0.2640",
      "boosted": true,
      "costBasis": "9.93",
      "value": "12.41",
      "pnl": "2.48",
      "pnlPercent": "24.93",
      "maxPayout": "47.00",
      "knockout": "0.1180",
      "updatedAt": 1788495392000
    }
  ],
  "total": 1,
  "limit": 50,
  "offset": 0
}

entryPrice is the volume weighted average price of every fill that built the position, so placing several orders on the same outcome blends them rather than reporting the last order's price. estimatedClosingPrice is the price the position would close at now. boosted is true when the bet carries a boost, and knockout appears whenever the position is boosted. costBasis is the money actually spent to enter, reconstructed from trade history. value is what the bet is worth now, the posted collateral plus pnl, capped at maxPayout since a bet can never return more than that. pnlPercent is pnl as a percentage of the posted collateral.

GET /settlements

This endpoint returns the wallet's finished bets. Optional filters are contractId, team and type, and paging uses limit and offset.

type is one of the following.

Value Meaning
CLOSED The bet was sold before the game resolved.
KNOCKED_OUT A boosted bet hit its knockout.
SETTLEMENT The game resolved and the bet paid out or expired worthless.
{
  "settlements": [
    {
      "type": "SETTLEMENT",
      "contractId": "MLB_CLE_DET_260813",
      "outcome": "DET",
      "contracts": 47,
      "payout": "47.00",
      "tx": "0x3847b7e4f794232b020051767601f4bc65b22e3ce8164acd6451718bcc91956c",
      "timestamp": "2026-09-04T04:16:32Z"
    },
    {
      "type": "CLOSED",
      "contractId": "MLB_TEX_LAA_260813",
      "outcome": "TEX",
      "contracts": 20,
      "price": "0.5931",
      "pnl": "2.48",
      "tx": "0x1b42ab85ffe7b43d6102abc488e6f40161b9990757145628b841d8b93e46603d",
      "timestamp": "2026-09-04T02:11:07Z"
    }
  ],
  "total": 2,
  "limit": 50,
  "offset": 0
}

The two shapes differ. A SETTLEMENT row carries payout and no price or pnl, since the game resolved rather than being traded out. A CLOSED or KNOCKED_OUT row carries price and pnl and no payout.

A CLOSED or KNOCKED_OUT row appears only once the position is flat, so a partial knockout stays in GET /positions until the rest is closed. A SETTLEMENT row is different, it appears because the game resolved while the bet was still held.

A SETTLEMENT row is omitted when the position it belonged to cannot be reconstructed from the wallet's trade history, so this endpoint can under report older payouts. The rows come from two sources, the wallet's trade history and the onchain settlement history, merged and sorted together.