Limiti di frequenza e retry

120 letture, 30 scritture e 10 operazioni di fatturazione elettronica al minuto per credenziale, con header X-RateLimit-*.

120 letture, 30 scritture e 10 operazioni di fatturazione elettronica al minuto per credenziale, con header X-RateLimit-*.

← Torna alla documentazione API

La prima fattura in 6 passi

  1. I limiti sono per credenziale e al minuto: 120 letture, 30 scritture, 10 operazioni di fatturazione elettronica.
  2. Il limite di fatturazione elettronica comprende efactura/submit, submissions/{id}/refresh ed efactura/inbox/sync.
  3. Ogni risposta include X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset, 429 compresa.
  4. Un 429 ti fornisce Retry-After in secondi; attendi quel tempo prima di ritentare.

Cos'è l'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
// Rispetta Retry-After; non ritentare mai un 4xx diverso da 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;
}

// Un retry di scrittura DEVE riusare lo STESSO Idempotency-Key, altrimenti emetti
// un secondo documento fiscale.

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

Limiti di frequenza

BucketRichieste / minutoSignificato
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

Errori

StatoTipoCodice
429rate_limit_errorrate_limit_exceeded

Errori frequenti

  • Il limite di 10 al minuto non è arbitrario: in Romania, ANAF stessa consente circa una chiamata all’elenco messaggi al minuto per CIF.
  • Quando ritenti una scrittura, riutilizza la STESSA Idempotency-Key, altrimenti emetti un secondo documento.
  • L’endpoint del token ha un limite separato per IP. Metti in cache il token per tutta la sua durata di un’ora.
  • GET /v1/me mostra i limiti correnti della credenziale: utile in un health check dell’integrazione.
  • Ti servono limiti più alti? Scrivici dalla pagina Contatti indicando il volume giornaliero previsto.

Domande e risposte per sviluppatori

Il limite è per account o per credenziale?

Per credenziale. Suddividendo il traffico su credenziali dedicate a ciascun sistema, un’importazione massiva non può sottrarre capacità al flusso live del tuo negozio.

Quale backoff consigliate?

Rispetta Retry-After quando è presente, altrimenti un backoff esponenziale a partire da 1–2 secondi con al massimo 5 tentativi. Niente cicli stretti.

Anche il 429 include gli header X-RateLimit?

Sì. Li emettiamo sul 429 stesso, cioè proprio dove un client ne ha bisogno per calcolare la pausa.