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:
| Transport | What you get |
|---|---|
| REST | HTTP 429 Too Many Requests, Retry-After, and X-RateLimit-Limit / Remaining / Reset |
| Encrypted WebSocket trading | Order-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.
| Tier | Account req/s | Burst | Order credits/min | Cancel credits/min | Query credits/min |
|---|---|---|---|---|---|
| Core | 100 | 200 | 1,800 | 1,800 | 300 |
| Select | 125 | 250 | 2,700 | 2,700 | 450 |
| Advanced | 150 | 300 | 3,600 | 3,600 | 600 |
| Prime | 200 | 400 | 5,400 | 5,400 | 900 |
| Apex | 300 | 600 | 9,000 | 9,000 | 1,500 |
Weighted Action Costs
The venue tracks a weighted action budget. Weights reflect relative cost, not a separate product surface:
| Action | Weight | Rationale |
|---|---|---|
| Place / modify / cancel / query | 1 | |
| Batch cancel / batch modify | 2 | |
| Reverse / amend TP-SL / cancel TP-SL | 2 | |
| Mass quote / cancel all / close all | 5 | |
| Subscribe / leverage / margin-mode / margin adjustment | 1 (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.