Rate limits

How Harmonia rate-limits the public API + how to handle 429s.

The public API uses a token-bucket rate limiter per API key.

Default budgets

PlanReads / minuteWrites / minuteConcurrent webhook deliveries
Starter60302
Pro6003008
Business2400120032
CustomNegotiableNegotiableNegotiable

Headers

Every API response carries:

X-RateLimit-Limit:      600
X-RateLimit-Remaining:  482
X-RateLimit-Reset:      1718800000

On exhaust we return 429 with a Retry-After header in seconds:

HTTP/1.1 429 Too Many Requests
Retry-After: 4

Burst handling

The bucket allows 1.5× burst for short windows — bursting at 2× the documented rate for under 10 seconds usually succeeds, but plan against the documented number.

Webhook backoff

If your webhook endpoint returns non-2xx, Harmonia retries with exponential backoff: 30s, 2m, 10m, 1h, 6h, 24h. After 24h we move the event to the dead-letter queue. Inspect at Settings → API → Webhooks → Deliveries.

Tips

  • Page in chunks of 100, not 1000 — smaller requests are friendlier to both us and you.
  • Use Idempotency-Key on writes so retries don't double-write.
  • For bulk migrations, talk to us — we can lift your write budget temporarily.