Timeout
Maximum session timeout is 1 hour. Clients must reconnect and restore subscriptions.Heartbeat
The server sends WebSocket ping frames every 30 seconds. The keepalive timer is refreshed when:- A pong frame is received
- Any subscribe or unsubscribe activity occurs
Authentication and Gateway Boundary
UseSec-WebSocket-Protocol:
decibelis the accepted subprotocol<API_KEY>is your bearer token from Geomi
Subscribe/Unsubscribe
Send JSON withmethod and topic:
Success Response
Error Response
"method":"unsubscribe" with the same topic.
Handling Reconnection
Since the maximum session timeout is 1 hour, your client must handle reconnections gracefully.Best Practices
- Implement exponential backoff for reconnection attempts
- Track active subscriptions to restore them after reconnecting
- Use sequence numbers to detect missed messages (for orderbook updates)
- For
withdraw_queue, backfill full state fromGET /api/v1/withdraw_queueand merge WS deltas byrequest_id.
Error Messages
Error responses use the same format as subscribe/unsubscribe responses:Common Errors
Related
WebSocket Overview
Channel catalog and topic names
Authentication
Token and header setup

