APITham khảo
Giới hạn tốc độ và Header
Giới hạn tốc độ, hạn mức và các header response của Fleetwork API.
Giới hạn theo gói
| Giới hạn | Free | Premium | Internal |
|---|---|---|---|
| Request mỗi giây | 2 | 10 | 100 |
| Request mỗi phút | 60 | 500 | 5,000 |
| Request mỗi giờ | 1,000 | 20,000 | Không giới hạn |
| Request mỗi ngày | 10,000 | 200,000 | Không giới hạn |
| Request mỗi tháng | 100,000 | 5,000,000 | Không giới hạn |
| Hạn mức hàng tháng | 100,000 | 5,000,000 | Không giới hạn |
| Số API Key tối đa | 1 | 5 | 20 |
| Mức cho phép burst | 5 | 50 | 200 |
Header Giới hạn tốc độ
Mỗi response cho request được xác thực bằng API Key đều bao gồm:
| Header | Mô tả |
|---|---|
X-RateLimit-Limit | Số request tối đa mỗi phút cho khoá (0 = không giới hạn) |
X-RateLimit-Remaining | Số request còn lại trong cửa sổ hiện tại |
X-RateLimit-Reset | Timestamp ISO 8601 khi cửa sổ reset |
Retry-After | (Chỉ HTTP 429) Số giây cần chờ trước khi thử lại |
Header Hạn mức
| Header | Mô tả |
|---|---|
X-Quota-Limit | Giới hạn hạn mức hàng tháng |
X-Quota-Remaining | Hạn mức còn lại trong tháng này |
X-Quota-Used | Hạn mức đã dùng trong tháng này |
Header thông tin
| Header | Mô tả |
|---|---|
X-API-Key-Id | UUID của API Key đã xác thực |
X-Module-Id | UUID của module được truy cập |
X-Module-Name | Tên của module được truy cập |
Ví dụ response
Response bình thường
HTTP
HTTP/1.1 200 OK
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 497
X-Quota-Limit: 5000000
X-Quota-Remaining: 4999823
X-Quota-Used: 177
X-API-Key-Id: 3513c8c9-6ea7-47c3-ba37-188b842fa590
X-Module-Name: Job Management
Content-Type: application/jsonResponse bị giới hạn
HTTP
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0
Retry-After: 45
Content-Type: application/jsonXử lý Giới hạn tốc độ
JavaScript
async function apiCallWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '1');
await new Promise(r => setTimeout(r, retryAfter * 1000));
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}