120 lectures, 30 escriptures i 10 operacions amb el sistema nacional de facturació electrònica per minut per credencial, amb capçaleres X-RateLimit-*.
← Torna a la documentació de l'API
La teva primera factura en 6 passos
- Els límits són per credencial, per minut: 120 lectures, 30 escriptures, 10 operacions amb el sistema nacional de facturació electrònica.
- El grup del sistema nacional de facturació electrònica cobreix efactura/submit, submissions/{id}/refresh i efactura/inbox/sync.
- Cada resposta porta X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset, també el 429.
- Un 429 et dona Retry-After en segons; espera aquest temps abans de reintentar.
Què és l'API de 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
// Respecta Retry-After; mai no reintentis un 4xx que no sigui 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 reintent d'escriptura HA de reutilitzar la MATEIXA Idempotency-Key, altrament emetràs
// un segon document fiscal.https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Límits de peticions
| Grup | Peticions / minut | Què significa |
|---|---|---|
| read | 120 | GET *, POST /invoices/preview-totals, POST /invoices/{id}/efactura/validate |
| write | 30 | POST /invoices, POST /invoices/{id}/storno, POST|DELETE /invoices/{id}/payments, POST /clients |
| submit | 10 | POST /invoices/{id}/efactura/submit, POST /efactura/submissions/{id}/refresh, POST /efactura/inbox/sync |
Errors
| Estat | Tipus | Codi |
|---|---|---|
| 429 | rate_limit_error | rate_limit_exceeded |
Errors habituals
- El grup de 10 per minut no és arbitrari: a Romania, l'ANAF permet aproximadament una crida de llistat de missatges per minut per CIF.
- En reintentar una escriptura, reutilitza la MATEIXA Idempotency-Key, altrament emetràs un segon document.
- El punt final del token té un límit per IP separat. Guarda el token a la memòria cau durant tota la seva vida d'una hora.
- GET /v1/me mostra els grups actuals de la credencial — útil en una comprovació de salut de la integració.
- Necessites sostres més alts? Escriu-nos des de la pàgina de Contacte, indicant el teu volum diari previst.
Preguntes i respostes per a desenvolupadors
El límit és per compte o per credencial?
Per credencial. Repartir el trànsit entre credencials per sistema vol dir que una importació massiva no pot deixar sense recursos el flux en directe de la teva botiga.
Quin backoff recomanes?
Respecta Retry-After quan hi és; si no, exponencial a partir d'1–2 segons i com a màxim 5 intents. Sense bucles estrets.
El 429 també porta les capçaleres X-RateLimit?
Sí. Les emetem al mateix 429, que és exactament on un client les necessita per calcular la pausa.