Gemini Crypto Trading REST API

The Gemini Exchange REST API for spot, margin and perpetuals trading: market data, order placement and cancellation, past trades, clearing, fund management, deposit addresses, withdrawals, sub-account administration, roles, margin and staking. Authenticated with an API key plus a base64 X-GEMINI-PAYLOAD and a hex HMAC-SHA384 X-GEMINI-SIGNATURE; 74 operations across 74 paths.

Operations 74

GET /v1/symbols List Symbols #
GET /v1/symbols/details/{symbol} Get Symbol Details #
GET /v2/networks/{network}/assets Get Assets for Network #
GET /v2/network/{token} Get Network #
GET /v1/pubticker/{symbol} Get Ticker #
GET /v1/book/{symbol} Get Current Order Book #
GET /v1/trades/{symbol} List Trades #
GET /v1/pricefeed List Prices #
GET /v1/fundingamount/{symbol} Get Funding Amount #
GET /v1/nextfundingtimestamp/{symbol} Get Next Funding Timestamp #
GET /v1/fundingamountreport/records.xlsx Get Funding Amount Report File #
POST /v1/order/new Create New Order #
POST /v1/order/cancel Cancel Order #
POST /v1/order/cancel/all Cancel All Active Orders #
POST /v1/order/cancel/session Cancel All Session Orders #
POST /v1/order/status Get Order Status #
POST /v1/orders List Active Orders #
POST /v1/orders/history List Past Orders #
POST /v1/mytrades List Past Trades #
POST /v1/tradevolume Get Trading Volume #
POST /v1/balances Get Available Balances #
POST /v1/notionalvolume Get Notional Trading Volume #
POST /v1/margin/account Get Margin Account Summary #
POST /v1/margin/rates Get Margin Interest Rates #
POST /v1/margin/order/preview Preview Margin Order Impact #
POST /v1/heartbeat Heartbeat #
POST /v1/wrap/{symbol} Wrap Order #
POST /v1/notionalbalances/{currency} Get Notional Balances #
POST /v1/addresses/{network} List Deposit Addresses #
POST /v1/deposit/{network}/newAddress Create New Deposit Address #
POST /v2/transfers List Past Transfers #
POST /v1/custodyaccountfees List Custody Fee Transfers #
POST /v2/withdraw/{network}/{ticker}/feeEstimate Get Gas Fee Estimation #
POST /v2/withdraw/{network}/{ticker} Withdraw Crypto Funds #
POST /v1/clearing/new Create New Clearing Order #
POST /v1/clearing/status Get Clearing Order #
POST /v1/clearing/cancel Cancel Clearing Order #
POST /v1/clearing/confirm Confirm Clearing Order #
POST /v1/clearing/list List Clearing Orders #
POST /v1/clearing/broker/list List Clearing Brokers #
POST /v1/clearing/broker/new Create New Broker Order #
POST /v1/clearing/trades List Clearing Trades #
POST /v1/instant/quote Get Instant Quote #
POST /v1/instant/execute Execute Instant Order #
POST /v1/payments/addbank Add Bank #
POST /v1/payments/addbank/cad Add Bank CAD #
POST /v1/payments/methods List Payment Methods #
POST /v1/account Get Account Detail #
POST /v1/approvedAddresses/account/{network} List Approved Addresses #
POST /v1/approvedAddresses/{network}/request Create New Approved Address #
POST /v1/approvedAddresses/{network}/remove Remove Approved Address #
POST /v1/account/create Create New Account #
POST /v1/account/rename Rename Account #
POST /v1/account/list List Accounts in Group #
POST /v1/account/transfer/{currency} Transfer Between Accounts #
POST /v1/transactions Get Transaction History #
POST /v1/oauth/revokeByToken Revoke OAuth Token #
POST /v1/balances/staking List Staking Balances #
POST /v1/staking/stake Stake Crypto Funds #
POST /v1/staking/history List Staking Event History #
GET /v1/staking/rates List Staking Rates #
POST /v1/staking/rewards List Staking Rewards #
POST /v1/staking/unstake Unstake Crypto Funds #
POST /v1/roles Roles Endpoint #
POST /v1/margin Get Account Margin #
POST /v1/perpetuals/fundingPayment List Funding Payments #
GET /v1/perpetuals/fundingpaymentreport/records.xlsx Get Funding Payment Report File #
POST /v1/perpetuals/fundingpaymentreport/records.json Get Funding Payment Report JSON #
POST /v1/positions Get Open Positions #
GET /v1/riskstats/{symbol} Get Risk Stats #
GET /v2/ticker/{symbol} Get Ticker V2 #
GET /v2/candles/{symbol}/{time_frame} List Candles #
GET /v2/derivatives/candles/{symbol}/{time_frame} List Derivative Candles #
GET /v2/fxrate/{symbol}/{timestamp} FX Rate #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gemini-crypto-trading-rest-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gemini-trust-rest-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: REST API
  description: |
    The Gemini Crypto Exchange REST API allows programmatic access to trade cryptocurrencies
    and manage your account on the Gemini Exchange platform. The API provides both public and
    private endpoints for market data, order management, and account operations.
    
  version: "1.0.0"
  contact:
    name: Gemini Trading Support
    email: trading@gemini.com
servers:
  - url: https://api.gemini.com
    description: Production server
  - url: https://api.sandbox.gemini.com
    description: Sandbox server for testing

paths:
  /v1/symbols:
    get:
      tags:
        - Market Data
      summary: List Symbols
      operationId: listSymbols
      description: This endpoint retrieves all available symbols for trading.
      responses:
        '200':
          description: The full list of supported symbols.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  description: An array of supported [symbols](/market-data/symbols-and-minimums#all-supported-symbols).
              example: ["aavegusd","aaveusd","aligusd","aliusd","ampgusd","ampusd","ankrgusd","ankrusd","apegusd","apeusd","api3gusd","api3usd","arbgusd","arbusd","atomgusd","atomusd","avaxgusd","avaxgusdperp","avaxusd","axsgusd","axsusd","batgusd","batusd","bchgusd","bchgusdperp","bchusd","bnbgusdperp","bomegusd","bomegusdperp","bomeusd","bonkgusd","bonkgusdperp","bonkusd","btceur","btcgbp","btcgusd","btcgusdperp","btcsgd","btcusd","btcusdt","chillguygusd","chillguyusd","chzgusd","chzusd","compgusd","compusd","crvgusd","crvusd","ctxgusd","ctxusd","cubegusd","cubeusd","daigusd","daiusd","dogebtc","dogeeth","dogegusd","dogegusdperp","dogeusd","dotgusd","dotgusdperp","dotusd","efilfil","elongusd","elonusd","ensgusd","ensusd","ethbtc","etheur","ethgbp","ethgusd","ethgusdperp","ethsgd","ethusd","ethusdt","fetgusd","fetusd","filgusd","filusd","flokigusd","flokigusdperp","flokiusd","ftmgusd","ftmusd","galagusd","galausd","gmtgusd","gmtusd","goatgusd","goatgusdperp","goatusd","grtgusd","grtusd","gusdgbp","gusdsgd","gusdusd","hntgusd","hntusd","hypegusdperp","imxgusd","imxusd","injgusd","injgusdperp","injusd","iotxgusd","iotxusd","ksl2gusdperp","kt5gusdperp","ldogusd","ldousd","linkbtc","linketh","linkgusd","linkgusdperp","linkusd","lptgusd","lptusd","lrcgusd","lrcusd","ltcbtc","ltceth","ltcgusd","ltcgusdperp","ltcusd","managusd","manausd","maskgusd","maskusd","maticgusd","maticusd","mewgusd","mewgusdperp","mewusd","mkrgusd","mkrusd","moodenggusd","moodenggusdperp","moodengusd","opgusd","opgusdperp","opusd","oxtgusd","oxtusd","paxggusd","paxgusd","pepegusd","pepegusdperp","pepeusd","pnutgusd","pnutgusdperp","pnutusd","polgusdperp","popcatgusd","popcatgusdperp","popcatusd","pythgusd","pythgusdperp","pythusd","qntgusd","qntusd","raregusd","rareusd","rengusd","renusd","rlusdusd","rndrgusd","rndrusd","samogusd","samousd","sandgusd","sandusd","shibgusd","shibgusdperp","shibusd","sklgusd","sklusd","solbtc","soleth","solgusd","solgusdperp","solusd","storjgusd","storjusd","sushigusd","sushiusd","trumpgusdperp","umagusd","umausd","unigusd","unigusdperp","uniusd","usdcusd","usdtgusd","usdtusd","wifgusd","wifgusdperp","wifusd","xrpgusd","xrpgusdperp","xrpusd","xtzgusd","xtzusd","yfigusd","yfiusd","zecgusd","zecusd","zrxgusd","zrxusd"]
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
       

  /v1/symbols/details/{symbol}:
    get:
      tags:
        - Market Data
      summary: Get Symbol Details
      operationId: getSymbolDetails
      description: This endpoint retrieves extra detail on supported symbols, such as minimum order size, tick size, quote increment and more.
      parameters:
        - $ref: '#/components/parameters/symbolParam'
      responses:
        '200':
          description: Instrument responses examples
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SymbolDetails'
              examples:
                spot:
                  summary: Spot instrument
                  description: Spot instrument response
                  value:
                    symbol: BTCUSD
                    base_currency: BTC
                    quote_currency: USD
                    tick_size: 0.00000001
                    quote_increment: 0.01
                    min_order_size: "0.00001"
                    status: open
                    wrap_enabled: false
                    product_type: spot
                    contract_type: vanilla
                    contract_price_currency: USD
                perpetual:
                  summary: Perpetual Swap instrument
                  description: Perpetual Swap instrument response
                  value:
                    symbol: BTCETHPERP
                    base_currency: BTC
                    quote_currency: ETH
                    tick_size: 0.0001
                    quote_increment: 0.5
                    min_order_size: "0.0001"
                    status: open
                    wrap_enabled: false
                    product_type: swap
                    contract_type: linear
                    contract_price_currency: GUSD
                 
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'

  /v2/networks/{network}/assets:
    get:
      tags:
        - Market Data
      summary: Get Assets for Network
      operationId: getAssetsForNetwork
      description: |
        This endpoint retrieves the enabled assets (tokens) available on a specified blockchain network, filtered by your account's access permissions.

        This authenticated endpoint returns only the assets where your account has deposit and withdraw access enabled on the specified network.

        Use this endpoint to discover all tokens that support deposits and withdrawals on a particular blockchain network.

        The `assets` field in the response is always an array, sorted alphabetically, containing one or more enabled asset codes.

        ### Roles
        The API key you use to access this endpoint must have the Fund Manager or Auditor role assigned. See [Roles](/roles#roles) for more information.
      parameters:
        - $ref: '#/components/parameters/apiKeyAuth'
        - $ref: '#/components/parameters/signatureAuth'
        - $ref: '#/components/parameters/payloadAuth'
        - $ref: '#/components/parameters/contentType'
        - $ref: '#/components/parameters/contentLength'
        - $ref: '#/components/parameters/cacheControl'
        - name: network
          in: path
          required: true
          schema:
            type: string
          description: |
            Blockchain network identifier (lowercase). Supported networks include: `ethereum`, `solana`, `bitcoin`, `optimism`, `arbitrum`, `base`, `monad`, `avalanche`, `litecoin`, `bitcoincash`, `dogecoin`, `zcash`, `filecoin`, `tezos`, `polkadot`, `cosmos`, `xrpl`, `linea`, and more.
          example: ethereum

      security:
        - apiKeyAuth: []
          signatureAuth: []
          payloadAuth: []

      responses:
        '200':
          description: The response will be a JSON object containing the network name and its supported assets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkAssets'
              examples:
                multi-asset-network:
                  summary: Network with many assets (Ethereum)
                  value:
                    network: "ethereum"
                    assets: ["AAVE", "BAT", "DAI", "ETH", "LINK", "MATIC", "UNI", "USDC", "USDT", "WBTC"]
                single-asset-network:
                  summary: Network with single asset (Bitcoin)
                  value:
                    network: "bitcoin"
                    assets: ["BTC"]
                stablecoin-network:
                  summary: Network popular for stablecoins (Solana)
                  value:
                    network: "solana"
                    assets: ["BONK", "JTO", "JUP", "PYTH", "RAY", "RENDER", "SOL", "USDC"]
        '400':
          description: The supplied network is not supported or has no enabled assets.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorMessage:
                    type: string
              examples:
                unsupported-network:
                  summary: Unsupported network
                  value:
                    errorMessage: "Supplied value 'foochain' is not a supported network. Please refer to the Supported Networks section at docs.gemini.com and correct your API request."
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'

  /v2/network/{token}:
    get:
      tags:
        - Market Data
      summary: Get Network
      operationId: getTokenNetworkV2
      description: |
        <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>
              The v1 network endpoint is being retired. This v2 endpoint is the recommended replacement, offering account-level filtering for deposit and withdraw access. Please migrate to this endpoint at your earliest convenience.
          </div>
        </div>

        This endpoint retrieves the associated network(s) for a requested token, filtered by your account's access permissions.

        This authenticated endpoint returns only the networks where your account has both deposit and withdraw access enabled. This supports the multinetwork deposit and withdrawal flow.

        Many tokens are available on multiple blockchain networks. For example, USDC is available on Optimism, Solana, Base, Arbitrum, Avalanche, and Ethereum. Use this endpoint to discover which networks your account can deposit to and withdraw from for a given token.

        The `network` field in the response is always an array, which may contain one or more supported networks.

        ### Roles
        The API key you use to access this endpoint must have the Fund Manager or Auditor role assigned. See [Roles](/roles#roles) for more information.
      parameters:
        - $ref: '#/components/parameters/apiKeyAuth'
        - $ref: '#/components/parameters/signatureAuth'
        - $ref: '#/components/parameters/payloadAuth'
        - $ref: '#/components/parameters/contentType'
        - $ref: '#/components/parameters/contentLength'
        - $ref: '#/components/parameters/cacheControl'
        - name: token
          in: path
          required: true
          schema:
            type: string
          description: Token identifier. `BTC`, `ETH`, `USDC`, `SOL` etc. See [<u>**symbols and minimums**</u>](/market-data/symbols-and-minimums)
          example: USDC

      security:
        - apiKeyAuth: []
          signatureAuth: []
          payloadAuth: []

      responses:
        '200':
          description: The response will be a JSON object containing the token and its available networks for the authenticated account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkToken'
              examples:
                single-network:
                  summary: Single network token (BTC)
                  value:
                    token: BTC
                    network: ["bitcoin"]
                multi-network:
                  summary: Multi-network token (USDC)
                  value:
                    token: USDC
                    network: ["optimism", "solana", "base", "arbitrum", "avalanche", "ethereum"]
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          description: Returned when the token is not supported or the account has no available networks for the requested token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: string
                    example: error
                  reason:
                    type: string
                    example: UnsupportedNetwork
                  message:
                    type: string
                    example: "UnsupportedNetwork: INVALIDTOKEN"
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'

  /v1/pubticker/{symbol}:
    get:
      tags:
        - Market Data
      summary: Get Ticker
      operationId: getTicker
      description: | 
        This endpoint retrieves information about recent trading activity for the symbol.

        <p 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="M11.1258 5.63252C11.5068 4.94671 12.4932 4.94671 12.8742 5.63252L19.4751 17.5143C19.8454 18.1808 19.3635 18.9999 18.601 18.9999H5.39903C4.63655 18.9999 4.15458 18.1808 4.52487 17.5143L11.1258 5.63252ZM14.6225 4.66123C13.4795 2.6038 10.5205 2.60381 9.37753 4.66124L2.77656 16.543C1.66567 18.5426 3.11158 20.9999 5.39903 20.9999H18.601C20.8884 20.9999 22.3343 18.5426 21.2234 16.543L14.6225 4.66123ZM11 7.99991V13.9999H13V7.99991H11ZM11 15.9999V17.9999H13V15.9999H11Z"
            />
          </svg>
          <span>
          We recommend using <a href="/rest/market-data#get-ticker-v2">Version 2</a> to retrieve recent ticker activty.
          </span>
        </p>
      parameters:
        - $ref: '#/components/parameters/symbolParam'
      responses:
        '200':
          description: The current ticker for the symbol
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ticker'
              example:
                bid: "977.59"
                ask: "977.35"
                last: "977.65"
                volume:
                    BTC: "2210.505328803"
                    USD: "2135477.463379586263"
                    timestamp: 1483018200000
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'

  /v1/book/{symbol}:
    get:
      tags:
        - Market Data
      summary: Get Current Order Book
      operationId: getCurrentOrderBook
      x-zudoku-playground-enabled: false # Disable playground for this endpoint due to CORS configuration on server
      description: |
        This will return the current order book as two arrays (bids / asks).

        <p 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="M11.1258 5.63252C11.5068 4.94671 12.4932 4.94671 12.8742 5.63252L19.4751 17.5143C19.8454 18.1808 19.3635 18.9999 18.601 18.9999H5.39903C4.63655 18.9999 4.15458 18.1808 4.52487 17.5143L11.1258 5.63252ZM14.6225 4.66123C13.4795 2.6038 10.5205 2.60381 9.37753 4.66124L2.77656 16.543C1.66567 18.5426 3.11158 20.9999 5.39903 20.9999H18.601C20.8884 20.9999 22.3343 18.5426 21.2234 16.543L14.6225 4.66123ZM11 7.99991V13.9999H13V7.99991H11ZM11 15.9999V17.9999H13V15.9999H11Z"
            />
          </svg>
          The quantities and prices returned are returned as strings rather than numbers. The numbers returned are exact, not rounded, and it can be dangerous to treat them as floating point numbers.
        </p>
      parameters:
        - $ref: '#/components/parameters/symbolParam'
        - name: limit_bids
          in: query
          description: Limit the number of bid (offers to buy) price levels returned. Default is 50. May be 0 to return the full order book on this side.
          required: false
          schema:
            type: number
            minimum: 1
        - name: limit_asks
          in: query
          description: Limit the number of ask (offers to sell) price levels returned. Default is 50. May be 0 to return the full order book on this side.
          required: false
          schema:
            type: number
            minimum: 1
      responses:
        '200':
          description: The response will be two arrays. The bids and the asks are grouped by price, so each entry may represent multiple orders at that price. Each element of the array will be a JSON object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderBook'
              example:
                bids: [
                  {
                    price: "3607.85",
                    amount: "6.643373",
                    timestamp: "1547147541"
                  }
                ]
                asks: [
                  {
                    price: "3607.86",
                    amount: "14.68205084",
                    timestamp: "1547147541"
                  }
                ]
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'

  /v1/trades/{symbol}:
    get:
      tags:
        - Market Data
      summary: List Trades
      operationId: listTrades
      x-zudoku-playground-enabled: false # Disable playground for this endpoint due to CORS configuration on server
      description: |
        <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>
              This public API endpoint is limited to retrieving seven calendar days of data.
          </div>
         
          <span>
            Please contact us <a href="https://gemini24.zendesk.com/hc/en-us/requests/new" target="_blank">through this form</a> for information about Gemini market data.
          </span>
        </div>
        
        This will return the trades that have executed since the specified timestamp. Timestamps are either seconds or milliseconds since the epoch (1970-01-01). See the [Data Types](/data-types) section about `timestamp` for information on this.

        Each request will show at most 500 records.

        If no `since` or `timestamp` is specified, then it will show the most recent trades; otherwise, it will show the most recent trades that occurred after that timestamp.
      parameters:
        - $ref: '#/components/parameters/symbolParam'
        - name: timestamp
          in: query
          description: | 
            Only return trades after this timestamp. See [<u>**Timestamps**</u>](/rest/~schemas#timestamp-type) for more information. If not present, will show the most recent trades. For backwards compatibility, you may also use the alias `since`. With timestamp, there is a 90-day hard limit.
          required: false
          schema:
            $ref: '#/components/schemas/TimestampType'
            description: Timestamp in milliseconds
        - name: since_tid
          in: query
          description: |
            Only retuns trades that executed after this tid. since_tid trumps timestamp parameter which has no effect if provided too. You may set since_tid to zero to get the earliest available trade history data.
          required: false
          schema:
            type: number
        - name: limit_trades
          in: query
          description: |
            The maximum number of trades to return. The default is 50.
          required: false
          schema:
            type: number
            minimum: 0
            default: 50
        - name: include_breaks
          in: query
          description: |
            Whether to display broken trades. False by default. Can be `1` or `true` to activate
          required: false
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: The response will be an array of JSON objects, sorted by timestamp, with the newest trade shown first.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Trade'
              example:
                timestamp: 1547146811
                timestampms: 1547146811357
                tid: 5335307668
                price: "3610.85"
                amount: "0.27413495"
                exchange: "gemini"
                type: "buy"
                broken: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    
  /v1/pricefeed:
    get:
      tags:
        - Market Data
      summary: List Prices
      operationId: listPrices
      responses:
        '200':
          description: Response is a list of objects, one for each pair.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceFeedResponse'
              example: [
                {
                    "pair":"BTCUSD",
                    "price":"9500.00",
                    "percentChange24h": "5.23"
                },
                {
                    "pair":"ETHUSD",
                    "price":"257.54",
                    "percentChange24h": "4.85"
                },
                {
                    "pair":"BCHUSD",
                    "price":"450.10",
                    "percentChange24h": "-2.91"
                },
                {
                    "pair":"LTCUSD",
                    "price":"79.50",
                    "percentChange24h": "7.63"
                }
              ]
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    
  /v1/fundingamount/{symbol}:
    get:
      tags:
        - Market Data
      summary: Get Funding Amount
      operationId: getFundingAmount
      parameters:
        - name: symbol
          in: path
          required: true
          schema:
            type: string
          description: |
              Trading pair symbol <br /> <br />

              `BTCGUSDPERP`, etc. See [<u>**symbols and minimums**</u>](/market-data/symbols-and-minimums#all-supported-symbols).
          example: BTCGUSDPERP
      responses:
        '200':
          description: The response will be an object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FundingAmountResponse'
              example: {
                symbol: BTCGUSDPERP,
                fundingDateTime: "2025-04-22T18:00:00.000Z",
                fundingTimestampMilliSecs: 1745344800000,
                nextFundingTimestamp: 1745348400000,
                fundingAmount: -1.50991,
                estimatedFundingAmount: -2.10595
              }
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
    
  /v1/nextfundingtimestamp/{symbol}:
    get:
      tags:
        - Market Data
      summary: Get Next Funding Timestamp
      operationId: getNextFundingTimestamp
      parameters:
        - name: symbol
          in: path
          required: true
          schema:
            type: string
          description: | 
              Trading pair symbol <br /> <br />

              `BTCGUSDPERP`, etc. See [<u>**symbols and minimums**</u>](/market-data/symbols-and-minimums#all-supported-symbols).
          example: BTCGUSDPERP
      responses:
        '200':
          description: The response will be an integer timestamp in milliseconds.
          content:
            application/json:
              schema:
                type: integer
                format: int64
              example: 1745348400000
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'

  /v1/fundingamountreport/records.xlsx:
    get:
      tags:
        - Market Data
      summary: Get Funding Amount Report File
      operationId: getFundingAmountReportFile
      description: |
        ### Examples
        - `symbol=BTCGUSDPERP&fromDate=2024-04-10&toDate=2024-04-25&numRows=1000` </br>
        Compare and obtain the minimum records between (2024-04-10 to 2024-04-25) and 1000. If (2024-04-10 to 2024-04-25) contains 360 records. Then fetch the minimum between 360 and 1000 records only.

        - `symbol=BTCGUSDPERP&numRows=2024-04-10&toDate=2024-04-25` </br>
        If (2024-04-10 to 2024-04-25) contains 360 records. Then fetch 360 records only.

        - `symbol=BTCGUSDPERP&numRows=1000` </br>
        Fetch maximum 1000 records starting from Now to a historical date

        - `symbol=BTCGUSDPERP` </br>
        Fetch maximum 8760 records starting from Now to a historical date
    
      parameters:
        - name: symbol
          in: query
          description: | 
              Trading pair symbol <br /> <br />

              `BTCGUSDPERP`, etc. See [<u>**symbols and minimums**</u>](/market-data/symbols-and-minimums#all-supported-symbols).
          required: true
          schema:
            type: string
        - name: fromDate
          in: query
          description: Mandatory if `toDate` is specified, else optional. If empty, will only fetch records by numRows value.
          required: false
          schema:
            type: string
            format: date
        - name: toDate
          in: query
          description: Mandatory if `fromDate` is specified, else optional. If empty, will only fetch records by numRows value.
          required: false
          schema:
            type: string
            format: date
        - name: numRows
          in: query
          description: If empty, default value '8760'
          required: false
          schema:
            type: integer
      
      responses:
        '200':
          description: The response will be an excel / csv file. filename=FundingAmount_{SYMBOL}.{xlsx,csv}
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename=FundingAmount_{SYMBOL}.{xlsx,csv}
          content:
            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
              schema:
                type: string
                format: binary
            text/csv:
              schema:
                type: string
                format: binary
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'

  /v1/order/new:
    post:
      x-zudoku-playground-enabled: false
      tags:
        - Orders
      summary: Create New Order
      operationId: createNewOrder
      description: |
        If you wish orders to be automatically cancelled when your session ends, see the [require heartbeat](/authentication/api-key#require-heartbeat) section, or manually send the [cancel all session orders](/rest/orders#cancel-all-session-orders) message.

        <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>
              Master API keys do not support cancelation on disconnect via heartbeat.
          </div>
         
          Enabled for perpetuals accounts from July 10th, 0100hrs ET onwards.
        </div>

        ### Roles
        The API key you use to access this endpoint must have the Trader role assigned. See <a href="/roles#roles">Roles</a> for more information.

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


        ### Margin Orders
        Set `margin_order: true` to place an order using borrowed funds on a margin-enabled account. This allows you to trade with leverage beyond your available balance.

        **Important**: Margin trading amplifies both gains and losses. Monitor your account using the [Margin Account Summary](/rest/margin-trading#get-margin-account-summary) endpoint and preview order impacts with [Order Preview](/rest/margin-trading#preview-margin-order-impact) before placing margin orders.

        ###  Stop-Limit Orders
        A Stop-Limit order is an order type that allows for order placement when a price reaches a specified level. Stop-Limit orders take in both a `price` and and a `stop_price` as parameters. The `stop_price` is the price that triggers the order to be placed on the continous live order book at the `price`. For buy orders, the `stop_price` must be below the `price` while sell orders require the `stop_price` to be greater than the `price`.


        ### What about market orders?
        The API doesn't directly support market orders because they provide you with no price protection.

        Instead, use the “immediate-or-cancel” order execution option, coupled with an aggressive limit price (i.e. very high for a buy order or very low for a sell order), to achieve the same result.

        ### Order execution options
        Note that `options` is an array. If you omit `options` or provide an empty array, your order will be a standard limit order - it will immediately fill against any open orders at an equal or better price, then the remainder of the order will be posted to the order book.

        If you specify more than one option (or an unsupported option) in the `options` array, the exchange will reject your order.

        No `options` can be applied to stop-limit orders at this time.

        The available limit order options are:

        | Option | Description |
       

# --- truncated at 32 KB (407 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gemini-trust/refs/heads/main/openapi/gemini-trust-rest-openapi.yml