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-*.
Hóa đơn đầu tiên trong 6 bước
- 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.
- 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.
- Mọi phản hồi đều có X-RateLimit-Limit, X-RateLimit-Remaining và X-RateLimit-Reset, kể cả 429.
- 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ạn | Yêu cầu / phút | Ý nghĩa |
|---|---|---|
| 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 |
Lỗi
| Trạng thái | Loại | Mã |
|---|---|---|
| 429 | rate_limit_error | rate_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ờ.