120 branj, 30 pisanj in 10 operacij z nacionalnim sistemom e-računov na minuto na poverilnico, z glavami X-RateLimit-*.
Prvi račun v 6 korakih
- Omejitve veljajo na poverilnico in na minuto: 120 branj, 30 zapisov, 10 operacij z nacionalnim sistemom e-računov.
- Kvota za nacionalni sistem e-računov zajema efactura/submit, submissions/{id}/refresh in efactura/inbox/sync.
- Vsak odgovor vsebuje X-RateLimit-Limit, X-RateLimit-Remaining in X-RateLimit-Reset, tudi 429.
- Odgovor 429 vam vrne Retry-After v sekundah; pred ponovnim poskusom počakajte toliko časa.
Kaj 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
// Upoštevajte Retry-After; nikoli ne ponavljajte 4xx razen 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;
}
// Ponovni poskus zapisa MORA uporabiti ISTI Idempotency-Key, sicer izdate
// drugi fiskalni dokument.https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Omejitve zahtev
| Bucket | Zahtev / minuto | Pomen |
|---|---|---|
| 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 |
Napake
| Stanje | Tip | Koda |
|---|---|---|
| 429 | rate_limit_error | rate_limit_exceeded |
Pogoste napake
- Kvota 10 na minuto ni poljubna: v Romuniji ANAF dovoli približno en klic za seznam sporočil na minuto na CIF.
- Pri ponovnem poskusu zapisa uporabite ISTI Idempotency-Key, sicer izdate drug dokument.
- Končna točka za žetone ima ločeno omejitev na IP-naslov. Žeton hranite v predpomnilniku vso njegovo enourno veljavnost.
- GET /v1/me prikaže trenutne kvote poverilnice — uporabno pri preverjanju stanja integracije.
- Potrebujete višje omejitve? Pišite nam prek strani Kontakt in navedite pričakovani dnevni obseg.
Vprašanja in odgovori za razvijalce
Ali omejitev velja na račun ali na poverilnico?
Na poverilnico. Če promet razdelite na poverilnice po sistemih, množični uvoz ne more izstradati sprotnega toka vaše spletne trgovine.
Kakšen odlog priporočate?
Upoštevajte Retry-After, kadar je prisoten, sicer eksponentnega od 1–2 sekund z največ 5 poskusi. Brez tesnih zank.
Ali tudi 429 vsebuje glave X-RateLimit?
Da. Pošiljamo jih tudi v samem 429, kjer jih odjemalec potrebuje za izračun premora.