Framme

Rate limits

Requests are rate-limited per client to keep the platform healthy. If you exceed your allowance, the API responds with 429 Too Many Requests. Slow down and retry — successful requests aren't affected.

Handling 429s

Back off and retry rather than hammering the endpoint. If a Retry-After header is present, wait at least that long; otherwise use exponential backoff.

for (let attempt = 0; attempt < 5; attempt++) {
  const res = await fetch(url, { headers })
  if (res.status !== 429) return res
  const wait = Number(res.headers.get("Retry-After")) || 2 ** attempt
  await new Promise((r) => setTimeout(r, wait * 1000))
}
Reduce load by caching access tokens until they expire, requesting only the data you need, and reacting to webhooks instead of polling for order updates.