Omejitve zahtev in ponovni poskusi

120 branj, 30 pisanj in 10 operacij z nacionalnim sistemom e-računov na minuto na poverilnico, z glavami X-RateLimit-*.

120 branj, 30 pisanj in 10 operacij z nacionalnim sistemom e-računov na minuto na poverilnico, z glavami X-RateLimit-*.

← Nazaj na dokumentacijo API

Prvi račun v 6 korakih

  1. Omejitve veljajo na poverilnico in na minuto: 120 branj, 30 zapisov, 10 operacij z nacionalnim sistemom e-računov.
  2. Kvota za nacionalni sistem e-računov zajema efactura/submit, submissions/{id}/refresh in efactura/inbox/sync.
  3. Vsak odgovor vsebuje X-RateLimit-Limit, X-RateLimit-Remaining in X-RateLimit-Reset, tudi 429.
  4. 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

BucketZahtev / minutoPomen
read120GET *, POST /invoices/preview-totals, POST /invoices/{id}/efactura/validate
write30POST /invoices, POST /invoices/{id}/storno, POST|DELETE /invoices/{id}/payments, POST /clients
submit10POST /invoices/{id}/efactura/submit, POST /efactura/submissions/{id}/refresh, POST /efactura/inbox/sync

Napake

StanjeTipKoda
429rate_limit_errorrate_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.