Όρια αιτημάτων και επαναλήψεις

120 αναγνώσεις, 30 εγγραφές και 10 λειτουργίες με το εθνικό σύστημα ηλεκτρονικής τιμολόγησης το λεπτό ανά διαπιστευτήριο, με κεφαλίδες X-RateLimit-*.

120 αναγνώσεις, 30 εγγραφές και 10 λειτουργίες με το εθνικό σύστημα ηλεκτρονικής τιμολόγησης το λεπτό ανά διαπιστευτήριο, με κεφαλίδες X-RateLimit-*.

← Επιστροφή στην τεκμηρίωση του API

Το πρώτο τιμολόγιο σε 6 βήματα

  1. Τα όρια ισχύουν ανά σύνολο διαπιστευτηρίων, ανά λεπτό: 120 αναγνώσεις, 30 εγγραφές, 10 λειτουργίες με το εθνικό σύστημα ηλεκτρονικής τιμολόγησης.
  2. Ο κουβάς του εθνικού συστήματος ηλεκτρονικής τιμολόγησης καλύπτει τα efactura/submit, submissions/{id}/refresh και efactura/inbox/sync.
  3. Κάθε απόκριση περιέχει X-RateLimit-Limit, X-RateLimit-Remaining και X-RateLimit-Reset, συμπεριλαμβανομένου του 429.
  4. Ένα 429 σας δίνει Retry-After σε δευτερόλεπτα· περιμένετε τόσο πριν επαναλάβετε.

Τι είναι το 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
// Τηρείτε το Retry-After· μην επαναλαμβάνετε ποτέ 4xx εκτός του 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;
}

// Μια επανάληψη εγγραφής ΠΡΕΠΕΙ να επαναχρησιμοποιήσει το ΙΔΙΟ Idempotency-Key, αλλιώς εκδίδετε
// ένα δεύτερο φορολογικό παραστατικό.

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

Όρια αιτημάτων

BucketΑιτήματα / λεπτόΤι σημαίνει
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

Σφάλματα

ΚατάστασηΤύποςΚωδικός
429rate_limit_errorrate_limit_exceeded

Συχνά λάθη

  • Ο κουβάς των 10 ανά λεπτό δεν είναι αυθαίρετος: στη Ρουμανία η ANAF επιτρέπει περίπου μία κλήση λίστας μηνυμάτων ανά λεπτό ανά CIF.
  • Όταν επαναλαμβάνετε μια εγγραφή, χρησιμοποιήστε το ΙΔΙΟ Idempotency-Key, αλλιώς εκδίδετε δεύτερο παραστατικό.
  • Το τόκεν Ένδποιντ έχει ξεχωριστό όριο ανά IP. Κρατήστε το τόκεν στην κρυφή μνήμη για ολόκληρη τη μίας ώρας διάρκεια ζωής του.
  • Το GET /v1/me δείχνει τους τρέχοντες κουβάδες των διαπιστευτηρίων — χρήσιμο σε έλεγχο υγείας της ενσωμάτωσης.
  • Χρειάζεστε υψηλότερα όρια; Γράψτε μας μέσω της σελίδας Επικοινωνία, αναφέροντας τον αναμενόμενο ημερήσιο όγκο.

Ερωτήσεις και απαντήσεις για προγραμματιστές

Το όριο ισχύει ανά λογαριασμό ή ανά διαπιστευτήρια;

Ανά διαπιστευτήρια. Ο διαχωρισμός της κίνησης σε διαπιστευτήρια ανά σύστημα σημαίνει ότι μια μαζική εισαγωγή δεν μπορεί να στερήσει πόρους από τη ζωντανή ροή του καταστήματός σας.

Ποιο εκθετική καθυστέρηση προτείνετε;

Τηρήστε το Retry-After όταν υπάρχει, διαφορετικά εκθετικό από 1–2 δευτερόλεπτα με το πολύ 5 απόπειρες. Χωρίς σφιχτούς βρόχους.

Περιέχει και το 429 τις κεφαλίδες X-RateLimit;

Ναι. Τις εκπέμπουμε στο ίδιο το 429, που είναι ακριβώς εκεί όπου ένας πελάτης τις χρειάζεται για να υπολογίσει την παύση.