Get Available Balances
This will show the available balances in the supported currencies
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-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlGet Available Balances › Request Body
requestThe API endpoint path
timestamp
accountRequired for Master API keys as described in 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.
Get Available Balances › Responses
The account balances
typecurrencyThe currency symbol
amountThe amount available
availableThe amount available for trading
availableForWithdrawalThe amount available for withdrawal
pendingWithdrawalThe amount pending withdrawal
pendingDepositThe amount pending deposit
Get Notional Balances
This will show the available balances in the supported currencies as well as the notional value in the currency specified.
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.
path Parameters
currencyEither a fiat currency, e.g. usd or gbp, or a supported crypto-currency, e.g. gusd, btc, eth, aave, etc.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlGet Notional Balances › Request Body
requestThe literal string "/v1/notionalbalances/currency"
The nonce, as described in Private API Invocation
accountRequired for Master API keys. The name of the account within the subaccount group.
Get Notional Balances › Responses
Successful operation
currencyCurrency code, see symbols and minimums
amountThe current balance
amountNotionalAmount, in notional
availableThe amount that is available to trade
availableNotionalAvailable, in notional
availableForWithdrawalThe amount that is available to withdraw
availableForWithdrawalNotionalAvailableForWithdrawal, in notional
List Deposit Addresses
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 addresses:read or addresses:create assigned to access this endpoint. See OAuth Scopes for more information.
path Parameters
networkCan be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlList Deposit Addresses › Request Body
requestThe literal string "/v1/addresses/network"
The nonce, as described in Private API Invocation
Only returns addresses created on or after this timestamp
accountRequired for Master API keys. The name of the account within the subaccount group.
List Deposit Addresses › Responses
Successful operation
addressString representation of the cryptocurrency address
timestamp
labelIf you provided a label when creating the address, it will be echoed back here
memoIt would be present if applicable, it will be present for cosmos address
networkThe blockchain network for the address
Create New Deposit Address
Roles
The API key you use to access this endpoint must have the Fund Manager role assigned. See Roles for more information.
The OAuth scope must have addresses:create assigned to access this endpoint. See OAuth Scopes for more information.
path Parameters
networkCan be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlCreate New Deposit Address › Request Body
requestThe literal string "/v1/deposit/network/newAddress"
The nonce, as described in Private API Invocation
labelA label for the address
legacyWhether to generate a legacy P2SH-P2PKH litecoin address. False by default.
accountRequired for Master API keys. The name of the account within the subaccount group.
Create New Deposit Address › Responses
Successful operation
addressString representation of the cryptocurrency address
timestamp
labelIf you provided a label when creating the address, it will be echoed back here
memoIt would be present if applicable, it will be present for cosmos address
networkThe blockchain network for the address
List Past Transfers
This endpoint shows deposits and withdrawals in the supported currencies. When deposits show as Advanced or Complete they are available for trading.
This endpoint does not currently show cancelled advances, returned outgoing wires or ACH transactions, or other exceptional transaction circumstances.
Fiat transfers between non-derivative and derivatives accounts are prohibited.
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 history:read assigned to access this endpoint. See OAuth Scopes for more information.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlList Past Transfers › Request Body
requestThe literal string "/v1/transfers"
The nonce, as described in Private API Invocation
currencyCurrency code, see symbols and minimums
Only return transfers after this timestamp
limit_transfersThe maximum number of transfers to return. The default is 10 and the maximum is 50.
accountRequired for Master API keys. The name of the account within the subaccount group.
show_completed_deposit_advancesWhether to display completed deposit advances. False by default.
List Past Transfers › Responses
Successful operation
typestatustimestamp
eidThe transfer ID
currencyThe currency transferred
amountThe amount transferred
txHashThe transaction hash if applicable
List Custody Fee Transfers
This endpoint shows Custody fee records in the supported currencies.
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 history:read assigned to access this endpoint. See OAuth Scopes for more information.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlList Custody Fee Transfers › Request Body
requestThe literal string "/v1/custodyaccountfees"
The nonce, as described in Private API Invocation
Only return Custody fee records on or after this timestamp
limit_transfersThe maximum number of Custody fee records to return. The default is 10 and the maximum is 50.
accountRequired for Master API keys. The name of the account within the subaccount group.
List Custody Fee Transfers › Responses
Successful operation
txTimeTime of Custody fee record in milliseconds
feeAmountThe fee amount charged
feeCurrencyCurrency that the fee was paid in
eidCustody fee event id
eventTypeCustody fee event type
Withdraw Crypto Funds
Before you can withdraw cryptocurrency funds to an approved address, you need three things:
- You must have an approved address list for your account
- The address you want to withdraw funds to needs to already be on that approved address list
- An API key with the Fund Manager role added
If you would like to withdraw via API to addresses that are not on your approved address list, please reach out to trading@gemini.com. We can enable this feature for you provide a set of approved IP addresses. This functionality is only available for exchange accounts. Pre-approved IP addresses and addresses added to your approved address list are required to enable withdrawal APIs for custody accounts.
See Roles for more information on how to add the Fund Manager role to the API key you want to use.
Roles
The API key you use to access this endpoint must have the Fund Manager role assigned. See Roles for more information.
The OAuth scope must have crypto:send assigned to access this endpoint. See OAuth Scopes for more information.
path Parameters
currencyEither a fiat currency, e.g. usd or gbp, or a supported crypto-currency, e.g. gusd, btc, eth, aave, etc.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlWithdraw Crypto Funds › Request Body
requestThe literal string "/v1/withdraw/currency"
The nonce, as described in Private API Invocation
addressThe destination address
amountThe amount to withdraw
client_transfer_idA client-supplied unique identifier for the withdrawal
accountRequired for Master API keys. The name of the account within the subaccount group.
memoFor addresses that require a memo
Withdraw Crypto Funds › Responses
Successful operation
addressStandard string format of the withdrawal destination address
amountThe withdrawal amount
feeThe fee in kind applied to the transaction
withdrawalIdA unique ID for the withdrawal
messageA human-readable English string describing the withdrawal
Get Gas Fee Estimation
API users will not be aware of the transfer fees before starting the withdrawal process. This endpoint allows you to find out the estimated gas fees before you start a withdrawal.
Roles
The API key you use to access this endpoint can have the Trader, Fund Manager, Auditor, WealthManager or Administrator role assigned. See Roles for more information.
path Parameters
currencyCodeLowerCaseThe supported cryptocurrency code in lowercase (e.g eth, btc)
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlGet Gas Fee Estimation › Request Body
requestThe string /v1/withdraw/{currencyCodeLowerCase}/feeEstimate where :currencyCodeLowerCase is replaced with the currency code of a supported crypto-currency, e.g. eth, aave, etc. See Symbols and minimums
The nonce, as described in Private API Invocation
addressStandard string format of cryptocurrency address
amountQuoted decimal amount to withdraw
accountThe name of the account within the subaccount group.
Get Gas Fee Estimation › Responses
JSON response for ETH withdrawal
currencyCurrency code, see symbols.
feeThe estimated gas fee
isOverrideValue that shows if an override on the customer's account for free withdrawals exists
monthlyLimitTotal nunber of allowable fee-free withdrawals
monthlyRemainingTotal number of allowable fee-free withdrawals left to use
Add Bank
The add bank API allows for banking information to be sent in via API. However, for the bank to be verified, you must still send in a wire for any amount from the bank account.
Roles
This API requires the FundManager role. See Roles for more information.
The OAuth scope must have banks:create assigned to access this endpoint. See OAuth Scopes for more information.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlAdd Bank › Request Body
requestThe literal string "/v1/payments/addbank"
The nonce, as described in Private API Invocation
accountnumberAccount number of bank account to be added
routingRouting number of bank account to be added
typeType of bank account to be added. Accepts checking or savings
nameThe name of the bank account as shown on your account statements
accountRequired for Master API keys as described in Private API Invocation. The name of the account within the subaccount group. Master API keys can get all account names using the Get Accounts endpoint.
Add Bank › Responses
Successful operation
referenceIdReference ID for the new bank addition request. Once received, send in a wire from the requested bank account to verify it and enable withdrawals to that account.
Add Bank CAD
The add bank API allows for CAD banking information to be sent in via API. However, for the bank to be verified, you must still send in a wire for any amount from the bank account.
Roles
This API requires the FundManager role. See Roles for more information.
The OAuth scope must have banks:create assigned to access this endpoint. See OAuth Scopes for more information.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlAdd Bank CAD › Request Body
requestThe literal string "/v1/payments/addbank/cad"
The nonce, as described in Private API Invocation
swiftcodeThe account SWIFT code
accountNumberAccount number of bank account to be added
typeType of bank account to be added. Accepts checking or savings
nameThe name of the bank account as shown on your account statements
institutionNumberThe institution number of the account - optional but recommended.
branchnnumberThe branch number - optional but recommended.
accountRequired for Master API keys as described in Private API Invocation. The name of the account within the subaccount group. Master API keys can get all account names using the Get Accounts endpoint.
Add Bank CAD › Responses
Successful operation
resultStatus of the request. "OK" indicates the account has been created successfully.
List Payment Methods
The payments methods API will return data on balances in the account and linked banks.
Roles
The API key you use to access this endpoint can be either a Master or Account level key with any role assigned. See Roles for more information.
The OAuth scope must have banks:read assigned to access this endpoint. See OAuth Scopes for more information.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlList Payment Methods › Request Body
requestThe literal string "/v1/payments/methods"
The nonce, as described in Private API Invocation
accountRequired for Master API keys as described in Private API Invocation. The name of the account within the subaccount group. Master API keys can get all account names using the Get Accounts endpoint.
List Payment Methods › Responses
Successful operation
Array of JSON objects with available fiat currencies and their balances.
Array of JSON objects with banking information
List Approved Addresses
Allows viewing of Approved Address list.
Roles
This API can accept any role. See Roles for more information.
path Parameters
networkCan be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlList Approved Addresses › Request Body
requestThe literal string "/v1/approvedAddresses/account/:network" where :network can be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
The nonce, as described in Private API Invocation
accountRequired for Master API keys as described in Private API Invocation. The name of the account within the subaccount group. Specifies the account on which you intend to view the approved address list.
List Approved Addresses › Responses
Successful operation
Array of approved addresses on both the account and group level.
Create New Approved Address
Allows for creation of an approved withdrawal address. Once the request is made, the 7 day waiting period will begin. Please note that all approved address requests are subject to the 7 day waiting period.
If you add an address using an account-scoped API key, then the address will be added to your account specific approved address list. If you use a master-scoped API key, the address will be added to your group-level approved address list unless you specify an account.
This endpoint is subject to additional security constraints and is only accessible via API keys which have configured Trusted IP controls.
Please reach out to trading@gemini.com if you have any questions about approved addresses.
Roles
This API requires the FundManager role. See Roles for more information.
path Parameters
networkCan be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlCreate New Approved Address › Request Body
requestThe literal string "/v1/approvedAddresses/:network/request" where :network can be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
The nonce, as described in Private API Invocation
addressA string of the address to be added to the approved address list.
labelThe label of the approved address.
accountRequired for Master API keys as described in Private API Invocation. The name of the account within the subaccount group. Specifies the account on which you intend to add the approved address.
memoit would be present if applicable, it will be present for cosmos address.
Create New Approved Address › Responses
Successful operation
messageUpon successful request, the endpoint will return a string indicating the 7-day approval hold period has begun.
Remove Approved Address
Allows for removal of active or time-pending addresses from the Approved Address list. Addresses that are pending approval from another user on the account cannot be removed via API.
Roles
This API requires the FundManager role. See Roles for more information.
path Parameters
networkCan be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlRemove Approved Address › Request Body
requestThe literal string "/v1/approvedAddresses/:network/remove" where :network can be bitcoin, ethereum, bitcoincash, litecoin, zcash, filecoin, dogecoin, tezos, solana, polkadot, avalanche, cosmos, or xrpl
The nonce, as described in Private API Invocation
addressA string of the address to be removed from the approved address list.
accountRequired for Master API keys as described in Private API Invocation. The name of the account within the subaccount group. Specifies the account on which you intend to remove the approved address.
Remove Approved Address › Responses
Successful operation
messageUpon successful request, the endpoint will return a string indicating the address and whether it was removed from the group-level or account-level approved address list.
Transfer Between Accounts
This API allows you to execute an internal transfer between any two accounts within your Master Group. In the scenario of exchange account to exchange account there will be no activity on a blockchain network. All other combinations will result in a movement of funds on a blockchain network.
Gemini Custody account withdrawals will not occur until the daily custody run occurs. In the case of funds moving from a Gemini Custody account to a Gemini Exchange account, the exchange account will get a precredit for the amount to be received. The exchange account will be able to trade these funds but will be unable to withdraw until the funds are processed on the blockchain and received.
Gemini Custody accounts request withdrawals to approved addresses in all cases and require the request to come from an approved IP address. Please reach out to trading@gemini.com to enable API withdrawals for custody accounts.
Gemini Custody accounts do not support fiat currency transfers.
Fiat transfers between non-derivative and derivatives accounts are prohibited.
Roles
The API key you use to access this endpoint must be a Master level key and have the Fund Manager role assigned. See Roles for more information.
path Parameters
currencyEither a fiat currency, e.g. usd or gbp, or a supported crypto-currency, e.g. gusd, btc, eth, aave, etc.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlTransfer Between Accounts › Request Body
requestThe string /v1/account/transfer/:currency where :currency is replaced with either usd or a supported crypto-currency, e.g. gusd, btc, eth, aave, etc. See Symbols and minimums.
The nonce, as described in Private API Invocation
sourceAccountNickname of the account you are transferring from. Use the Get Accounts endpoint to get all account names in the group.
targetAccountNickname of the account you are transferring to. Use the Get Accounts endpoint to get all account names in the group.
amountQuoted decimal amount to withdraw
clientTransferIdA unique identifier for the internal transfer, in uuid4 format
withdrawalIdUnique ID of the requested withdrawal.
Transfer Between Accounts › Responses
JSON response
fromAccountSource account where funds are sent from
toAccountTarget account to receive funds in the internal transfer
amountQuantity of assets being transferred
feeFee taken for the transfer. Exchange account to exchange account transfers will always be free and will not be deducted from the free monthly transfer amount for that account.
currencyDisplay Name. Can be Bitcoin, Ether, Zcash, Litecoin, Dollar, etc.
withdrawalIdExcludes exchange to exchange. Unique ID of the requested withdrawal
uuidOnly for exchange to exchange. Unique ID of the completed transfer
messageMessage describing result of withdrawal. Will inform of success, failure, or pending blockchain transaction.
txHashOnly for Ethereum network transfers. Excludes exchange to exchange transfers. Transaction hash for ethereum network transfer.
Get Transaction History
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 for more information.
The OAuth scope must have history:read assigned to access this endpoint. See OAuth Scopes for more information.
Headers
X-GEMINI-APIKEYYour API key
X-GEMINI-SIGNATUREHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADBase64-encoded JSON payload
Content-TypeContent-LengthCache-ControlGet Transaction History › Request Body
requestThe literal string "/v1/transactions"
The nonce, as described in Private API Invocation
Only return transfers on or after this timestamp in nanos. If this is defined, do not define “continuation_token”.
limitThe maximum number of transfers to return. The default is 100 and the maximum is 300.
continuation_tokenFor subsequent requests, use the returned continuation_token value for next page. If this is defined, do not define “timestamp_nanos”.
Get Transaction History › Responses
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.
Results will contain either a list of Trade or Transfer responses

