GeminiGemini
SandboxGet API key
  • Crypto Trading
  • Prediction Markets
Resources
  • Changelog

© 2026 Gemini Space Station, Inc.

Gemini Crypto Exchange LogoGemini Crypto Exchange Logo
Market Data
    List SymbolsgetGet Symbol DetailsgetGet Assets for NetworkgetGet NetworkgetGet TickergetList Fee PromosgetGet Current Order BookgetList TradesgetList PricesgetGet Funding AmountgetGet Funding Amount Report FilegetGet Ticker V2getList CandlesgetList Derivative CandlesgetFX Rateget
Orders
    Create New OrderpostCancel OrderpostCancel All Active OrderspostCancel All Session OrderspostGet Order StatuspostList Active OrderspostList Past OrderspostList Past TradespostGet Trading VolumepostGet Notional Trading VolumepostWrap Orderpost
Fund Management
    Get Available BalancespostGet Notional BalancespostList Deposit AddressespostCreate New Deposit AddresspostList Past TransferspostList Custody Fee TransferspostGet Gas Fee EstimationpostWithdraw Crypto FundspostAdd BankpostAdd Bank CADpostList Payment MethodspostList Approved AddressespostCreate New Approved AddresspostRemove Approved AddresspostTransfer Between AccountspostGet Transaction Historypost
Margin Trading
    Get Margin Account SummarypostGet Margin Interest RatespostPreview Margin Order Impactpost
Session
    Heartbeatpost
Clearing
    Create New Clearing OrderpostGet Clearing OrderpostCancel Clearing OrderpostConfirm Clearing OrderpostList Clearing OrderspostList Clearing BrokerspostCreate New Broker OrderpostList Clearing Tradespost
Instant
    Get Instant QuotepostExecute Instant Orderpost
Account Administration
    Get Account DetailpostCreate New AccountpostRename AccountpostList Accounts in GrouppostRoles Endpointpost
OAuth
    Revoke OAuth Tokenpost
Staking
    List Staking BalancespostStake Crypto FundspostList Staking Event HistorypostList Staking RatesgetList Staking RewardspostUnstake Crypto Fundspost
Derivatives
    Get Account MarginpostList Funding PaymentspostGet Funding Payment Report FilegetGet Funding Payment Report JSONpostGet Open PositionspostGet Risk Statsget
Schemas
REST API
REST API

Staking (1.0.0)

Endpoint

List Staking Balances

POST
https://api.gemini.com
/v1/balances/staking

This will show the available balance in Staking as well as the available balance for withdrawal.

Roles

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

List Staking Balances › Headers

X-GEMINI-APIKEY
string · required

Your API key

X-GEMINI-SIGNATURE
string · required

HEX-encoded HMAC-SHA384 of payload signed with API secret

X-GEMINI-PAYLOAD
string · required

Base64-encoded JSON payload

Content-Type
string
Default: text/plain
Content-Length
string
Default: 0
Cache-Control
string
Default: no-cache

List Staking Balances › Request Body

request
string · required

The literal string "/v1/balances/staking"

required

The nonce, as described in Private API Invocation

account
string

Required for Master API keys as described in Private API Invocation. The name of the account within the subaccount group.

List Staking Balances › Responses

The staking balances

object[]
type
string

Will always be "Staking"

Example: Staking
currency
string

Currency code, see symbols and minimums

Example: MATIC
balance
number · decimal

The current Staking balance

Example: 10
available
number · decimal

The amount that is available to trade

Example: 0
availableForWithdrawal
number · decimal

The Staking amount that is available to redeem to exchange account

Example: 10
object
POST/v1/balances/staking
curl --request POST \
  --url https://api.gemini.com/v1/balances/staking \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "/v1/balances/staking",
  "nonce": "<nonce>",
  "account": "primary"
}
'
shell
Example Request Body
{
  "request": "/v1/balances/staking",
  "nonce": "<nonce>",
  "account": "primary"
}
json
application/json
Example Responses
[
  {
    "type": "Staking",
    "currency": "MATIC",
    "balance": 10,
    "available": 0,
    "availableForWithdrawal": 10,
    "balanceByProvider": {
      "62b21e17-2534-4b9f-afcf-b7edb609dd8d": {
        "balance": 10
      }
    }
  },
  {
    "type": "Staking",
    "currency": "ETH",
    "balance": 3,
    "available": 0,
    "availableForWithdrawal": 3,
    "balanceByProvider": {
      "62b21e17-2534-4b9f-afcf-b7edb609dd8d": {
        "balance": 3
      }
    }
  }
]
json
application/json

Stake Crypto Funds

POST
https://api.gemini.com
/v1/staking/stake

Initiates Staking deposits.

Roles

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

Stake Crypto Funds › Headers

X-GEMINI-APIKEY
string · required

Your API key

X-GEMINI-SIGNATURE
string · required

HEX-encoded HMAC-SHA384 of payload signed with API secret

X-GEMINI-PAYLOAD
string · required

Base64-encoded JSON payload

Content-Type
string
Default: text/plain
Content-Length
string
Default: 0
Cache-Control
string
Default: no-cache

Stake Crypto Funds › Request Body

request
string · required

The literal string "v1/staking/stake"

required

The nonce, as described in Private API Invocation

providerId
string · required

Provider Id, in uuid4 format. providerId is accessible from the Staking rates response

currency
string · required

Currency code, see symbols

amount
string · decimal · required

The amount of currency to deposit

account
string

Required for Master API keys as described in Private API Invocation. The name of the account within the subaccount group.

Stake Crypto Funds › Responses

The staking deposit transaction

transactionId
string

A unique identifier for the staking transaction

Example: 65QN4XM5
providerId
string

Provider Id, in uuid4 format

Example: 62b21e17-2534-4b9f-afcf-b7edb609dd8d
currency
string

Currency code, see symbols

Example: MATIC
amount
number · decimal

The amount deposited

Example: 30
accrualTotal
number · decimal

The total accrual

object

A JSON object including one or many rates. If more than one rate it would be an array of rates.

POST/v1/staking/stake
curl --request POST \
  --url https://api.gemini.com/v1/staking/stake \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "v1/staking/stake",
  "nonce": "<nonce>",
  "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
  "currency": "MATIC",
  "amount": 30
}
'
shell
Example Request Body
{
  "request": "v1/staking/stake",
  "nonce": "<nonce>",
  "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
  "currency": "MATIC",
  "amount": 30
}
json
application/json
Example Responses
{
  "transactionId": "65QN4XM5",
  "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
  "currency": "MATIC",
  "amount": 30,
  "rates": {
    "rate": 540
  }
}
json
application/json

List Staking Event History

POST
https://api.gemini.com
/v1/staking/history

This will show all staking deposits, redemptions and interest accruals.

Roles

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

How to iterate through all transactions:

To retrieve your full Staking history walking backwards,

  1. Initial request: POST to https://api.gemini.com/v1/staking/history with a JSON payload including sortAsc set to false and a limit key with value 500.
  2. When you receive the list of Staking transactions, they will be sorted by datetime descending - so the last element in the list will have the lowest timestamp value. For this example, say that value is X.
  3. Create a second POST request with a JSON payload including a until timestamp key with value X-1, sortAsc set to false, and a limit key with value 500.
  4. Take the last element of the list returned with lowest datetime value Y and create a third POST request with a JSON payload including a until timestamp key with value Y-1, sortAsc set to false, and a limit key with value 500.
  5. Continue creating POST requests and retrieving Staking transactions until an empty list is returned.

List Staking Event History › Headers

X-GEMINI-APIKEY
string · required

Your API key

X-GEMINI-SIGNATURE
string · required

HEX-encoded HMAC-SHA384 of payload signed with API secret

X-GEMINI-PAYLOAD
string · required

Base64-encoded JSON payload

Content-Type
string
Default: text/plain
Content-Length
string
Default: 0
Cache-Control
string
Default: no-cache

List Staking Event History › Request Body

request
string · required

The literal string "/v1/staking/history"

required

The nonce, as described in Private API Invocation

account
string

Required for Master API keys as described in Private API Invocation. The name of the account within the subaccount group.

In iso datetime with timezone format. Defaults to the timestamp of the first deposit into Staking.

In iso datetime with timezone format, default to current time as of server time

limit
integer

The maximum number of transactions to return. Default is 50, max is 500.

Default: 50
providerId
string

Borrower Id, in uuid4 format. providerId is accessible from the Staking rates response

currency
string

Currency code, see symbols

interestOnly
boolean

Toggles whether to only return daily interest transactions. Defaults to false.

Default: false
sortAsc
boolean

Toggles whether to sort the transactions in ascending order by datetime. Defaults to false.

Default: false

List Staking Event History › Responses

Staking transaction history

object[]
providerId
string

Provider Id, in uuid4 format

Example: 62b21e17-2534-4b9f-afcf-b7edb609dd8d
object[]
POST/v1/staking/history
curl --request POST \
  --url https://api.gemini.com/v1/staking/history \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "/v1/staking/history",
  "nonce": "<nonce>",
  "account": "primary",
  "since": "2022-11-01T00:00:00.000Z",
  "until": "2022-11-03T00:00:00.000Z",
  "limit": 50
}
'
shell
Example Request Body
{
  "request": "/v1/staking/history",
  "nonce": "<nonce>",
  "account": "primary",
  "since": "2022-11-01T00:00:00.000Z",
  "until": "2022-11-03T00:00:00.000Z",
  "limit": 50
}
json
application/json
Example Responses
[
  {
    "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
    "transactions": [
      {
        "transactionId": "MPZ7LDD8",
        "transactionType": "Redeem",
        "amountCurrency": "MATIC",
        "amount": 20,
        "dateTime": 1667418560153
      },
      {
        "transactionId": "65QN4XM5",
        "transactionType": "Deposit",
        "amountCurrency": "MATIC",
        "amount": 30,
        "dateTime": 1667418287795
      },
      {
        "transactionId": "YP22OK4P",
        "transactionType": "Deposit",
        "amountCurrency": "ETH",
        "amount": 3,
        "dateTime": 1667397368929
      },
      {
        "transactionId": "TQN9OPN",
        "transactionType": "Interest",
        "amountCurrency": "MATIC",
        "amount": 0.01,
        "priceCurrency": "USD",
        "priceAmount": 0.1,
        "dateTime": 1667418287795
      }
    ]
  }
]
json
application/json

List Staking Rates

GET
https://api.gemini.com
/v1/staking/rates

This will return the current Gemini Staking interest rates (in bps). When including the specific asset(s) in the request, the response will include the specific assets' (e.g. eth, matic) Staking rate. When not including the specific asset in the request, the response will include all Staking rates.

List Staking Rates › Responses

JSON response with staking rates

Provider UUID Keys
object

Currency Symbol Keys

GET/v1/staking/rates
curl --request GET \
  --url https://api.gemini.com/v1/staking/rates
shell
Example Responses
{
  "62bb4d27-a9c8-4493-a737-d4fa33994f1f": {
    "MATIC": {
      "providerId": "62bb4d27-a9c8-4493-a737-d4fa33994f1f",
      "rate": 95.8909,
      "apyPct": 0.96,
      "ratePct": 0.958909,
      "depositUsdLimit": 500000
    },
    "ETH": {
      "providerId": "62bb4d27-a9c8-4493-a737-d4fa33994f1f",
      "rate": 228.0197,
      "apyPct": 2.31,
      "ratePct": 2.280197,
      "depositUsdLimit": 500000
    },
    "SOL": {
      "providerId": "62bb4d27-a9c8-4493-a737-d4fa33994f1f",
      "rate": 321.5282,
      "apyPct": 3.27,
      "ratePct": 3.215282,
      "depositUsdLimit": 500000
    }
  }
}
json
application/json

List Staking Rewards

POST
https://api.gemini.com
/v1/staking/rewards

This will show the historical Staking reward payments and accrual.

Roles

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

List Staking Rewards › Headers

X-GEMINI-APIKEY
string · required

Your API key

X-GEMINI-SIGNATURE
string · required

HEX-encoded HMAC-SHA384 of payload signed with API secret

X-GEMINI-PAYLOAD
string · required

Base64-encoded JSON payload

Content-Type
string
Default: text/plain
Content-Length
string
Default: 0
Cache-Control
string
Default: no-cache

List Staking Rewards › Request Body

request
string · required

The literal string "/v1/staking/rewards"

required

The nonce, as described in Private API Invocation

since
string · required

In iso datetime with timezone format

account
string

Required for Master API keys as described in Private API Invocation. The name of the account within the subaccount group.

until
string

In iso datetime with timezone format, default to current time as of server time

providerId
string

Borrower Id, in uuid4 format. providerId is accessible from the Staking rates response

currency
string

Currency code, see symbols

List Staking Rewards › Responses

A nested JSON object, organized by provider, then currency

Provider UUID Keys
object

Currency Symbol Keys

POST/v1/staking/rewards
curl --request POST \
  --url https://api.gemini.com/v1/staking/rewards \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "/v1/staking/rewards",
  "nonce": "<nonce>",
  "since": "2022-08-20T00:00:00.000Z",
  "until": "2022-11-05T00:00:00.000Z",
  "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
  "currency": "ETH"
}
'
shell
Example Request Body
{
  "request": "/v1/staking/rewards",
  "nonce": "<nonce>",
  "since": "2022-08-20T00:00:00.000Z",
  "until": "2022-11-05T00:00:00.000Z",
  "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
  "currency": "ETH"
}
json
application/json
Example Responses
{
  "62b21e17-2534-4b9f-afcf-b7edb609dd8d": {
    "MATIC": {
      "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
      "currency": "MATIC",
      "accrualTotal": 0.103994,
      "ratePeriods": [
        {
          "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
          "currency": "MATIC",
          "apyPct": 5.75,
          "ratePct": 5.592369,
          "numberOfAccruals": 1,
          "accrualTotal": 0.0065678,
          "firstAccrualAt": "2022-08-23T20:00:00.000Z",
          "lastAccrualAt": "2022-08-23T20:00:00.000Z"
        },
        {
          "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
          "currency": "MATIC",
          "apyPct": 5.2,
          "ratePct": 5.073801,
          "numberOfAccruals": 1,
          "accrualTotal": 0.0037971687995651837,
          "firstAccrualAt": "2022-10-28T20:00:00.000Z",
          "lastAccrualAt": "2022-10-28T20:00:00.000Z"
        }
      ]
    },
    "ETH": {
      "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
      "currency": "ETH",
      "accrualTotal": 0.017999076209977,
      "ratePeriods": [
        {
          "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
          "currency": "ETH",
          "apyPct": 0.66,
          "ratePct": 0.65913408,
          "numberOfAccruals": 1,
          "accrualTotal": 0.00014802170517505,
          "firstAccrualAt": "2022-11-02T20:00:00.000Z",
          "lastAccrualAt": "2022-11-02T20:00:00.000Z"
        }
      ]
    }
  }
}
json
application/json

Unstake Crypto Funds

POST
https://api.gemini.com
/v1/staking/unstake

Initiates Staking withdrawals.

Roles

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

Unstake Crypto Funds › Headers

X-GEMINI-APIKEY
string · required

Your API key

X-GEMINI-SIGNATURE
string · required

HEX-encoded HMAC-SHA384 of payload signed with API secret

X-GEMINI-PAYLOAD
string · required

Base64-encoded JSON payload

Content-Type
string
Default: text/plain
Content-Length
string
Default: 0
Cache-Control
string
Default: no-cache

Unstake Crypto Funds › Request Body

request
string · required

The literal string "v1/staking/unstake"

required

The nonce, as described in Private API Invocation

providerId
string · required

Provider Id, in uuid4 format. providerId is accessible from the Staking rates response

currency
string · required

Currency code, see symbols

amount
string · decimal · required

The amount of currency to withdraw

account
string

Required for Master API keys as described in Private API Invocation. The name of the account within the subaccount group.

Unstake Crypto Funds › Responses

The staking withdrawal transaction

transactionId
string

A unique identifier for the staking transaction

Example: MPZ7LDD8
amount
number · decimal

The amount deposited

Example: 20
amountPaidSoFar
number · decimal

The amount redeemed successfully

Example: 20
amountRemaining
number · decimal

The amount pending to be redeemed

Example: 0
currency
string

Currency code

Example: MATIC
requestInitiated
string

In ISO datetime with timezone format

Example: 2022-11-02T19:49:20.153Z
POST/v1/staking/unstake
curl --request POST \
  --url https://api.gemini.com/v1/staking/unstake \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "v1/staking/unstake",
  "nonce": "<nonce>",
  "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
  "currency": "MATIC",
  "amount": 20
}
'
shell
Example Request Body
{
  "request": "v1/staking/unstake",
  "nonce": "<nonce>",
  "providerId": "62b21e17-2534-4b9f-afcf-b7edb609dd8d",
  "currency": "MATIC",
  "amount": 20
}
json
application/json
Example Responses
{
  "transactionId": "MPZ7LDD8",
  "amount": 20,
  "amountPaidSoFar": 20,
  "amountRemaining": 0,
  "currency": "MATIC",
  "requestInitiated": "2022-11-02T19:49:20.153Z"
}
json
application/json

OAuthDerivatives