---
title: "Get Orders"
method: GET
path: "/v1/account/orders"
---

# Get Orders

`GET /v1/account/orders`

Get historical order snapshots for the authenticated account from the order history database.
Returns the latest known state for each matching order, including accepted, open, partial,
filled, and cancelled orders. For currently resting orders only, use Get Open Orders.
Maximum of 100 entries returned per request.

## Query parameters

- `order_id` integer — Order ID
- `client_order_id` string — Client order ID
- `instrument_id` integer — Instrument ID
- `start_timestamp` integer — Start timestamp in milliseconds
- `end_timestamp` integer — End timestamp in milliseconds

## Response `200`

Orders response.

- OrderData[]
  - `order_id` integer, required — Order ID
  - `instrument_id` integer, required — Instrument ID
  - `buy` boolean, required — Is buy
  - `price` string, required — Price
  - `quantity` string, required — Quantity in no. of contracts
  - `tif` 'gtc' | 'ioc' | 'fok', required — Time in force
  - `post_only` boolean, required — Post only
  - `ro` boolean, required — Reduce only
  - `resting_quantity` string, required — Resting quantity
  - `filled_quantity` string, required — Filled quantity
  - `status` string, required — Order status
  - `created_timestamp` integer, required — Create timestamp in milliseconds
  - `updated_timestamp` integer, required — Update timestamp in milliseconds
  - `client_order_id` string — Client order ID
  - `tpsl` TpSlOrderFields — TP/SL-specific fields surfaced alongside the regular order shape.
    - `kind` 'tp' | 'sl', required — Conditional order type (TakeProfit / StopLoss)
    - `scope` 'order' | 'position', required — How the conditional order sizes itself. - `order` - child of a parent entry (bracket / OCO ladder). Quantity is required. - `position` - attached to an open position. v1 always closes the full position (`qty` must be `"0"`).
    - `trp` string, required — Trigger price
    - `parent_oid` integer — Parent entry order id. Optional — omit it (do not send `0`) when the parent is created in the same request (inline `CreateOrder.tpsl` or `CreateTpSlArgs.parent`); the gateway auto-wires the child to it. Set it only to attach an order-scoped leg to an existing resting order. Inline `CreateOrder.tpsl` rejects a non-zero value; position-scoped legs carry no parent.
    - `armed_qty` string — Quantity in no. of contracts
    - `slip_bps` integer — Per-order market-trigger slippage cap in basis points. 0 = use the per-instrument default. Clamped to the instrument cap.

## Other responses

- `400` — Bad request — the request was malformed or failed validation (bad query parameters, unparseable body, invalid signature, or a domain pre-check). The `error` field is a human-readable validation detail.
- `401` — Unauthorized — missing or invalid `POLYMARKET-PROXY` / `POLYMARKET-SECRET` credentials. `error` is `unauthorized`.
- `429` — Too Many Requests. `error` distinguishes the limit that was hit: `ip_rate_limited` (per-IP token bucket), `action_rate_limited` (per-account action rate), or `open_orders_limit` (resting open-order cap).
- `500` — Internal server error. `error` is `internal_error`.

---

[API](https://skmtc.net/polymarket/apis/polymarket-perps-http-api.md) · [All operations](https://skmtc.net/polymarket/apis/polymarket-perps-http-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/polymarket/polymarket-perps-http-api/versions/04930a2ca433/schema)
