Rate Limits

GoDark enforces rate limits for fair access and platform stability. Your per-account limits are tier-driven. Read the public schedule at GET /vip/tiers and your current budget at GET /account/vip. Every REST response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.

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 Breakdown

TierREST req/minREST req/secBurstWS msg/secWS connsWS subsOrders/minCancels/minMass Quotes/minMax OpenMax Open/SymbolRequirements
Core60255251050155Email verified
Select3001020203201206008015$5M 30D volume
Advanced1,2004010010051004802,40030040$10M 30D volume
Prime3,000100200300103001,2006,0001201,200100$25M 30D volume
Apex6,000200300500155002,40012,0006002,500200$50M 30D volume

Mass Quotes — Each mass quote batch contains up to 20 cancel-replace legs. A batch counts as one weighted action, regardless of leg count. At the Apex tier, 600 batches/min with 20 legs each is up to 12,000 quote updates per minute.

Trading Rules

RuleLimitScope
Order placement rate1 per 1 millisecondPer symbol, per account
Cancel rate1 per 200 microsecondsPer symbol, per account
Modify rate1 per 1 millisecondPer symbol, per account
Mass quote rate1 per 1 millisecondPer symbol, per account
Quote rest1 millisecond between price improvementsPer symbol
Minimum notionalMin Size according to fee tierPer order

Weighted Action Costs

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

ActionWeightRationale
Order placement1.0New book insert
Cancel0.2Position-indexed lookup
Modify1.2Cancel (0.2) + insert (1.0)
Mass quote (per batch)1.0One batch, any number of legs up to the max

System-Wide Limits

The venue also enforces global throughput caps:

RuleCap
Global throughput10,000 weighted actions/sec
Per-symbol throughput5,000 weighted actions/sec
Per-symbol max book depth100,000 open orders

When a cap is reached, additional orders are queued or rejected. Codes: Error Codes. Behavior: System Status.

Best Practices

  1. Space orders at least 1ms apart and cancels at least 200μs apart per symbol.
  2. Use mass quotes for multi-level quote updates — a batch of 20 legs costs the same as a single placement.
  3. On a rate-limit reject, back off using the rate-limit headers. See Error Codes.
  4. Aggregate small orders to meet the minimum trade size for the fee tier.
  5. Use different symbols simultaneously — limits are per-symbol.
  6. Track your request timestamps per symbol to stay within limits.
  7. If an order is queued, do not resubmit.
  8. If the venue is at capacity, retry with exponential backoff starting at 1 second.

Rate Limit Response

When rate-limited, you'll receive 429 Too Many Requests. See Error Codes for the code. Headers:

X-RateLimit-Limit: 1200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1839975060
Retry-After: 1