120 čítaní, 30 zápisov a 10 operácií elektronickej fakturácie za minútu na credential, s hlavičkami X-RateLimit-*.
Prvá faktúra v 6 krokoch
- Limity platia na prístupové údaje a minútu: 120 čítaní, 30 zápisov, 10 operácií elektronickej fakturácie.
- Kvóta pre operácie elektronickej fakturácie pokrýva efactura/submit, submissions/{id}/refresh a efactura/inbox/sync.
- Každá odpoveď obsahuje X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset, vrátane 429.
- 429 vám dá Retry-After v sekundách; pred opakovaním počkajte tak dlho.
Čo je 4invoices API
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
// Rešpektujte Retry-After; nikdy neopakujte 4xx okrem 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;
}
// Opakovaný zápis MUSÍ použiť ROVNAKÝ Idempotency-Key, inak vystavíte
// druhý fiškálny doklad.https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Limity požiadaviek
| Bucket | Požiadaviek / minútu | 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 minútu nie je svojvoľná: v Rumunsku samotný ANAF povoľuje zhruba jedno volanie zoznamu správ za minútu na CIF.
- Pri opakovaní zápisu použite TEN ISTÝ Idempotency-Key, inak vystavíte druhý doklad.
- Endpoint tokenu má samostatný limit na IP adresu. Token ukladajte do cache počas celej jeho hodinovej platnosti.
- GET /v1/me zobrazí aktuálne kvóty prístupových údajov — užitočné pri kontrole stavu integrácie.
- Potrebujete vyššie stropy? Napíšte nám cez stránku Kontakt a uveďte očakávaný denný objem.
Otázky a odpovede pre vývojárov
Platí limit na účet alebo na prístupové údaje?
Na prístupové údaje. Rozdelenie prevádzky medzi prístupové údaje pre jednotlivé systémy znamená, že hromadný import nemôže vyhladovať živý tok vášho e-shopu.
Aký backoff odporúčate?
Ak je prítomný, rešpektujte Retry-After, inak exponenciálny od 1–2 sekúnd s najviac 5 pokusmi. Žiadne tesné slučky.
Obsahuje aj 429 hlavičky X-RateLimit?
Áno. Posielame ich priamo v odpovedi 429, teda presne tam, kde ich klient potrebuje na výpočet pauzy.