Kéréslimitek és újrapróbálkozás

Hitelesítő adatonként percenként 120 olvasás, 30 írás és 10 e-számlázási művelet, X-RateLimit-* fejlécekkel.

Hitelesítő adatonként percenként 120 olvasás, 30 írás és 10 e-számlázási művelet, X-RateLimit-* fejlécekkel.

← Vissza az API dokumentációhoz

Az első számla 6 lépésben

  1. A korlátok hitelesítő adatonként és percenként értendők: 120 olvasás, 30 írás, 10 e-számlázási művelet.
  2. Az e-számlázási műveletek kerete az efactura/submit, a submissions/{id}/refresh és az efactura/inbox/sync hívásokra vonatkozik.
  3. Minden válasz tartalmazza az X-RateLimit-Limit, X-RateLimit-Remaining és X-RateLimit-Reset fejléceket, a 429-et is beleértve.
  4. A 429 Retry-After értéket ad másodpercben; ennyit várjon az újrapróbálás előtt.

Mi a 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
// Tartsa be a Retry-After értéket; a 429-en kívüli 4xx hibát soha ne ismételje meg.
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;
}

// Egy írási újrapróbálkozásnál UGYANAZT az Idempotency-Key-t KELL használni, különben kiállít
// egy második fiskális bizonylatot.

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

Kéréslimitek

BucketKérés / percJelentése
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

Hibák

StátuszTípusKód
429rate_limit_errorrate_limit_exceeded

Gyakori hibák

  • A percenkénti 10-es keret nem önkényes: Romániában maga az ANAF is nagyjából percenként egy üzenetlista-hívást enged CIF-enként.
  • Írás újrapróbálásakor UGYANAZT az Idempotency-Key kulcsot használja, különben második bizonylatot állít ki.
  • A token-végpontnak külön, IP-címenkénti korlátja van. Gyorsítótárazza a tokent a teljes, egyórás élettartama alatt.
  • A GET /v1/me megmutatja a hitelesítő adat aktuális kereteit — hasznos egy integrációs állapotellenőrzésben.
  • Magasabb korlátokra van szüksége? Írjon nekünk a Kapcsolat oldalon keresztül, megadva a várható napi volument.

Kérdések és válaszok fejlesztőknek

A korlát fiókonként vagy hitelesítő adatonként érvényes?

Hitelesítő adatonként. Ha a forgalmat rendszerenkénti hitelesítő adatok között osztja meg, egy tömeges import nem tudja kiéheztetni a webshop élő forgalmát.

Milyen backoffot javasolnak?

Ha jelen van, tartsa be a Retry-After értéket, egyébként exponenciálisan, 1–2 másodpercről indulva, legfeljebb 5 próbálkozással. Szoros ciklusok nélkül.

A 429 is tartalmazza az X-RateLimit fejléceket?

Igen. Magában a 429-es válaszban is küldjük őket, pontosan ott, ahol a kliensnek szüksége van rájuk a szünet kiszámításához.