---
title: "Get Transaction History"
method: POST
path: "/v1/transactions"
tags: ["Fund Management"]
---

# Get Transaction History

`POST /v1/transactions`

## Request

- Base URL: `https://api.gemini.com`
- URL: `https://api.gemini.com/v1/transactions`
- 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 flex" role="alert">
  <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>
  <span>
   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>. Due to current limitations with the v1/transactions endpoint, historical data can only be returned for dates _after_ August 1st, 2022. For any requests to this endpoint, please ensure that the value provided for _timestamp_nanos_ as after this date.
   </span>
</div>

This endpoint shows trade detail and transactions. There is a `continuation_token` that is a pagination token used for subsequent requests.

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

The OAuth scope must have `history: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 literal string "/v1/transactions"
  - `nonce` union, required: The nonce, as described in [Private API Invocation](/authentication/api-key#private-api-invocation)
    - 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` |
    - integer
  - `timestamp_nanos` 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` |
  - `limit` integer: The maximum number of transfers to return. The default is 100 and the maximum is 300.
  - `continuation_token` string: For subsequent requests, use the returned `continuation_token` value for next page. If this is defined, do not define “timestamp_nanos”.

## Response `200`

The response will be an array of JSON objects, sorted by trade and transfer as well as a continuationToken to be used in subsequent requests.

- object
  - `results` Transaction[]: Results will contain either a list of Trade or Transfer responses
    - union
      - object: Trade Reponse
        - `account` string: The account.
        - `amount` string: The quantity that was executed.
        - `clientOrderId` string: The client order ID, if defined. Otherwise an empty string.
        - `price` string: The price that the execution happened at.
        - `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` |
        - `side` string: Indicating the side of the original order.
        - `isAggressor` boolean: If true, this order was the taker in the trade.
        - `feeAssetCode` string: The symbol that the trade was for
        - `feeAmount` string: The fee amount charged
        - `orderId` integer: The order that this trade executed against.
        - `exchange` string: Will always be "gemini".
        - `isAuctionFill` boolean: True if the trade was a auction trade and not an on-exchange trade.
        - `isClearingFill` boolean: True if the trade was a clearing trade and not an on-exchange trade.
        - `tid` integer: The trade ID.
        - `symbol` string: The symbol that the trade was for.
      - object: Transfer Reponse
        - `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` |
        - `source` string: The account you are transferring from.
        - `destination` string: The account you are transferring to.
        - `operationReason` string: The operation reason.
        - `status` string: The status of the transfer.
        - `eid` integer: Transfer event id.
        - `currency` string: Currency code, see symbols
        - `amount` string: The quantity that was transferred.
        - `method` string: Type of transfer method.
        - `correlationId` integer: Correlation ID.
        - `transferType` string: Transfer type.
        - `bankId` string: Bank ID.
        - `purpose` string: Purpose.
        - `transactionHash` string: Supplies the transaction hash when available.
        - `transferId` string: Transfer ID.
        - `withdrawalId` string: Withdrawal ID.
        - `clientTransferId` string: Client Transfer ID. Client transfer ID is an optional client-supplied unique identifier for each withdrawal or internal transfer.
        - `advanceEid` integer: Deposit advance event ID.
        - `pendingEid` integer: Pending event ID.
        - `withdrawalEid` integer: Withdrawal event ID.
        - `feeId` string: Fee ID.

## 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)
