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-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe API endpoint path
Example: /v1/balancesnonce
requiredtimestamp
account
string · 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
type
string · enumEnum values:exchangeExample: exchangecurrency
stringThe currency symbol
Example: BTCamount
numberThe amount available
Example: 10.5available
numberThe amount available for trading
Example: 9.5availableForWithdrawal
numberThe amount available for withdrawal
Example: 9.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
currency
string · requiredEither a fiat currency, e.g.
usd
orgbp
, or a supported crypto-currency, e.g.gusd
,btc
,eth
,aave
, etc.
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/notionalbalances/currency"
account
stringRequired for Master API keys. The name of the account within the subaccount group.
Responses
currency
stringCurrency code, see symbols and minimums
amount
stringThe current balance
amountNotional
stringAmount, in notional
available
stringThe amount that is available to trade
availableNotional
stringAvailable, in notional
availableForWithdrawal
stringThe amount that is available to withdraw
availableForWithdrawalNotional
stringAvailableForWithdrawal, 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
network
string · requiredCan be
bitcoin
,ethereum
,bitcoincash
,litecoin
,zcash
,filecoin
,dogecoin
,tezos
,solana
,polkadot
,avalanche
,cosmos
, orxrpl
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/addresses/network"
timestamp
timestamp
account
stringRequired for Master API keys. The name of the account within the subaccount group.
Responses
address
stringString representation of the cryptocurrency address
timestamp
timestamp
label
stringIf you provided a label when creating the address, it will be echoed back here
memo
stringIt would be present if applicable, it will be present for cosmos address
network
stringThe 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
network
string · requiredCan be
bitcoin
,ethereum
,bitcoincash
,litecoin
,zcash
,filecoin
,dogecoin
,tezos
,solana
,polkadot
,avalanche
,cosmos
, orxrpl
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/deposit/network/newAddress"
label
stringA label for the address
legacy
booleanWhether to generate a legacy P2SH-P2PKH litecoin address. False by default.
account
stringRequired for Master API keys. The name of the account within the subaccount group.
Responses
address
stringString representation of the cryptocurrency address
timestamp
timestamp
label
stringIf you provided a label when creating the address, it will be echoed back here
memo
stringIt would be present if applicable, it will be present for cosmos address
network
stringThe 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-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/transfers"
currency
stringCurrency code, see symbols and minimums
timestamp
timestamp
limit_transfers
integerThe maximum number of transfers to return. The default is 10 and the maximum is 50.
account
stringRequired for Master API keys. The name of the account within the subaccount group.
show_completed_deposit_advances
booleanWhether to display completed deposit advances. False by default.
Responses
type
string · enumEnum values:DepositWithdrawalstatus
string · enumEnum values:CompletePendingtimestampms
timestamp
eid
integerThe transfer ID
currency
stringThe currency transferred
amount
stringThe amount transferred
txHash
stringThe 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-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/custodyaccountfees"
timestamp
timestamp
limit_transfers
integerThe maximum number of Custody fee records to return. The default is 10 and the maximum is 50.
account
stringRequired for Master API keys. The name of the account within the subaccount group.
Responses
txTime
integerTime of Custody fee record in milliseconds
feeAmount
stringThe fee amount charged
feeCurrency
stringCurrency that the fee was paid in
eid
integerCustody fee event id
eventType
stringCustody 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
currency
string · requiredEither a fiat currency, e.g.
usd
orgbp
, or a supported crypto-currency, e.g.gusd
,btc
,eth
,aave
, etc.
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/withdraw/currency"
address
string · requiredThe destination address
amount
string · requiredThe amount to withdraw
client_transfer_id
stringA client-supplied unique identifier for the withdrawal
account
stringRequired for Master API keys. The name of the account within the subaccount group.
memo
stringFor addresses that require a memo
Responses
address
stringStandard string format of the withdrawal destination address
amount
stringThe withdrawal amount
fee
stringThe fee in kind applied to the transaction
withdrawalId
stringA unique ID for the withdrawal
message
stringA 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
currencyCodeLowerCase
string · requiredThe supported cryptocurrency code in lowercase (e.g
eth
,btc
)
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe 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 minimumsExample: /v1/withdraw/eth/feeEstimateaddress
string · requiredStandard string format of cryptocurrency address
Example: 0x31c2105b8dea834167f32f7ea7d877812e059230amount
string · requiredQuoted decimal amount to withdraw
Example: 0.01account
string · requiredThe name of the account within the subaccount group.
Example: primary
Responses
fee
stringThe estimated gas fee
Example: {currency: 'ETH', value: '0'}isOverride
booleanValue that shows if an override on the customer's account for free withdrawals exists
monthlyLimit
integerTotal nunber of allowable fee-free withdrawals
Example: 1monthlyRemaining
integerTotal 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-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/payments/addbank"
accountnumber
string · requiredAccount number of bank account to be added
routing
string · requiredRouting number of bank account to be added
type
string · enum · requiredType of bank account to be added. Accepts
checking
orsavings
Enum values:checkingsavingsname
string · requiredThe name of the bank account as shown on your account statements
account
stringRequired 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
referenceId
stringReference 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-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/payments/addbank/cad"
swiftcode
string · requiredThe account SWIFT code
accountNumber
string · requiredAccount number of bank account to be added
type
string · enum · requiredType of bank account to be added. Accepts
checking
orsavings
Enum values:checkingsavingsname
string · requiredThe name of the bank account as shown on your account statements
institutionNumber
stringThe institution number of the account - optional but recommended.
branchnnumber
stringThe branch number - optional but recommended.
account
stringRequired 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
result
stringStatus 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-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/payments/methods"
account
stringRequired 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
balances
object[]Array of JSON objects with available fiat currencies and their balances.
banks
object[]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
network
string · requiredCan be
bitcoin
,ethereum
,bitcoincash
,litecoin
,zcash
,filecoin
,dogecoin
,tezos
,solana
,polkadot
,avalanche
,cosmos
, orxrpl
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/approvedAddresses/account/:network" where
:network
can bebitcoin
,ethereum
,bitcoincash
,litecoin
,zcash
,filecoin
,dogecoin
,tezos
,solana
,polkadot
,avalanche
,cosmos
, orxrpl
account
stringRequired 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
approvedAddresses
object[]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
network
string · requiredCan be
bitcoin
,ethereum
,bitcoincash
,litecoin
,zcash
,filecoin
,dogecoin
,tezos
,solana
,polkadot
,avalanche
,cosmos
, orxrpl
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/approvedAddresses/:network/remove" where
:network
can bebitcoin
,ethereum
,bitcoincash
,litecoin
,zcash
,filecoin
,dogecoin
,tezos
,solana
,polkadot
,avalanche
,cosmos
, orxrpl
address
string · requiredA string of the address to be removed from the approved address list.
account
stringRequired 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
message
stringUpon 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
currency
string · requiredEither a fiat currency, e.g.
usd
orgbp
, or a supported crypto-currency, e.g.gusd
,btc
,eth
,aave
, etc.
Headers
X-GEMINI-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe string
/v1/account/transfer/:currency
where:currency
is replaced with eitherusd
or a supported crypto-currency, e.g.gusd
,btc
,eth
,aave
, etc. See Symbols and minimums.sourceAccount
string · requiredNickname of the account you are transferring from. Use the Get Accounts endpoint to get all account names in the group.
targetAccount
string · requiredNickname of the account you are transferring to. Use the Get Accounts endpoint to get all account names in the group.
amount
string · requiredQuoted decimal amount to withdraw
clientTransferId
stringA unique identifier for the internal transfer, in uuid4 format
withdrawalId
stringUnique ID of the requested withdrawal.
Responses
fromAccount
stringSource account where funds are sent from
toAccount
stringTarget account to receive funds in the internal transfer
amount
stringQuantity of assets being transferred
fee
stringFee 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.
currency
stringDisplay Name. Can be
Bitcoin
,Ether
,Zcash
,Litecoin
,Dollar
, etc.withdrawalId
stringExcludes exchange to exchange. Unique ID of the requested withdrawal
uuid
stringOnly for exchange to exchange. Unique ID of the completed transfer
message
stringMessage describing result of withdrawal. Will inform of success, failure, or pending blockchain transaction.
txHash
stringOnly 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-APIKEY
string · requiredYour API key
X-GEMINI-SIGNATURE
string · requiredHEX-encoded HMAC-SHA384 of payload signed with API secret
X-GEMINI-PAYLOAD
string · requiredBase64-encoded JSON payload
Content-Type
stringDefault: text/plainContent-Length
stringDefault: 0Cache-Control
stringDefault: no-cache
Request Body
request
string · requiredThe literal string "/v1/transactions"
timestamp_nanos
Only return transfers on or after this timestamp in nanos. If this is defined, do not define “continuation_token”.
limit
integerThe maximum number of transfers to return. The default is 100 and the maximum is 300.
Default: 100continuation_token
stringFor subsequent requests, use the returned
continuation_token
value for next page. If this is defined, do not define “timestamp_nanos”.
Responses
results
arrayResults will contain either a list of Trade or Transfer responses