Snelheidslimieten en nieuwe pogingen

120 lezingen, 30 schrijfacties en 10 e-factureringsbewerkingen per minuut per credential, met X-RateLimit-*-headers.

120 lezingen, 30 schrijfacties en 10 e-factureringsbewerkingen per minuut per credential, met X-RateLimit-*-headers.

← Terug naar de API-documentatie

Je eerste factuur in 6 stappen

  1. Limieten gelden per credential, per minuut: 120 leesbewerkingen, 30 schrijfbewerkingen, 10 e-factureringsbewerkingen.
  2. De bucket voor e-factureringsbewerkingen omvat efactura/submit, submissions/{id}/refresh en efactura/inbox/sync.
  3. Elke respons bevat X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset, de 429 inbegrepen.
  4. Een 429 geeft u Retry-After in seconden; wacht zo lang voordat u het opnieuw probeert.

Wat de 4invoices-API is

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
// Respecteer Retry-After; probeer nooit een 4xx anders dan 429 opnieuw.
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;
}

// Een schrijfretry MOET dezelfde Idempotency-Key hergebruiken, anders geef je
// een tweede fiscaal document uit.

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

Snelheidslimieten

BucketVerzoeken / minuutBetekenis
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

Fouten

StatusTypeCode
429rate_limit_errorrate_limit_exceeded

Veelgemaakte fouten

  • De bucket van 10 per minuut is niet willekeurig: in Roemenië staat ANAF zelf ongeveer één aanroep voor het ophalen van de berichtenlijst per minuut per CIF toe.
  • Gebruik bij een nieuwe poging voor een schrijfbewerking DEZELFDE Idempotency-Key, anders geeft u een tweede document uit.
  • Het token-endpoint heeft een aparte limiet per IP. Cache het token gedurende de volledige geldigheid van één uur.
  • GET /v1/me toont de huidige buckets van de credential — handig in een health check van de integratie.
  • Hogere limieten nodig? Schrijf ons via de contactpagina, met uw verwachte dagvolume.

Vragen en antwoorden voor ontwikkelaars

Geldt de limiet per account of per credential?

Per credential. Door het verkeer over credentials per systeem te verdelen, kan een bulkimport de live flow van uw webshop niet uithongeren.

Welke backoff raadt u aan?

Respecteer Retry-After als die aanwezig is, anders exponentieel vanaf 1–2 seconden met maximaal 5 pogingen. Geen strakke lussen.

Bevat de 429 ook de X-RateLimit-headers?

Ja. We sturen ze mee op de 429 zelf, precies waar een client ze nodig heeft om de pauze te berekenen.