> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polymarket.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get 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.


<Badge color="gray" size="md">Request Weight:</Badge>

<br />

<Badge color="gray" size="md">With order ID: **1**</Badge>

<br />

<Badge color="gray" size="md">Without order ID: **10**</Badge>


## OpenAPI

````yaml /api-spec/perps-openapi.json get /v1/account/orders
openapi: 3.0.3
info:
  title: Polymarket Perps HTTP API
  version: 1.0.0
  description: HTTP API for Polymarket perpetual trading system.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.perpetuals.polymarket.com
    description: Production Perps HTTP API
security: []
paths:
  /v1/account/orders:
    get:
      summary: Get Orders
      description: >
        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.
      operationId: getOrders
      parameters:
        - name: order_id
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/order_id'
        - name: client_order_id
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/coid'
        - name: instrument_id
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/iid'
        - name: start_timestamp
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/start_timestamp'
        - name: end_timestamp
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/end_timestamp'
      responses:
        '200':
          description: Orders response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrderData'
        '400':
          $ref: '#/components/responses/Error400Response'
        '401':
          $ref: '#/components/responses/Error401Response'
        '429':
          $ref: '#/components/responses/Error429Response'
        '500':
          $ref: '#/components/responses/Error500Response'
      security:
        - polymarket_proxy: []
          polymarket_secret: []
components:
  schemas:
    order_id:
      type: integer
      description: Order ID
    coid:
      type: string
      description: Client order ID
      minLength: 32
      maxLength: 32
      pattern: ^[0-9a-f]{32}$
      example: 550e8400e29b41d4a716446655440000
    iid:
      type: integer
      description: Instrument ID
      example: 1
    start_timestamp:
      type: integer
      description: Start timestamp in milliseconds
      example: 1767225600000
    end_timestamp:
      type: integer
      description: End timestamp in milliseconds
      example: 1767229200000
    OrderData:
      type: object
      required:
        - order_id
        - instrument_id
        - buy
        - price
        - quantity
        - tif
        - post_only
        - ro
        - status
        - resting_quantity
        - filled_quantity
        - created_timestamp
        - updated_timestamp
      properties:
        order_id:
          $ref: '#/components/schemas/oid'
        instrument_id:
          $ref: '#/components/schemas/iid'
        buy:
          $ref: '#/components/schemas/buy'
        price:
          $ref: '#/components/schemas/p'
        quantity:
          $ref: '#/components/schemas/qty'
        tif:
          $ref: '#/components/schemas/tif'
        post_only:
          $ref: '#/components/schemas/po'
        ro:
          $ref: '#/components/schemas/ro'
        resting_quantity:
          $ref: '#/components/schemas/rest'
        filled_quantity:
          $ref: '#/components/schemas/fill'
        status:
          $ref: '#/components/schemas/st'
        created_timestamp:
          $ref: '#/components/schemas/cts'
        updated_timestamp:
          $ref: '#/components/schemas/uts'
        client_order_id:
          $ref: '#/components/schemas/coid'
        tpsl:
          $ref: '#/components/schemas/TpSlOrderFields'
          description: >-
            Conditional-order fields. Present only when the order is a TP/SL
            conditional order — `null`/omitted for regular orders.
    oid:
      type: integer
      description: Order ID
      example: 1234567890
    buy:
      type: boolean
      description: Is buy
      example: true
    p:
      type: string
      description: Price
      example: '100.00'
    qty:
      type: string
      description: Quantity in no. of contracts
      example: '10.00'
    tif:
      type: string
      description: Time in force
      enum:
        - gtc
        - ioc
        - fok
    po:
      type: boolean
      description: Post only
      default: false
      example: false
    ro:
      type: boolean
      description: Reduce only
      example: false
      default: false
    rest:
      type: string
      description: Resting quantity
      example: '9.00'
    fill:
      type: string
      description: Filled quantity
      example: '1.00'
    st:
      type: string
      description: Order status
      example: open
    cts:
      type: integer
      description: Create timestamp in milliseconds
      example: 1767225600000
    uts:
      type: integer
      description: Update timestamp in milliseconds
      example: 1767225600000
    TpSlOrderFields:
      type: object
      description: TP/SL-specific fields surfaced alongside the regular order shape.
      required:
        - kind
        - scope
        - trp
      properties:
        kind:
          $ref: '#/components/schemas/kind'
        scope:
          $ref: '#/components/schemas/tr_scope'
        trp:
          $ref: '#/components/schemas/trp'
        parent_oid:
          $ref: '#/components/schemas/parent_oid'
        armed_qty:
          $ref: '#/components/schemas/qty'
          description: >-
            Quantity armed at attach time (OCO) or `"0"` for position-based
            (sized at trigger time).
        slip_bps:
          $ref: '#/components/schemas/slip_bps'
    Error400:
      title: Error400
      type: object
      required:
        - status
        - error
      properties:
        status:
          type: string
          enum:
            - err
        error:
          $ref: '#/components/schemas/error'
    Error401:
      title: Error401
      type: object
      required:
        - status
        - error
      properties:
        status:
          type: string
          enum:
            - err
        error:
          $ref: '#/components/schemas/error'
    Error429:
      title: Error429
      type: object
      required:
        - status
        - error
      properties:
        status:
          type: string
          enum:
            - err
        error:
          $ref: '#/components/schemas/error'
    Error500:
      title: Error500
      type: object
      required:
        - status
        - error
      properties:
        status:
          type: string
          enum:
            - err
        error:
          $ref: '#/components/schemas/error'
    kind:
      type: string
      description: Conditional order type (TakeProfit / StopLoss)
      enum:
        - tp
        - sl
    tr_scope:
      type: string
      description: >
        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"`).
      enum:
        - order
        - position
    trp:
      type: string
      description: Trigger price
      example: '110.00'
    parent_oid:
      type: integer
      description: >-
        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.
      example: 1234567890
    slip_bps:
      type: integer
      minimum: 0
      maximum: 10000
      description: >-
        Per-order market-trigger slippage cap in basis points. 0 = use the
        per-instrument default. Clamped to the instrument cap.
      example: 1000
    error:
      type: string
      description: >-
        Error identifier. For domain rejections and transport errors
        (`401`/`404`/`429`/`500`) this is a stable, machine-readable snake_case
        identifier that is part of the API contract and safe to branch on, e.g.
        `insufficient_margin`, `insufficient_balance`, `order_not_found`,
        `reduce_only_invalid`, `unauthorized`, `not_found`. For `400` it is a
        human-readable validation detail whose wording may change. See the Error
        handling guide for the domain identifiers. (Post-only / Fill-or-Kill
        outcomes are order statuses such as `post_only_rejected`, not
        rejections.)
      example: insufficient_margin
  responses:
    Error400Response:
      description: |
        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.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error400'
    Error401Response:
      description: >
        Unauthorized — missing or invalid `POLYMARKET-PROXY` /
        `POLYMARKET-SECRET`

        credentials. `error` is `unauthorized`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error401'
    Error429Response:
      description: >
        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).
      headers:
        Retry-After:
          description: >
            Whole seconds to wait before retrying. Present only on token-bucket

            rate-limit rejections (`ip_rate_limited` and `action_rate_limited`);
            a

            conservative estimate of when enough capacity will have refilled to

            admit the request. Absent on `open_orders_limit`, which is a
            capacity

            limit, not a rate limit — waiting does not free order slots; cancel

            resting orders or wait for fills instead.
          schema:
            type: integer
            example: 2
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error429'
    Error500Response:
      description: |
        Internal server error. `error` is `internal_error`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error500'
  securitySchemes:
    polymarket_proxy:
      type: apiKey
      name: POLYMARKET-PROXY
      in: header
      description: Proxy address
    polymarket_secret:
      type: apiKey
      name: POLYMARKET-SECRET
      in: header
      description: Correponding proxy secret

````