Limits and retries
Plan
The API is part of the paid plans Plus and Neomezeně. Documents issued through the API count against the plan limit like in the app.
Requests
The limits are per company (all keys and tokens together) and depend on the plan:
| Plan | A minute | A calendar month |
|---|---|---|
| Plus | 120 | 20,000 |
| Neomezeně | 240 | 200,000 |
Every answer carries what is left in X-RateLimit-Limit, X-RateLimit-Remaining (the minute)
and X-Quota-Limit, X-Quota-Remaining (the month). Over the minute the next request gets
429 TooManyRequests, over the month 429 MonthlyQuotaExceeded; both with Retry-After
(seconds until the next attempt). The month follows Czech time and starts again on its first day.
When syncing, use pageSize=100 and updatedSince, and let webhooks tell you about changes
instead of polling often.
Safe retries (Idempotency-Key)
When a connection breaks during a create, you do not know whether the invoice was made. Send the Idempotency-Key header
with your own unique string on POST, e.g. your order number:
POST /api/v1/invoices
Idempotency-Key: order-2026-1042
A repeated request with the same key within 24 hours gets the first answer (with Idempotent-Replayed: true)
and no second document is made. The same key with another body ends with 422 IdempotencyKeyReused. A refused request
(validation, limit) does not take the key; once fixed it may use it again. It works for creating documents, contacts, products and payments.
Retrying after an error
429and503: retry after the time inRetry-After.500,502and a broken connection: retry with a growing pause (1 s, 2 s, 4 s…) and the sameIdempotency-Key.4xxother than429: do not retry unchanged, the request needs fixing.