Ograničenja zahtjeva i ponovni pokušaji

120 čitanja, 30 pisanja i 10 operacija e-fakturisanja po minuti po kredencijalu, sa zaglavljima X-RateLimit-*.

120 čitanja, 30 pisanja i 10 operacija e-fakturisanja po minuti po kredencijalu, sa zaglavljima X-RateLimit-*.

← Nazad na API dokumentaciju

Vaša prva faktura u 6 koraka

  1. Ograničenja važe po kredencijalu, po minuti: 120 čitanja, 30 pisanja, 10 operacija e-fakturisanja.
  2. Grupa e-fakturisanja obuhvata efactura/submit, submissions/{id}/refresh i efactura/inbox/sync.
  3. Svaki odgovor nosi X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset, uključujući 429.
  4. 429 vam daje Retry-After u sekundama; sačekajte toliko prije ponovnog pokušaja.

Šta 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
// Poštujte Retry-After; nikada ne ponavljajte 4xx osim 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 pokušaj pisanja MORA koristiti ISTI Idempotency-Key, inače izdajete
// drugi fiskalni dokument.

https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json

Ograničenja zahtjeva

GrupaZahtjeva / minutŠta znači
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

Greške

StatusTipKod
429rate_limit_errorrate_limit_exceeded

Česte greške

  • Grupa od 10 po minuti nije proizvoljna: u Rumuniji sam ANAF dozvoljava otprilike jedan poziv za listu poruka po minuti po CIF-u.
  • Pri ponovnom pokušaju pisanja koristite ISTI Idempotency-Key, inače izdajete drugi dokument.
  • Krajnja tačka za token ima zasebno ograničenje po IP adresi. Keširajte token za cijeli njegov sat vremena života.
  • GET /v1/me pokazuje trenutne grupe kredencijala — korisno u provjeri zdravlja integracije.
  • Trebaju veće granice? Pišite nam preko stranice Kontakt, sa očekivanim dnevnim obimom.

Pitanja i odgovori za programere

Da li je ograničenje po nalogu ili po kredencijalu?

Po kredencijalu. Raspodjela saobraćaja na kredencijale po sistemu znači da masovni uvoz ne može ugušiti živi tok vaše prodavnice.

Koji backoff preporučujete?

Poštujte Retry-After kada postoji; inače eksponencijalno od 1–2 sekunde, najviše 5 pokušaja. Bez uskih petlji.

Da li i 429 nosi zaglavlja X-RateLimit?

Da. Šaljemo ih na samom 429, upravo tamo gdje klijentu trebaju da izračuna pauzu.