120 Lese-, 30 Schreib- und 10 E-Rechnungs-Operationen pro Minute und Zugangskennung, mit X-RateLimit-*-Kopfzeilen.
← Zurück zur API-Dokumentation
Die erste Rechnung in 6 Schritten
- Die Limits gelten pro Zugangskennung und Minute: 120 Lesezugriffe, 30 Schreibzugriffe, 10 E-Rechnungs-Operationen.
- Das E-Rechnungs-Kontingent umfasst efactura/submit, submissions/{id}/refresh und efactura/inbox/sync.
- Jede Antwort enthält X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset, das 429 eingeschlossen.
- Ein 429 liefert Ihnen Retry-After in Sekunden; warten Sie so lange, bevor Sie es erneut versuchen.
Was die 4invoices-API ist
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
// Retry-After beachten; ein 4xx außer 429 nie wiederholen.
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;
}
// Ein Schreib-Retry MUSS denselben Idempotency-Key wiederverwenden, sonst stellen Sie
// ein zweites Fiskaldokument aus.https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Rate-Limits
| Bucket | Anfragen / Minute | Bedeutung |
|---|---|---|
| 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 |
Fehler
| Status | Typ | Code |
|---|---|---|
| 429 | rate_limit_error | rate_limit_exceeded |
Häufige Fehler
- Das Kontingent von 10 pro Minute ist nicht willkürlich: In Rumänien lässt ANAF selbst ungefähr einen Aufruf der Nachrichtenliste pro Minute und CIF zu.
- Verwenden Sie beim Retry eines Schreibvorgangs DENSELBEN Idempotency-Key, sonst stellen Sie ein zweites Dokument aus.
- Der Token-Endpunkt hat ein separates Limit pro IP. Speichern Sie das Token für seine gesamte Lebensdauer von einer Stunde zwischen.
- GET /v1/me zeigt die aktuellen Kontingente der Zugangskennung – nützlich für einen Health-Check der Integration.
- Sie brauchen höhere Obergrenzen? Schreiben Sie uns über die Kontaktseite und nennen Sie Ihr erwartetes Tagesvolumen.
Fragen und Antworten für Entwickler
Gilt das Limit pro Konto oder pro Zugangskennung?
Pro Zugangskennung. Wenn Sie den Traffic auf Zugangskennungen pro System verteilen, kann ein Massenimport den Live-Betrieb Ihres Shops nicht ausbremsen.
Welches Backoff empfehlen Sie?
Halten Sie sich an Retry-After, wenn vorhanden, sonst exponentiell ab 1–2 Sekunden mit höchstens 5 Versuchen. Keine engen Schleifen.
Enthält auch das 429 die X-RateLimit-Header?
Ja. Wir senden sie auch im 429 selbst, also genau dort, wo ein Client sie braucht, um die Pause zu berechnen.