Rate Limits

GoDark enforces account-level trading budgets at Edge. The public source of truth is:

GET /api/v1/rate-limits

It returns schema_version, default_vip_tier, the complete vip_tiers budget schedule, and request_weights.

How overflow is signaled depends on the transport:

TransportWhat you get
RESTHTTP 429 Too Many Requests, Retry-After, and X-RateLimit-Limit / Remaining / Reset
Encrypted WebSocket tradingOrder-level reject (OrderError / trade ACK) — not HTTP 429

Cancellations use position-indexed lookup, so they cost less than a new placement. That is why cancel throughput is higher than place throughput — useful for market makers, who typically cancel far more than they place.

Tier budgets

Budgets are global per authenticated account across all symbols and both REST and WebSocket trading.

TierAccount req/sBurstOrder credits/minCancel credits/minQuery credits/min
Core1002001,8001,800300
Select1252502,7002,700450
Advanced1503003,6003,600600
Prime2004005,4005,400900
Apex3006009,0009,0001,500

Weighted Action Costs

The venue tracks a weighted action budget. Weights reflect relative cost, not a separate product surface:

ActionWeightRationale
Place / modify / cancel / query1
Batch cancel / batch modify2
Reverse / amend TP-SL / cancel TP-SL2
Mass quote / cancel all / close all5
Subscribe / leverage / margin-mode / margin adjustment1 (account bucket only)

Place, modify, mass quote, batch modify, close all, reverse, and amend TP/SL consume order credits. Cancel paths consume cancel credits. Encrypted reads consume query credits. Account controls and subscriptions consume only the account token bucket.

Best Practices

Read the manifest rather than hard-coding budgets. On REST overflow, honor Retry-After and the X-GDX-* usage/limit headers. On WebSocket overflow, use the ACK rate_limit snapshot or rate_limited message (dimension, limit, used, retry_after_ms).

REST overflow

HTTP 429 Too Many Requests. See Error Codes.

X-GDX-VIP-Tier: 3
X-GDX-Order-Credits-1M: 3600
X-GDX-Order-Limit-1M: 3600
Retry-After: 1

WebSocket overflow

Encrypted place / cancel / modify / mass-quote over /ws/v1 does not return an HTTP status line. The SDK surfaces an order-level rejection (for example a per-symbol rate-limit message). There is no 429 or Retry-After on that path.