---
title: "List Active Orders"
method: POST
path: "/v1/orders"
tags: ["Orders"]
---

# List Active Orders

`POST /v1/orders`

## Request

- Base URL: `https://api.gemini.com`
- URL: `https://api.gemini.com/v1/orders`
- Auth: API key in header `X-GEMINI-APIKEY` and API key in header `X-GEMINI-SIGNATURE` and API key in header `X-GEMINI-PAYLOAD`

<div class="p-4 text-sm section-icon section-info rounded-sm" role="alert">
  <div class="flex">
     <svg
        view-box="0 0 24 24"
      >
        <path
          fill-rule="evenodd"
          clip-rule="evenodd"
          d="M4 12C4 7.58172 7.58172 4 12 4C16.4183 4 20 7.58172 20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12ZM12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2ZM11 17V11H13V17H11ZM11 9V7H13V9H11Z"
        />
      </svg>
     <div>Gemini recommends using our <a href="/websocket/order-events/about">WebSocket Order Events</a> API to maintain a current view of your active orders. It's both faster and more efficient than polling this endpoint.</div>
  </div>
    <p>Under the terms of the <a href="https://www.gemini.com/legal/api-agreement">Gemini API Agreement</a>, polling this endpoint may be subject to <a href="/rate-limit">rate limiting</a>.</p>
    <p>Enabled for perpetuals accounts from July 10th, 0100hrs ET onwards.</p>
</div>

### Roles
The API key you use to access this endpoint must have the Trader or Auditor role assigned. See [Roles](/roles#roles) for more information.

The OAuth scope must have `orders:read` assigned to access this endpoint. See [OAuth Scopes](/authentication/oauth#oauth-scopes) for more information.

## Headers

- `X-GEMINI-APIKEY` string, required
- `X-GEMINI-SIGNATURE` string, required
- `X-GEMINI-PAYLOAD` string, required
- `Content-Type` string
- `Content-Length` string
- `Cache-Control` string

## Request body

- object
  - `request` string, required: The API endpoint path
  - `nonce` union, required: timestamp
    - string: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------|-----------------------|------------------------| | string (seconds) | `1495127793` | `POST` only | | string (milliseconds) | `1495127793000` | `POST` only |
    - integer: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------------|---------------------------|------------------------| | whole number (seconds) | `1495127793` | `GET`, `POST` | | whole number (milliseconds) | `1495127793000` | `GET`, `POST` |
  - `account` string: Required for Master API keys as described in [Private API Invocation](/authentication/api-key#private-api-invocation). The name of the account within the subaccount group. Specifies the account on which you intend to place the order. Only available for exchange accounts.

## Response `200`

The active orders

- Order[]
  - `order_id` string, integer: The order id
  - `client_order_id` string, integer: An optional [client-specified order id](/client-order-id#client-order-id)
  - `symbol` string: The [symbol](/market-data/symbols-and-minimums#symbols-and-minimums) of the order
  - `exchange` string: Will always be "gemini"
  - `price` string, decimal: The price the order was issued at
  - `avg_execution_price` string, decimal: The average price at which this order as been executed so far. 0 if the order has not been executed at all.
  - `side` 'buy' | 'sell'
  - `type` 'exchange limit' | 'exchange stop limit' | 'exchange market': Description of the order
  - `options` string[]: An array containing at most one supported order execution option. See [Order execution options](/rest/orders#create-new-order) for details.
  - `timestamp` union: timestamp
    - string: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------|-----------------------|------------------------| | string (seconds) | `1495127793` | `POST` only | | string (milliseconds) | `1495127793000` | `POST` only |
    - integer: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------------|---------------------------|------------------------| | whole number (seconds) | `1495127793` | `GET`, `POST` | | whole number (milliseconds) | `1495127793000` | `GET`, `POST` |
  - `timestampms` union: timestamp
    - string: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------|-----------------------|------------------------| | string (seconds) | `1495127793` | `POST` only | | string (milliseconds) | `1495127793000` | `POST` only |
    - integer: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------------|---------------------------|------------------------| | whole number (seconds) | `1495127793` | `GET`, `POST` | | whole number (milliseconds) | `1495127793000` | `GET`, `POST` |
  - `is_live` boolean: `true` if the order is active on the book (has remaining quantity and has not been canceled)
  - `is_cancelled` boolean: `true` if the order has been canceled. Note the spelling, "cancelled" instead of "canceled". This is for compatibility reasons.
  - `reason` string: Populated with the reason your order was canceled, if available.
  - `was_forced` boolean: Will always be `false`.
  - `executed_amount` string, decimal: The amount of the order that has been filled.
  - `remaining_amount` string, decimal: The amount of the order that has not been filled.
  - `original_amount` string, decimal: The originally submitted amount of the order.
  - `is_hidden` boolean: Will always return `false`.
  - `trades` object[]: Contains an array of JSON objects with trade details.
    - `price` string, decimal: The price that the execution happened at
    - `amount` string, decimal: The quantity that was executed
    - `timestamp` union: timestamp
      - string: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------|-----------------------|------------------------| | string (seconds) | `1495127793` | `POST` only | | string (milliseconds) | `1495127793000` | `POST` only |
      - integer: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------------|---------------------------|------------------------| | whole number (seconds) | `1495127793` | `GET`, `POST` | | whole number (milliseconds) | `1495127793000` | `GET`, `POST` |
    - `timestampms` union: timestamp
      - string: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------|-----------------------|------------------------| | string (seconds) | `1495127793` | `POST` only | | string (milliseconds) | `1495127793000` | `POST` only |
      - integer: Gemini strongly recommends using milliseconds instead of seconds for timestamps. | Timestamp format | Example | Supported request type | |-----------------------------|---------------------------|------------------------| | whole number (seconds) | `1495127793` | `GET`, `POST` | | whole number (milliseconds) | `1495127793000` | `GET`, `POST` |
    - `type` 'Buy' | 'Sell': Will be either "Buy" or "Sell", indicating the side of the original order
    - `aggressor` boolean: If `true`, this order was the taker in the trade
    - `fee_currency` string: Currency that the fee was paid in
    - `fee_amount` string, decimal: The amount charged
    - `tid` integer: Unique identifier for the trade
    - `order_id` string: The order that this trade executed against
    - `exchange` string: Will always be "gemini"
    - `break` string: Will only be present if the trade is broken. See `Break Types` below for more information.

## Other responses

- `400`: Bad request - malformed request or invalid parameters
- `401`: Unauthorized - missing or invalid authentication
- `403`: ApiKey fails IP Filtering Check
- `404`: Resource not found
- `429`: Too many requests - you have exceeded the rate limit
- `500`: Internal server error

---

[API](https://skmtc.dev/gemini/apis/rest-api.md) - [All operations](https://skmtc.dev/gemini/apis/rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gemini/apis/rest-api/revisions/24979792d748?raw)
