Incident Playbook
Response procedures for common issues.
Connection Issues
WebSocket Disconnect
Symptoms: WebSocket connection lost, no messages received
Actions:
- Implement auto-reconnect with exponential backoff
- Poll REST endpoints to catch up on missed updates
- Resubscribe to all channels after reconnect
Prevention: Monitor connection status and implement robust reconnection logic
API Timeout
Symptoms: REST requests timeout or return 5xx errors
Actions:
- Retry with exponential backoff
- Check health endpoint:
GET /health - Reduce request rate if system is overloaded
Prevention: Implement request throttling and circuit breakers
Order Issues
High Rejection Rate
Symptoms: Many orders rejected
Investigation:
- Check rejection reasons via
GET /orders?wallet=... - Review margin:
GET /portfolio?wallet=... - Check tier:
GET /user-tier?wallet=... - Verify instruments not expired:
GET /instruments
Actions:
- If margin issues: Reduce position size or add collateral
- If tier issues: Upgrade to tier2 or cover sells
- If expired: Use different instruments
Missing Fills
Symptoms: Orders filled but no fill notifications
Investigation:
- Check
GET /fills?wallet=...for fills - Verify WebSocket
fillschannel subscription - Check WebSocket connection status
Actions:
- Resubscribe to
fillschannel - Poll REST endpoint for missed fills
- Reconcile fills with order status
Stale Order Status
Symptoms: Order status in REST doesn't match WS
Investigation:
- Check WebSocket connection status
- Verify order cache is up to date
- Compare REST and WS order status
Actions:
- Poll REST after WS reconnect to catch up
- Use REST as source of truth for reconciliation
MMP Issues
MMP Triggers Too Frequently
Symptoms: Many orders canceled by MMP
Investigation:
- Check MMP config:
GET /mmp-config?wallet=...¤cy=... - Review fill patterns and cumulative metrics
- Check if limits are too low
Actions:
- Increase MMP limits (qty, delta, vega)
- Increase
interval_msto allow more fills in window - Reduce quoting frequency
MMP Doesn't Trigger
Symptoms: Fills exceed limits but MMP doesn't trigger
Investigation:
- Verify MMP is enabled:
GET /mmp-config?wallet=...¤cy=... - Check
mmp_enabled=trueon orders - Verify currency matches order underlying
Actions:
- Enable MMP on orders:
mmp_enabled=true - Configure MMP for correct currency
- Adjust limits if needed
Margin Issues
Insufficient Margin
Symptoms: Orders rejected with "Insufficient margin"
Investigation:
- Check portfolio:
GET /portfolio?wallet=... - Review margin calculation
- Check which scenario is failing
Actions:
- Reduce position size
- Add collateral (when deposit flow implemented)
- Close positions to free margin
- Hedge exposure to reduce worst-case loss
Missing Spot Price
Symptoms: Orders rejected with "No spot price available"
Investigation:
- Check Hyperliquid spot price feed connectivity
- Verify underlying symbol is correct
- Check if spot price feed is operational
Actions:
- Wait for spot price feed to recover
- Use different underlying if available
- Contact support if issue persists
System Issues
High Latency
Symptoms: Slow API responses or WebSocket message delays
Investigation:
- Check system load
- Monitor response times
- Check network connectivity
Actions:
- Reduce request rate
- Implement request throttling
- Contact support if issue persists
Rate Limiting
Symptoms: Requests rejected or throttled
Current: Rate limiting is not enforced; self-throttle recommended
Actions:
- Implement client-side throttling
- Reduce request rate
- Use bulk endpoints when possible
Emergency Procedures
Kill Switch
Immediate actions:
- Cancel all orders:
DELETE /bulk_orderorDELETE /bulk_order_cloid - Disconnect WebSocket
- Stop quoting system
Recovery:
- Verify all orders canceled:
GET /orders?wallet=... - Review portfolio:
GET /portfolio?wallet=... - Investigate root cause
- Resume quoting after issue resolved
Data Reconciliation
After incident:
- Poll REST endpoints for current state
- Reconcile orders:
GET /orders?wallet=... - Reconcile fills:
GET /fills?wallet=... - Reconcile portfolio:
GET /portfolio?wallet=... - Resume WebSocket subscriptions
Escalation
If issue persists:
- Review known issues and staging notices provided with access
- Check Runbooks for detailed procedures
- Contact support with:
- Wallet address
- Error messages
- Timestamps
- Steps to reproduce