---
title: "Get Orders"
method: GET
path: "/portfolio/orders"
tags: ["orders"]
---

# Get Orders

`GET /portfolio/orders`

## Request

- Base URL: `https://external-api.kalshi.com/trade-api/v2`
- URL: `https://external-api.kalshi.com/trade-api/v2/portfolio/orders`
- Auth: API key in header `KALSHI-ACCESS-KEY` and API key in header `KALSHI-ACCESS-SIGNATURE` and API key in header `KALSHI-ACCESS-TIMESTAMP`

Restricts the response to orders that have a certain status: resting, canceled, or executed.
Orders that have been canceled or fully executed before the historical cutoff are only available via `GET /historical/orders`. Resting orders will always be available through this endpoint. See [Historical Data](https://docs.kalshi.com/getting_started/historical_data) for details.

## Query parameters

- `ticker` string
- `event_ticker` string
- `min_ts` integer
- `max_ts` integer
- `status` string
- `limit` integer
- `cursor` string
- `subaccount` integer
- `exchange_index` integer

## Response `200`

Orders retrieved successfully

- GetOrdersResponse
  - `orders` Order[], required
    - `order_id` string, required
    - `user_id` string, required: Unique identifier for users
    - `client_order_id` string, required
    - `ticker` string, required
    - `side` 'yes' | 'no': Deprecated. Use `outcome_side` (or `book_side`) instead. See [Order direction](/getting_started/order_direction). This field will not be removed before May 14, 2026.
    - `action` 'buy' | 'sell': Deprecated. Use `outcome_side` (or `book_side`) instead. See [Order direction](/getting_started/order_direction). This field will not be removed before May 14, 2026.
    - `outcome_side` 'yes' | 'no', required: The outcome side this order is positioned for. buy-yes and sell-no produce 'yes'; buy-no and sell-yes produce 'no'. `outcome_side` describes directional exposure only; it does not change the order's price. An order at price `p` with `outcome_side=no` is matched by an order at the same price `p` with `outcome_side=yes` — both parties trade at the same price, just on opposite directions. `outcome_side` and `book_side` will become the canonical way to determine order direction. The legacy `action`, `side`, and `is_yes` fields will be deprecated in a future release — please migrate to these new fields.
    - `book_side` 'bid' | 'ask', required: Side of the book for an order or trade. For event markets, this refers to the YES leg only: `bid` means buy YES, `ask` means sell YES. (Selling YES is economically equivalent to buying NO at `1 - price`, but this endpoint quotes everything from the YES side.)
    - `type` 'limit' | 'market', required
    - `status` 'resting' | 'canceled' | 'executed', required: The status of an order
    - `yes_price_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `no_price_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `fill_count_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
    - `remaining_count_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
    - `initial_count_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
    - `taker_fill_cost_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `maker_fill_cost_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `taker_fees_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `maker_fees_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
    - `expiration_time` string, date-time, nullable
    - `created_time` string, date-time, nullable
    - `last_update_time` string, date-time, nullable: The last update to an order (modify, cancel, fill)
    - `self_trade_prevention_type` 'taker_at_cross' | 'maker': The self-trade prevention type for orders. `taker_at_cross` cancels the taker order when it would trade against another order from the same user; execution stops and any partial fills already matched are executed. `maker` cancels the resting maker order and continues matching.
    - `order_group_id` string, nullable: The order group this order is part of
    - `cancel_order_on_pause` boolean: If this flag is set to true, the order will be canceled if the order is open and trading on the exchange is paused for any reason.
    - `subaccount_number` integer, nullable: Subaccount number (0 for primary, 1-63 for subaccounts).
    - `exchange_index` integer: Identifier for an exchange shard.
  - `cursor` string, required

## Other responses

- `400`: Bad request - invalid input
- `401`: Unauthorized - authentication required
- `500`: Internal server error

## Changes

- **2026-10-16** `bd0c218a65b7`: 1 warning
  - for the `query` request parameter `subaccount`, the min was set to `0.00`
- **2026-08-15** `1369596f944a`: 1 info
  - added the new optional `query` request parameter `exchange_index`
- **2026-07-31** `a07481be8bf9`: 3 warning
  - removed the optional property `service` from the response with the `400` status
  - removed the optional property `service` from the response with the `401` status
  - removed the optional property `service` from the response with the `500` status
- **2026-07-13** `a671b3e77f35`: 2 breaking
  - the response property `orders/items/action` became optional for the status `200`
  - the response property `orders/items/side` became optional for the status `200`
- **2026-05-18** `7e31fc4590e0`: 5 info
  - added the optional property `orders/items/exchange_index` to the response with the `200` status
  - response property `orders/items/action` deprecated
  - response property `orders/items/side` deprecated
  - added the required property `orders/items/book_side` to the response with the `200` status
  - …1 more

[Operation history](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/changes/portfolio/orders/get.md)

---

[API](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints.md) - [All operations](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/revisions/e6691cdd1915?raw)
