Hastighetsgrenser og nye forsøk

120 lesinger, 30 skrivinger og 10 operasjoner mot det nasjonale e-fakturasystemet per minutt per legitimasjon, med X-RateLimit-*-headere.

120 lesinger, 30 skrivinger og 10 operasjoner mot det nasjonale e-fakturasystemet per minutt per legitimasjon, med X-RateLimit-*-headere.

← Tilbake til API-dokumentasjonen

Din første faktura på 6 steg

  1. Grensene gjelder per legitimasjon, per minutt: 120 lesinger, 30 skrivinger, 10 operasjoner mot det nasjonale e-fakturasystemet.
  2. Kvoten for det nasjonale e-fakturasystemet dekker efactura/submit, submissions/{id}/refresh og efactura/inbox/sync.
  3. Hvert svar har X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset, også 429.
  4. En 429 gir deg Retry-After i sekunder; vent så lenge før du prøver igjen.

Hva 4invoices-API-et er

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
// Respekter Retry-After; prøv aldri igjen ved en 4xx annet enn 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;
}

// Et nytt forsøk på en skrivning MÅ bruke SAMME Idempotency-Key, ellers utsteder du
// et nytt fiskalt dokument.

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

Hastighetsgrenser

KvotegruppeForespørsler / minuttBetydning
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

Feil

StatusTypeKode
429rate_limit_errorrate_limit_exceeded

Vanlige feil

  • Kvoten på 10 per minutt er ikke vilkårlig: ANAF i Romania tillater selv omtrent ett kall til meldingslisten per minutt per CIF.
  • Ved nytt forsøk av en skrivning, bruk SAMME Idempotency-Key, ellers utsteder du et nytt dokument.
  • Token-endepunktet har en egen grense per IP. Cache tokenet i hele levetiden på én time.
  • GET /v1/me viser legitimasjonens gjeldende kvoter — nyttig i en helsesjekk av integrasjonen.
  • Trenger du høyere tak? Skriv til oss via kontaktsiden med forventet daglig volum.

Spørsmål og svar for utviklere

Er grensen per konto eller per legitimasjon?

Per legitimasjon. Ved å dele trafikken på legitimasjon per system kan ikke en bulkimport sulte ut den live trafikken i nettbutikken din.

Hvilken backoff anbefaler dere?

Respekter Retry-After når den finnes; ellers eksponentielt fra 1–2 sekunder med høyst 5 forsøk. Ingen stramme løkker.

Har også 429-svar X-RateLimit-headerne?

Ja. Vi sender dem på selve 429-svaret, og det er akkurat der klienten trenger dem for å beregne pausen.