120 čtení, 30 zápisů a 10 operací s národním systémem elektronické fakturace za minutu na přihlašovací údaje, s hlavičkami X-RateLimit-*.
První faktura v 6 krocích
- Limity jsou na přihlašovací údaje, za minutu: 120 čtení, 30 zápisů, 10 operací s národním systémem elektronické fakturace.
- Kvóta pro národní systém elektronické fakturace pokrývá efactura/submit, submissions/{id}/refresh a efactura/inbox/sync.
- Každá odpověď nese X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset, včetně 429.
- 429 vám dá Retry-After v sekundách; počkejte tak dlouho před opakováním.
Co je API 4invoices
http
HTTP/2 429
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1785312000
Retry-After: 17
Content-Type: application/json
{"error":{"type":"rate_limit_error","code":"rate_limit_exceeded",
"message":"...","doc_url":"https://4invoices.net/ro/api-dezvoltatori#errors",
"request_id":"req_..."}}javascript
// Respektujte Retry-After; nikdy neopakujte 4xx jiné než 429.
async function call(url, init, attempt = 0) {
const res = await fetch(url, init);
if (res.status === 429 || res.status >= 500) {
if (attempt >= 5) return res;
const retryAfter = Number(res.headers.get("Retry-After")) || 2 ** attempt;
await new Promise((r) => setTimeout(r, retryAfter * 1000));
return call(url, init, attempt + 1);
}
return res;
}
// Opakování zápisu MUSÍ znovu použít STEJNÝ Idempotency-Key, jinak vystavíte
// druhý fiskální doklad.https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Limity požadavků
| Skupina limitů | Požadavků / minutu | Význam |
|---|---|---|
| read | 120 | GET *, POST /invoices/preview-totals, POST /invoices/{id}/efactura/validate |
| write | 30 | POST /invoices, POST /invoices/{id}/storno, POST|DELETE /invoices/{id}/payments, POST /clients |
| submit | 10 | POST /invoices/{id}/efactura/submit, POST /efactura/submissions/{id}/refresh, POST /efactura/inbox/sync |
Chyby
| Stav | Typ | Kód |
|---|---|---|
| 429 | rate_limit_error | rate_limit_exceeded |
Časté chyby
- Kvóta 10 za minutu není libovolná: v Rumunsku ANAF sama povoluje zhruba jedno volání seznamu zpráv za minutu na jedno CIF.
- Při opakování zápisu znovu použijte STEJNÝ Idempotency-Key, jinak vystavíte druhý doklad.
- Endpoint tokenů má samostatný limit podle IP. Ukládejte token do cache po celou jeho hodinovou platnost.
- GET /v1/me ukazuje aktuální kvóty přihlašovacích údajů — užitečné při kontrole stavu integrace.
- Potřebujete vyšší stropy? Napište nám přes stránku Kontakt s očekávaným denním objemem.
Otázky a odpovědi pro vývojáře
Je limit na účet, nebo na přihlašovací údaje?
Na přihlašovací údaje. Rozdělením provozu na údaje podle systémů nemůže hromadný import připravit o živý provoz vašeho e-shopu.
Jaký backoff doporučujete?
Respektujte Retry-After, pokud je přítomen; jinak exponenciálně od 1–2 sekund, nejvýše 5 pokusů. Žádné těsné smyčky.
Nese i 429 hlavičky X-RateLimit?
Ano. Vydáváme je přímo u 429, což je přesně místo, kde je klient potřebuje ke spočítání pauzy.