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-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe API endpoint path
Example: /v1/balancesnonceTimestampType · requiredtimestamp
accountstring · requiredRequired 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.
Example: primary
Responses
The account balances
typestring · enumEnum values:exchangeExample: exchangecurrencystringThe currency symbol
Example: BTCamountnumberThe amount available
Example: 10.5availablenumberThe amount available for trading
Example: 9availableForWithdrawalnumberThe amount available for withdrawal
Example: 9pendingWithdrawalnumberThe amount pending withdrawal
Example: 1pendingDepositnumberThe amount pending deposit
Example: 0.5
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
currencystring · requiredEither a fiat currency, e.g.
usdorgbp, or a supported crypto-currency, e.g.gusd,btc,eth,aave, etc.
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/notionalbalances/currency"
accountstringRequired for Master API keys. The name of the account within the subaccount group.
Responses
Successful operation
currencystringCurrency code, see symbols and minimums
amountstringThe current balance
amountNotionalstringAmount, in notional
availablestringThe amount that is available to trade
availableNotionalstringAvailable, in notional
availableForWithdrawalstringThe amount that is available to withdraw
availableForWithdrawalNotionalstringAvailableForWithdrawal, 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
networkstring · requiredCan be
bitcoin,ethereum,bitcoincash,litecoin,zcash,filecoin,dogecoin,tezos,solana,polkadot,avalanche,cosmos, orxrpl
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/addresses/network"
timestampOnly returns addresses created on or after this timestamp
accountstringRequired for Master API keys. The name of the account within the subaccount group.
Responses
Successful operation
addressstringString representation of the cryptocurrency address
timestamptimestamp
labelstringIf you provided a label when creating the address, it will be echoed back here
memostringIt would be present if applicable, it will be present for cosmos address
networkstringThe 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
networkstring · requiredCan be
bitcoin,ethereum,bitcoincash,litecoin,zcash,filecoin,dogecoin,tezos,solana,polkadot,avalanche,cosmos, orxrpl
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/deposit/network/newAddress"
labelstringA label for the address
legacybooleanWhether to generate a legacy P2SH-P2PKH litecoin address. False by default.
accountstringRequired for Master API keys. The name of the account within the subaccount group.
Responses
Successful operation
addressstringString representation of the cryptocurrency address
timestamptimestamp
labelstringIf you provided a label when creating the address, it will be echoed back here
memostringIt would be present if applicable, it will be present for cosmos address
networkstringThe 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-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/transfers"
currencystringCurrency code, see symbols and minimums
timestampOnly return transfers after this timestamp
limit_transfersintegerThe maximum number of transfers to return. The default is 10 and the maximum is 50.
accountstringRequired for Master API keys. The name of the account within the subaccount group.
show_completed_deposit_advancesbooleanWhether to display completed deposit advances. False by default.
Responses
Successful operation
typestring · enumEnum values:DepositWithdrawalstatusstring · enumEnum values:CompletePendingtimestampmstimestamp
eidintegerThe transfer ID
currencystringThe currency transferred
amountstringThe amount transferred
txHashstringThe 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-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/custodyaccountfees"
timestampOnly return Custody fee records on or after this timestamp
limit_transfersintegerThe maximum number of Custody fee records to return. The default is 10 and the maximum is 50.
accountstringRequired for Master API keys. The name of the account within the subaccount group.
Responses
Successful operation
txTimeintegerTime of Custody fee record in milliseconds
feeAmountstringThe fee amount charged
feeCurrencystringCurrency that the fee was paid in
eidintegerCustody fee event id
eventTypestringCustody 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
currencystring · requiredEither a fiat currency, e.g.
usdorgbp, or a supported crypto-currency, e.g.gusd,btc,eth,aave, etc.
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/withdraw/currency"
addressstring · requiredThe destination address
amountstring · requiredThe amount to withdraw
client_transfer_idstringA client-supplied unique identifier for the withdrawal
accountstringRequired for Master API keys. The name of the account within the subaccount group.
memostringFor addresses that require a memo
Responses
Successful operation
addressstringStandard string format of the withdrawal destination address
amountstringThe withdrawal amount
feestringThe fee in kind applied to the transaction
withdrawalIdstringA unique ID for the withdrawal
messagestringA 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
currencyCodeLowerCasestring · requiredThe supported cryptocurrency code in lowercase (e.g
eth,btc)
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe string
/v1/withdraw/{currencyCodeLowerCase}/feeEstimatewhere:currencyCodeLowerCaseis replaced with the currency code of a supported crypto-currency, e.g.eth,aave, etc. See Symbols and minimumsExample: /v1/withdraw/eth/feeEstimateaddressstring · requiredStandard string format of cryptocurrency address
Example: 0x31c2105b8dea834167f32f7ea7d877812e059230amountstring · requiredQuoted decimal amount to withdraw
Example: 0.01accountstring · requiredThe name of the account within the subaccount group.
Example: primary
Responses
JSON response for ETH withdrawal
feestringThe estimated gas fee
Example: {currency: 'ETH', value: '0'}isOverridebooleanValue that shows if an override on the customer's account for free withdrawals exists
Example: falsemonthlyLimitintegerTotal nunber of allowable fee-free withdrawals
Example: 1monthlyRemainingintegerTotal number of allowable fee-free withdrawals left to use
Example: 1
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-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/payments/addbank"
accountnumberstring · requiredAccount number of bank account to be added
routingstring · requiredRouting number of bank account to be added
typestring · enum · requiredType of bank account to be added. Accepts
checkingorsavingsEnum values:checkingsavingsnamestring · requiredThe name of the bank account as shown on your account statements
accountstringRequired 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.
Responses
Successful operation
referenceIdstringReference 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-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/payments/addbank/cad"
swiftcodestring · requiredThe account SWIFT code
accountNumberstring · requiredAccount number of bank account to be added
typestring · enum · requiredType of bank account to be added. Accepts
checkingorsavingsEnum values:checkingsavingsnamestring · requiredThe name of the bank account as shown on your account statements
institutionNumberstringThe institution number of the account - optional but recommended.
branchnnumberstringThe branch number - optional but recommended.
accountstringRequired 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.
Responses
Successful operation
resultstringStatus 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-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/payments/methods"
accountstringRequired 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.
Responses
Successful operation
balancesobject[]Array of JSON objects with available fiat currencies and their balances.
banksobject[]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
networkstring · requiredCan be
bitcoin,ethereum,bitcoincash,litecoin,zcash,filecoin,dogecoin,tezos,solana,polkadot,avalanche,cosmos, orxrpl
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/approvedAddresses/account/:network" where
:networkcan bebitcoin,ethereum,bitcoincash,litecoin,zcash,filecoin,dogecoin,tezos,solana,polkadot,avalanche,cosmos, orxrpl
accountstringRequired 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.
Responses
Successful operation
approvedAddressesobject[]Array of approved addresses on both the account and group level.
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
networkstring · requiredCan be
bitcoin,ethereum,bitcoincash,litecoin,zcash,filecoin,dogecoin,tezos,solana,polkadot,avalanche,cosmos, orxrpl
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/approvedAddresses/:network/remove" where
:networkcan bebitcoin,ethereum,bitcoincash,litecoin,zcash,filecoin,dogecoin,tezos,solana,polkadot,avalanche,cosmos, orxrpladdressstring · requiredA string of the address to be removed from the approved address list.
accountstringRequired 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.
Responses
Successful operation
messagestringUpon 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
currencystring · requiredEither a fiat currency, e.g.
usdorgbp, or a supported crypto-currency, e.g.gusd,btc,eth,aave, etc.
Headers
X-GEMINI-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe string
/v1/account/transfer/:currencywhere:currencyis replaced with eitherusdor a supported crypto-currency, e.g.gusd,btc,eth,aave, etc. See Symbols and minimums.sourceAccountstring · requiredNickname of the account you are transferring from. Use the Get Accounts endpoint to get all account names in the group.
targetAccountstring · requiredNickname of the account you are transferring to. Use the Get Accounts endpoint to get all account names in the group.
amountstring · requiredQuoted decimal amount to withdraw
clientTransferIdstringA unique identifier for the internal transfer, in uuid4 format
withdrawalIdstringUnique ID of the requested withdrawal.
Responses
JSON response
fromAccountstringSource account where funds are sent from
toAccountstringTarget account to receive funds in the internal transfer
amountstringQuantity of assets being transferred
feestringFee 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.
currencystringDisplay Name. Can be
Bitcoin,Ether,Zcash,Litecoin,Dollar, etc.withdrawalIdstringExcludes exchange to exchange. Unique ID of the requested withdrawal
uuidstringOnly for exchange to exchange. Unique ID of the completed transfer
messagestringMessage describing result of withdrawal. Will inform of success, failure, or pending blockchain transaction.
txHashstringOnly 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-APIKEYstring · requiredYour API key
X-GEMINI-SIGNATUREstring · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOADstring · requiredBase64-encoded JSON payload
Content-TypestringDefault: text/plainContent-LengthstringDefault: 0Cache-ControlstringDefault: no-cache
Request Body
requeststring · requiredThe literal string "/v1/transactions"
timestamp_nanosOnly return transfers on or after this timestamp in nanos. If this is defined, do not define “continuation_token”.
limitintegerThe maximum number of transfers to return. The default is 100 and the maximum is 300.
Default: 100continuation_tokenstringFor subsequent requests, use the returned
continuation_tokenvalue for next page. If this is defined, do not define “timestamp_nanos”.
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.
resultsarrayResults will contain either a list of Trade or Transfer responses

