Helium MVNEdocs

Rate limiting

Helium MVNE rate-limits by (operator_id, environment_id). Sandbox traffic never competes with live traffic.

Tiers

TierReads / minWrites / min
Default600120
Elevated (contact us)3,000600

These ceilings are applied per-environment. Burst is smoothed over a rolling 60-second window.

Response headers

Every response includes:

RateLimit-Limit: 600
RateLimit-Remaining: 583
RateLimit-Reset: 42

Reset is seconds until the window refills.

429 behaviour

A throttled request returns 429 Too Many Requests with a Retry-After header (seconds). Honor it with exponential backoff plus jitter.

import time, random, requests
def call_with_backoff(fn, max_attempts=5):
    for attempt in range(max_attempts):
        res = fn()
        if res.status_code != 429:
            return res
        wait = int(res.headers.get("Retry-After", "1"))
        time.sleep(wait + random.uniform(0, 0.25 * (2 ** attempt)))
    return res

What not to do

  • Don't pre-parallelize every bulk operation. 50 workers sharing one key will burn the budget immediately.
  • Don't retry on 429 without backoff — you'll stay throttled.
  • Don't treat RateLimit-Remaining as a reservation. Two concurrent calls may both see it at 5.