Skip to main content
Rate limits are enforced per API key, per resource, independently, not as one shared quota across the whole API. Every endpoint allows 300 requests per 5 minutes for a given key, but that limit is tracked separately per resource. Concretely: a single key can make up to 300 requests to /invoices, and in that same 5-minute window, up to 300 more to /clients, 300 more to /items, and so on. There’s no single combined ceiling across resources, the buckets are: clients, items, expenses, invoices, estimates, taxes, expense-categories, and me.

What happens when you hit the limit

You’ll get an HTTP 429 with this body:
This API doesn’t currently return a Retry-After header, or any other machine-readable signal for how long to wait before retrying. If you’re writing a client, build in a reasonable backoff (a fixed delay, or an increasing one) rather than relying on the response to tell you when to try again.
There’s also no header exposing how much of your quota is left (no X-RateLimit-Remaining or similar), so you won’t see a 429 coming, plan your request volume with the 300-per-5-minutes-per-resource number in mind rather than expecting an early warning.