Giới hạn tần suất và thử lại

120 lượt đọc, 30 lượt ghi và 10 thao tác với hệ thống hóa đơn điện tử quốc gia mỗi phút trên mỗi thông tin xác thực, kèm header X-RateLimit-*.

120 lượt đọc, 30 lượt ghi và 10 thao tác với hệ thống hóa đơn điện tử quốc gia mỗi phút trên mỗi thông tin xác thực, kèm header X-RateLimit-*.

← Quay lại tài liệu API

Hóa đơn đầu tiên trong 6 bước

  1. Giới hạn áp dụng theo từng thông tin xác thực, mỗi phút: 120 lượt đọc, 30 lượt ghi, 10 thao tác với hệ thống hóa đơn điện tử quốc gia.
  2. Nhóm thao tác với hệ thống hóa đơn điện tử quốc gia bao gồm efactura/submit, submissions/{id}/refresh và efactura/inbox/sync.
  3. Mọi phản hồi đều có X-RateLimit-Limit, X-RateLimit-Remaining và X-RateLimit-Reset, kể cả 429.
  4. 429 cho bạn Retry-After tính bằng giây; hãy chờ đúng khoảng thời gian đó trước khi thử lại.

API 4invoices là gì

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
// Tuân thủ Retry-After; không bao giờ thử lại 4xx khác 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;
}

// Khi thử lại một lần ghi PHẢI dùng CÙNG Idempotency-Key, nếu không bạn sẽ phát hành
// một chứng từ tài chính thứ hai.

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

Giới hạn tần suất

Nhóm giới hạnYêu cầu / phútÝ nghĩa
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

Lỗi

Trạng tháiLoạiMã
429rate_limit_errorrate_limit_exceeded

Lỗi thường gặp

  • Nhóm 10 lượt mỗi phút không phải tùy tiện: tại Romania, bản thân ANAF chỉ cho phép khoảng một lệnh gọi danh sách thông điệp mỗi phút trên mỗi CIF.
  • Khi thử lại một lần ghi, hãy dùng CÙNG Idempotency-Key, nếu không bạn sẽ phát hành một chứng từ thứ hai.
  • Endpoint token có giới hạn riêng theo IP. Hãy lưu token trong bộ nhớ đệm suốt toàn bộ thời hạn một giờ.
  • GET /v1/me hiển thị các nhóm giới hạn hiện tại của thông tin xác thực — hữu ích trong kiểm tra tình trạng tích hợp.
  • Cần mức trần cao hơn? Hãy liên hệ với chúng tôi qua trang Liên hệ, kèm khối lượng hằng ngày dự kiến.

Câu hỏi và trả lời cho nhà phát triển

Giới hạn áp dụng theo tài khoản hay theo thông tin xác thực?

Theo thông tin xác thực. Chia lưu lượng cho từng hệ thống giúp một đợt nhập lớn không làm nghẽn luồng trực tiếp của cửa hàng bạn.

Bạn khuyến nghị backoff như thế nào?

Tuân thủ Retry-After khi có; nếu không, dùng lũy thừa bắt đầu từ 1–2 giây với tối đa 5 lần thử. Không dùng vòng lặp dày đặc.

Phản hồi 429 có mang các header X-RateLimit không?

Có. Chúng tôi gửi chúng ngay trên phản hồi 429, chính là nơi client cần chúng để tính thời gian chờ.