GeminiGemini
SandboxGet API key
  • Crypto Trading
  • Prediction Markets
Changelog
Gemini Crypto Exchange LogoGemini Crypto Exchange Logo

© 2026 Gemini Space Station, Inc.

REST APIs
    Orders
      Create New OrderCancel OrderCancel All Active OrdersCancel All Session OrdersGet Order StatusList Active OrdersList Past OrdersList Past TradesGet Trading VolumeGet Notional Trading VolumeWrap OrderHeartbeat
    Market Data
    Derivatives
    Margin Trading
    Staking
    Clearing
    Instant Orders
    Fund Management
WebSocket
    AuthenticationMessage Format
    Streams
      Book TickerL2 Partial DepthL2 Differential DepthTrade StreamOrder EventsBalance Updates
    Playground
      Overviewconninfopingtimesubscribeunsubscribelist_subscriptionsdepthorder.placeorder.cancelorder.cancel_allorder.cancel_session
Agentic
FIX

List Past Orders

TradingOrdersList Past Orders

List Past Orders

POSThttps://api.gemini.com/v1/orders/history

Retrieve closed order history for an account.

POSTv1/orders/history
curl --request POST \
  --url https://api.gemini.com/v1/orders/history \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "/v1/orders/history",
  "nonce": "<nonce>",
  "limit_orders": 50
}
'

Roles

The API key you use to access this endpoint must have the Trader or Auditor role assigned. See Roles for more information.

The OAuth scope must have history:read assigned to access this endpoint. See OAuth Scopes for more information.

How to retrieve your order history

To retrieve your full order history walking backwards:

  1. Initial request: POST to https://api.gemini.com/v1/orders/history with a JSON payload including a timestamp key with value 0 and a limit_orders key with value 500.
  2. The list is sorted by timestamp descending. Take the highest timestamp value X from the first element.
  3. Create a second request with timestamp set to X+1 and limit_orders set to 500.
  4. Repeat, using the highest timestamp from each response, until an empty list is returned.

Break Types

In the rare event that a trade has been reversed (broken), the trade that is broken will have this flag set. The field will contain one of these values:

  • manual — The trade was reversed manually. All fees, proceeds, and debits associated with the trade have been credited or debited to the account separately. This reported trade must be included for the account balance to be correct.
  • full — The trade was fully broken. The reported trade should not be accounted for. It will be as though the transfer of funds associated with the trade had simply not happened.

Headers

X-GEMINI-APIKEYstring·required
Your API key
X-GEMINI-SIGNATUREstring·required
HEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring·required
Base64-encoded JSON payload
Content-Typestring
Default: text/plain
Content-Lengthstring
Default: 0
Cache-Controlstring
Default: no-cache

Request Body

requeststring·required
The API endpoint `/v1/orders/history`
nonceTimestampType | integer·required
timestampExample: 1495127793000
symbolstring
The symbol to retrieve orders for
limit_ordersinteger
The maximum number of orders to return. Default is 50, max is 500.
timestampstring | integer
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
whole number (seconds)
1495127793
GET, POST
whole number (milliseconds)
1495127793000
GET, POST
Example: 1495127793000
accountstring
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.
Example request body
{
  "request": "/v1/orders/history",
  "nonce": "<nonce>",
  "limit_orders": 50
}

Responses

Successful operation

order_idstring (integer)
The order id
client_order_idstring (integer)
An optional [client-specified order id](/client-order-id#client-order-id)
symbolstring
The [symbol](/market-data/symbols-and-minimums#symbols-and-minimums) of the order
exchangestring
Will always be "gemini"
pricestring (decimal)
The price the order was issued at
avg_execution_pricestring (decimal)
The average price at which this order as been executed so far. 0 if the order has not been executed at all.
sidestring·enum
Enum values: buysell
typestring·enum
Description of the orderEnum values: exchange limitexchange stop limitexchange market
optionsarray
An array containing at most one supported order execution option. See [Order execution options](/rest/orders#create-new-order) for details.
timestampstring | integer
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
whole number (seconds)
1495127793
GET, POST
whole number (milliseconds)
1495127793000
GET, POST
Example: 1495127793000
timestampmsstring | integer
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
whole number (seconds)
1495127793
GET, POST
whole number (milliseconds)
1495127793000
GET, POST
Example: 1495127793000
is_liveboolean
`true` if the order is active on the book (has remaining quantity and has not been canceled)
is_cancelledboolean
`true` if the order has been canceled. Note the spelling, "cancelled" instead of "canceled". This is for compatibility reasons.
reasonstring
Populated with the reason your order was canceled, if available.
was_forcedboolean
Will always be `false`.
executed_amountstring (decimal)
The amount of the order that has been filled.
remaining_amountstring (decimal)
The amount of the order that has not been filled.
original_amountstring (decimal)
The originally submitted amount of the order.
is_hiddenboolean
Will always return `false`.
tradesarray
Contains an array of JSON objects with trade details.
trades[].pricestring (decimal)
The price that the execution happened at
trades[].amountstring (decimal)
The quantity that was executed
trades[].timestampstring | integer
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
whole number (seconds)
1495127793
GET, POST
whole number (milliseconds)
1495127793000
GET, POST
Example: 1495127793000
trades[].timestampmsstring | integer
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
whole number (seconds)
1495127793
GET, POST
whole number (milliseconds)
1495127793000
GET, POST
Example: 1495127793000
trades[].typestring·enum
Will be either "Buy" or "Sell", indicating the side of the original orderEnum values: BuySellExample: Buy
trades[].aggressorboolean
If `true`, this order was the taker in the trade
trades[].fee_currencystring
Currency that the fee was paid inExample: USD
trades[].fee_amountstring (decimal)
The amount chargedExample: 1.23
trades[].tidinteger
Unique identifier for the tradeExample: 17379712930
trades[].order_idstring
The order that this trade executed againstExample: 123456789
trades[].exchangestring
Will always be "gemini"Example: gemini
trades[].breakstring
Will only be present if the trade is broken. See `Break Types` below for more information.
Example Responses
[
  {
    "order_id": "73751560172006688",
    "id": "73751560172006688",
    "symbol": "ethgusd",
    "exchange": "gemini",
    "avg_execution_price": "0.00",
    "side": "buy",
    "type": "exchange limit",
    "timestamp": "1695629298",
    "timestampms": 1695629298505,
    "is_live": false,
    "is_cancelled": true,
    "is_hidden": false,
    "was_forced": false,
    "executed_amount": "0",
    "client_order_id": "fb5321b0-2114-47fd-8cca-531a66d7feaf",
    "options": [],
    "price": "420.00",
    "original_amount": "0.69",
    "remaining_amount": "0.69",
    "trades": []
  }
]
PreviousList Active OrdersNextList Past Trades
Last modified on May 5, 2026