Limity požadavků a opakování

120 čtení, 30 zápisů a 10 operací s národním systémem elektronické fakturace za minutu na přihlašovací údaje, s hlavičkami X-RateLimit-*.

120 čtení, 30 zápisů a 10 operací s národním systémem elektronické fakturace za minutu na přihlašovací údaje, s hlavičkami X-RateLimit-*.

← Zpět na dokumentaci API

První faktura v 6 krocích

  1. Limity jsou na přihlašovací údaje, za minutu: 120 čtení, 30 zápisů, 10 operací s národním systémem elektronické fakturace.
  2. Kvóta pro národní systém elektronické fakturace pokrývá efactura/submit, submissions/{id}/refresh a efactura/inbox/sync.
  3. Každá odpověď nese X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset, včetně 429.
  4. 429 vám dá Retry-After v sekundách; počkejte tak dlouho před opakováním.

Co 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
// Respektujte Retry-After; nikdy neopakujte 4xx jiné než 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;
}

// Opakování zápisu MUSÍ znovu použít STEJNÝ Idempotency-Key, jinak vystavíte
// druhý fiskální doklad.

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

Limity požadavků

Skupina limitůPožadavků / minutuVýznam
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

Chyby

StavTypKód
429rate_limit_errorrate_limit_exceeded

Časté chyby

  • Kvóta 10 za minutu není libovolná: v Rumunsku ANAF sama povoluje zhruba jedno volání seznamu zpráv za minutu na jedno CIF.
  • Při opakování zápisu znovu použijte STEJNÝ Idempotency-Key, jinak vystavíte druhý doklad.
  • Endpoint tokenů má samostatný limit podle IP. Ukládejte token do cache po celou jeho hodinovou platnost.
  • GET /v1/me ukazuje aktuální kvóty přihlašovacích údajů — užitečné při kontrole stavu integrace.
  • Potřebujete vyšší stropy? Napište nám přes stránku Kontakt s očekávaným denním objemem.

Otázky a odpovědi pro vývojáře

Je limit na účet, nebo na přihlašovací údaje?

Na přihlašovací údaje. Rozdělením provozu na údaje podle systémů nemůže hromadný import připravit o živý provoz vašeho e-shopu.

Jaký backoff doporučujete?

Respektujte Retry-After, pokud je přítomen; jinak exponenciálně od 1–2 sekund, nejvýše 5 pokusů. Žádné těsné smyčky.

Nese i 429 hlavičky X-RateLimit?

Ano. Vydáváme je přímo u 429, což je přesně místo, kde je klient potřebuje ke spočítání pauzy.