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

© 2026 Gemini Space Station, Inc.

REST APIs
    Orders
      Create New OrderCancel OrderCancel All Active OrdersCancel All Session OrdersGet Order StatusList Active OrdersList Past OrdersList Past TradesGet Trading VolumeGet Notional Trading VolumeWrap OrderHeartbeat
    Market Data
    Derivatives
    Margin Trading
    Staking
    Clearing
    Instant Orders
    Fund Management
WebSocket
    AuthenticationMessage Format
    Streams
      Book TickerL2 Partial DepthL2 Differential DepthTrade StreamOrder EventsBalance Updates
    Playground
      Overviewconninfopingtimesubscribeunsubscribelist_subscriptionsdepthorder.placeorder.cancelorder.cancel_allorder.cancel_session
Agentic
FIX

Heartbeat

TradingOrdersHeartbeat

Heartbeat

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

Prevents a session from timing out and canceling active orders when the require-heartbeat flag is set on the API key. Only required if no other private API requests have been made — the arrival of any message resets the heartbeat timer.

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

Roles

Any authenticated API key may call this endpoint. See Require Heartbeat for background on the heartbeat flag and session behavior.

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
The literal string `/v1/heartbeat`
noncestring | integer
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 request body
{
  "request": "/v1/heartbeat",
  "nonce": "<nonce>"
}

Responses

The heartbeat was received successfully

resultstring
okExample: ok
Example Responses
{
  "result": "ok"
}
PreviousWrap OrderNextMarket Data
Last modified on May 5, 2026