API trả về lỗi dưới 2 dạng:Documentation Index
Fetch the complete documentation index at: https://developers.fhsc.com.vn/llms.txt
Use this file to discover all available pages before exploring further.
- HTTP status ở response header (4xx / 5xx).
error_codeở response body — string"0"khi thành công, mã khác"0"khi lỗi.
Bảng HTTP status
| Status | Ý nghĩa | Khi nào |
|---|---|---|
200 | OK | Request thành công, error_code: "0" |
400 | Bad Request | Thiếu / sai param, body không hợp lệ |
401 | Unauthorized | API key sai, signature không hợp lệ, timestamp lệch, nonce reused |
429 | Too Many Requests | Vượt rate limit — xem Rate limits |
500 | Internal Server Error | Lỗi server. Retry sau khi backoff |
Mã lỗi xác thực (HTTP 401)
AUTH_API_KEY_INVALID
AUTH_API_KEY_INVALID
API key không hợp lệ hoặc đã bị thu hồi. Liên hệ team Finhay để kiểm
tra trạng thái key hoặc cấp key mới.
AUTH_SIGNATURE_INVALID
AUTH_SIGNATURE_INVALID
X-FH-SIGNATURE không match với payload do client tính. Nguyên nhân
phổ biến:- Sai thuật toán: phải là
HMAC-SHA256với output hex lowercase. - Sai thứ tự / format payload: đúng phải là
{TIMESTAMP}\n{METHOD}\n{PATH}[?{QUERY}]\n{BODYHASH}. BODYHASHthiếu hoặc tính sai khi request có body.QUERYkhông canonical (sort key sai, encode sai).
AUTH_TIMESTAMP_OUT_OF_RANGE
AUTH_TIMESTAMP_OUT_OF_RANGE
X-FH-TIMESTAMP lệch quá ±30 giây so với giờ server. Đảm bảo client
đồng bộ NTP. X-FH-TIMESTAMP là Unix timestamp tính bằng mili-giây,
không phải giây.AUTH_NONCE_REUSED
AUTH_NONCE_REUSED
X-FH-NONCE đã được sử dụng với cùng apiKey trong vòng 5 phút gần
nhất. Mỗi request phải sinh nonce mới — khuyến nghị dùng UUIDv4.AUTH_BODYHASH_MISMATCH
AUTH_BODYHASH_MISMATCH
X-FH-BODYHASH không match với SHA256(body) server tính. Đảm bảo:- Body được serialize stable (cùng JSON string client ký và client gửi).
- Hash là hex lowercase, không phải base64.
Mã lỗi request (HTTP 400)
INVALID_PARAMETER
INVALID_PARAMETER
Param không hợp lệ — sai enum, sai range, sai format.
message mô tả
field cụ thể.MISSING_REQUIRED_PARAMETER
MISSING_REQUIRED_PARAMETER
Thiếu param bắt buộc. Ví dụ
/market/financial-data/macro thiếu type
hoặc country.MUTUALLY_EXCLUSIVE_PARAMETER
MUTUALLY_EXCLUSIVE_PARAMETER
Truyền cùng lúc nhiều param loại trừ lẫn nhau. Ví dụ
/market/stock-realtime chỉ được truyền đúng 1 trong symbol /
symbols / exchange.Mã lỗi rate limit (HTTP 429)
RATE_LIMIT_EXCEEDED
RATE_LIMIT_EXCEEDED
Vượt giới hạn request trong cửa sổ thời gian hiện tại. Response kèm
header
X-RateLimit-Reset cho biết thời điểm có thể retry.Xem chi tiết ở Rate limits.Chiến lược xử lý lỗi
Retry chỉ khi đúng case
- Retry với backoff cho
429(tớiX-RateLimit-Reset) và5xx(exponential backoff, max 3 lần). - Không retry cho
400và401— fix root cause trước.