Lansare oficială 1 iulie 2026
33z05h48m28s
Înscrie-te pe lista de așteptare
Sari la conținut

Limite de rate API — request limits, headers si retry strategy

2 min citire·Actualizat 16 apr. 2026

API-ul public SoftFactura aplică limite de rate (rate limiting) pentru a asigura performanta și disponibilitatea serviciului pentru toti utilizatorii. Acest articol explica limitele, cum le monitorizezi și cum să gestionezi situatiile când sunt atinse.

Limite active

NivelLimitaFereastra
Short30 cereriper secunda
Medium200 cereriper 10 secunde
Long1.500 cereriper minut

Limitele se aplică per cheie API. Dacă ai mai multe chei API, fiecare are propriile limite independente.

Headers de rate limiting

Fiecare răspuns API include headers care îți arată situația curentă:

X-RateLimit-Limit: 1500
X-RateLimit-Remaining: 1487
X-RateLimit-Reset: 1713282060
HeaderSemnificație
X-RateLimit-LimitNumărul maxim de cereri permise în fereastra curentă
X-RateLimit-RemainingCereri ramase înainte de blocare
X-RateLimit-ResetTimestamp (Unix) când se reseteaza contorul

Răspuns la depășire (429 Too Many Requests)

Când depășești limita, API-ul returnează:

HTTP/1.1 429 Too Many Requests
Retry-After: 5
{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Limita de cereri depasita. Reincercati dupa 5 secunde."
  }
}

Header-ul Retry-After indică numărul de secunde de asteptare înainte de a retrimite cererea.

Strategie de retry recomandată

Implementeaza un exponential backoff în aplicația ta:

  1. La primul răspuns 429, așteaptă valoarea din Retry-After (sau 1 secunda dacă header-ul lipseste).
  2. La al doilea 429 consecutiv, așteaptă 2 secunde.
  3. La al treilea, așteaptă 4 secunde.
  4. Continua să dublezi intervalul pana la maximum 60 de secunde.
  5. După 5 incercari eșuate consecutive, logeaza eroarea și nu mai retrimite automat.
async function apiCallWithRetry(url, options, maxRetries = 5) {
  let delay = 1000;
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);
    if (response.status !== 429) return response;

    const retryAfter = response.headers.get('Retry-After');
    const waitMs = retryAfter ? parseInt(retryAfter) * 1000 : delay;
    await new Promise(r => setTimeout(r, waitMs));
    delay = Math.min(delay * 2, 60000);
  }
  throw new Error('Rate limit depasit dupa ' + maxRetries + ' incercari');
}

Bune practici pentru a evita limitele

  • Cache-uieste răspunsurile care nu se schimba frecvent (lista produse, detalii firma) — nu interoga API-ul de fiecare data.
  • Folosește paginare eficienta — cere 50-100 de elemente per pagina în loc de cate 10.
  • Grupeaza cererile — dacă ai mai multe operatii de creare, programează-le secvențial cu pauze scurte între ele.
  • Monitorizează header-ul X-RateLimit-Remaining — când se apropie de 0, incetineste ritmul cererilor.
  • Nu trimite cereri în paralel masiv — dacă ai nevoie de procesare bulk, contacteaza suportul pentru o soluție dedicata.

Dacă integrarea ta necesită în mod regulat mai multe cereri decât limita permite, contacteaza echipa SoftFactura la contact@softfactura.ro pentru a discuta despre un plan cu limite extinse.

Ți-a fost util acest articol?

Ai în continuare nevoie de ajutor?

Contactează-ne pe email cu detalii — răspundem în maxim 24h în zilele lucrătoare.

Trimite email cu context pre-completat