Rate limits
To keep the API fast and fair for everyone, requests are rate-limited per partner. The exact quota depends on your agreement — contact your account manager or support@heygrand.com for your limits.
When you exceed the limit
If you send requests faster than your quota allows, the API responds with:
HTTP/1.1 429 Too Many Requests
A 429 is safe to retry — wait briefly, then try again.
Staying within your limits
Exponential backoff
A simple, well-behaved retry loop doubles the wait after each failed attempt and gives up after a few tries:
import time, requests
def get_with_retry(url, headers, max_attempts=5):
delay = 1.0 # seconds
for attempt in range(max_attempts):
resp = requests.get(url, headers=headers)
if resp.status_code != 429:
return resp
time.sleep(delay)
delay *= 2 # 1s, 2s, 4s, 8s, ...
resp.raise_for_status()
return resp
Only back off and retry on 429 and 5xx responses. A 400, 401, or 404 won't
succeed on retry without changing the request — see Errors & status codes.
Need a higher limit?
If your integration is hitting its ceiling, get in touch — we're happy to discuss quotas that fit your use case. Contact support.