portfolio

Returns unsettled positions by default. Set settlement_status=settled to page through settled positions that are still in the live data set, or settlement_status=all for both live states. Positions already archived are available via GET /historical/positions. Settled and all-state positions are paginated by event ticker to keep large histories bounded. Cursors are specific to the selected settlement status. count_filter restricts positions to those with a non-zero position or total traded count. Registered partners may also use a user OAuth access token with the explicitly granted read::compliance_partner scope.

get/portfolio/positions

Request

  • Base URL
    https://external-api.kalshi.com/trade-api/v2
  • URL
    https://external-api.kalshi.com/trade-api/v2/portfolio/positions
  • Auth
    • API key in header KALSHI-ACCESS-KEY and API key in header KALSHI-ACCESS-SIGNATURE and API key in header KALSHI-ACCESS-TIMESTAMP
    • or HTTP bearer

Query parameters

cursorstring

The Cursor represents a pointer to the next page of records in the pagination. Use the value returned from the previous response to get the next page.

limitinteger

Parameter to specify the number of results per page. Defaults to 100.

count_filterstring

Restricts the positions to those with any of following fields with non-zero values, as a comma separated list. The following values are accepted - position, total_traded

settlement_status'unsettled' | 'settled' | 'all'

Return unsettled positions by default, settled positions that have not yet been archived, or all positions in the live data set.

tickerstring

Filter by market ticker

event_tickerstring

Event ticker to filter by. Only a single event ticker is supported.

subaccountinteger

Subaccount number (0 for primary, 1-63 for subaccounts). Defaults to 0. Subaccount-restricted API keys default to their locked subaccount and must omit this parameter or pass their locked subaccount.

exchange_indexinteger

Filter results by exchange shard. Omit to return results from all exchange shards.

Response

Positions retrieved successfully

cursorstring

The Cursor represents a pointer to the next page of records in the pagination. Use the value returned here in the cursor query parameter for this end-point to get the next page containing limit records. An empty value of this field indicates there is no next page.

Example response

{
  "market_positions": [
    {
      "total_traded_dollars": "0.5600",
      "position_fp": "10.00",
      "market_exposure_dollars": "0.5600",
      "realized_pnl_dollars": "0.5600",
      "fees_paid_dollars": "0.5600"
    }
  ],
  "event_positions": [
    {
      "total_cost_dollars": "0.5600",
      "total_cost_shares_fp": "10.00",
      "event_exposure_dollars": "0.5600",
      "realized_pnl_dollars": "0.5600",
      "fees_paid_dollars": "0.5600"
    }
  ]
}

Changes