Batas laju dan percobaan ulang

120 baca, 30 tulis, dan 10 operasi faktur elektronik per menit per kredensial, dengan header X-RateLimit-*.

120 baca, 30 tulis, dan 10 operasi faktur elektronik per menit per kredensial, dengan header X-RateLimit-*.

← Kembali ke dokumentasi API

Faktur pertama Anda dalam 6 langkah

  1. Batas berlaku per kredensial, per menit: 120 baca, 30 tulis, 10 operasi faktur elektronik.
  2. Ember faktur elektronik mencakup efactura/submit, submissions/{id}/refresh, dan efactura/inbox/sync.
  3. Setiap respons membawa X-RateLimit-Limit, X-RateLimit-Remaining, dan X-RateLimit-Reset, termasuk 429.
  4. 429 memberi Retry-After dalam detik; tunggu selama itu sebelum mencoba lagi.

Apa itu 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
// Patuhi Retry-After; jangan coba ulang 4xx selain 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;
}

// Percobaan ulang penulisan HARUS memakai Idempotency-Key yang SAMA, jika tidak Anda menerbitkan
// dokumen fiskal kedua.

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

Batas laju

EmberPermintaan / menitArtinya
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

Error

StatusTipeKode
429rate_limit_errorrate_limit_exceeded

Kesalahan umum

  • Ember 10 per menit bukan sewenang-wenang: di Rumania ANAF sendiri mengizinkan sekitar satu panggilan daftar pesan per menit per CIF.
  • Saat mencoba ulang penulisan, gunakan Idempotency-Key yang SAMA, jika tidak Anda menerbitkan dokumen kedua.
  • Endpoint token memiliki batas per IP tersendiri. Simpan token dalam cache selama masa berlaku penuh satu jam.
  • GET /v1/me menampilkan ember kredensial saat ini — berguna dalam pemeriksaan kesehatan integrasi.
  • Perlu batas yang lebih tinggi? Tulis kepada kami melalui halaman Kontak dengan perkiraan volume harian Anda.

Tanya jawab untuk pengembang

Apakah batasnya per akun atau per kredensial?

Per kredensial. Membagi lalu lintas ke kredensial per sistem berarti impor besar tidak dapat membuat alur langsung toko Anda kehabisan jatah.

Backoff apa yang Anda sarankan?

Patuhi Retry-After jika ada, jika tidak gunakan eksponensial mulai dari 1–2 detik dengan maksimal 5 percobaan. Jangan pakai perulangan ketat.

Apakah 429 juga membawa header X-RateLimit?

Ya. Kami mengirimkannya pada 429 itu sendiri, justru di sanalah klien membutuhkannya untuk menghitung jeda.