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

© 2026 Gemini Space Station, Inc.

REST APIs
    Orders
    Market Data
    Derivatives
    Margin Trading
    Staking
    Clearing
    Instant Orders
    Fund Management
      Get Available BalancesGet Notional BalancesList Deposit AddressesCreate New Deposit AddressList Past TransfersList Custody Fee TransfersWithdraw Crypto FundsGet Gas Fee EstimationAdd BankAdd Bank (CAD)List Payment MethodsList Approved AddressesCreate New Approved AddressRemove Approved AddressTransfer Between AccountsGet Transaction History
WebSocket
    AuthenticationMessage Format
    Streams
      Book TickerL2 Partial DepthL2 Differential DepthTrade StreamOrder EventsBalance Updates
    Playground
      Overviewconninfopingtimesubscribeunsubscribelist_subscriptionsdepthorder.placeorder.cancelorder.cancel_allorder.cancel_session
Agentic
FIX

Get Available Balances

TradingFund ManagementGet Available Balances

Get Available Balances

POSThttps://api.gemini.com/v1/balances

Returns the available balances in the supported currencies for your account.

Note

Under the terms of the Gemini API Agreement, polling this endpoint may be subject to rate limiting.

Gemini is currently in the process of introducing new API architecture that will impact how decimal balances are returned from this endpoint for fiat and crypto assets.

As a result of this change, requests routed via the new architecture will return fiat balances and crypto balances truncated to 15 and 19 decimal places, respectively. It is recommended that users floor the values returned from this endpoint to the correct precision until the migration has been completed.

POSTv1/balances
curl --request POST \
  --url https://api.gemini.com/v1/balances \
  --header 'Content-Type: application/json' \
  --header 'X-GEMINI-APIKEY: <string>' \
  --header 'X-GEMINI-PAYLOAD: <string>' \
  --header 'X-GEMINI-SIGNATURE: <string>' \
  --data '
{
  "request": "/v1/balances",
  "nonce": "<nonce>",
  "account": "primary",
  "showPendingBalances": true
}
'

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.

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

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 pathExample: /v1/balances
noncestring | integer·required
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
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.Example: primary
showPendingBalancesboolean
Whether to include pending balances such as in-flight crypto deposits or withdrawals in the balances response. > **Note:** Setting this field to `true` will result in slower response times due to additional database lookups required to retrieve pending balance information.Example: false
Example request body
{
  "request": "/v1/balances",
  "nonce": "<nonce>",
  "account": "primary",
  "showPendingBalances": false
}

Responses

The account balances

typestring·enum
Enum values: exchangeExample: exchange
currencystring
The currency symbolExample: BTC
amountnumber
The confirmed balance for the currency (also referred to as `confirmedBalance`). For crypto withdrawals, this value is **not** reduced until the withdrawal has been confirmed on the blockchain. This delay protects against blockchain reorganizations. Use the `available` field instead if you need balances that immediately reflect holds.Example: 10.5
availablenumber
The amount available for trading. This value is reduced **immediately** when an order hold or withdrawal hold is placed, making it the recommended field for tracking real-time spendable balances.Example: 9
availableForWithdrawalnumber
The amount available for withdrawalExample: 9
pendingWithdrawalnumber
The amount pending withdrawalExample: 1
pendingDepositnumber
The amount pending depositExample: 0.5
_timestampinteger
Server-side monotonically increasing clock value in nanoseconds. Clients can use this value to detect and filter out stale responses that may occur due to load balancing or potential stale servers.Example: 1710547200000000000
Example Responses
[
  {
    "type": "exchange",
    "currency": "BTC",
    "amount": "5.0",
    "available": "4.5",
    "availableForWithdrawal": "4.5",
    "_timestamp": 1710547200000000000
  },
  {
    "type": "exchange",
    "currency": "USD",
    "amount": "15000.00",
    "available": "5000.00",
    "availableForWithdrawal": "5000.00",
    "_timestamp": 1710547200000000000
  },
  {
    "type": "exchange",
    "currency": "ETH",
    "amount": "10.0",
    "available": "10.0",
    "availableForWithdrawal": "10.0",
    "_timestamp": 1710547200000000000
  }
]
PreviousFund ManagementNextGet Notional Balances
Last modified on May 5, 2026