Assistant CoreAssistant Core
Developer API

Lỗi và giới hạn

Xử lý API errors, idempotency, rate limits và WebSocket close codes.

HTTP và SSE errors

Mọi lỗi /v1, kể cả lỗi xác thực và validation, dùng cấu trúc ổn định sau.

{
  "code": "RATE_LIMITED",
  "message": "Request rate limit exceeded",
  "details": null,
  "request_id": "req_01K...",
  "retryable": true
}

Trong SSE, cùng dữ liệu được gửi trong terminal event error. Luôn lưu request_id để hỗ trợ điều tra.

CodeHTTP thường gặpRetry?Cách xử lý
INVALID_API_KEY401KhôngKiểm tra key, checksum và Authorization header. Key đã xóa cũng trả mã này.
API_KEY_EXPIRED401KhôngKey hết hạn hoặc hết thời gian ân hạn khi rotate; dùng key thay thế.
API_KEY_REVOKED401KhôngDùng credential đang hoạt động.
INSUFFICIENT_SCOPE403KhôngTạo key với scope cần thiết.
IP_NOT_ALLOWED403KhôngGọi từ IP nằm trong allowlist của key.
ASSISTANT_INACTIVE403KhôngKích hoạt lại trợ lý.
FEATURE_NOT_AVAILABLE403KhôngKiểm tra plan, feature của owner và model yêu cầu.
FILE_UPLOAD_DISABLED403KhôngBật upload tệp cho trợ lý.
VOICE_DISABLED403KhôngBật giọng nói cho trợ lý.
ACTOR_CONFLICT409KhôngDùng external_user_id khác.
INSUFFICIENT_CREDITS429Không ngayOwner cần bổ sung credits.
RATE_LIMITED429CóChờ Retry-After.
IDEMPOTENCY_CONFLICT409KhôngDùng key mới hoặc body ban đầu.
REQUEST_IN_PROGRESS409CóChờ rồi retry cùng key/body.
CONVERSATION_NOT_FOUND404KhôngKiểm tra assistant, external user và UUID.
MESSAGE_NOT_FOUND404KhôngKiểm tra message ID và external user.
FILE_NOT_FOUND404KhôngUpload tệp cho cùng external user; details.file_id chỉ rõ tệp.
RESPONSE_NOT_FOUND404KhôngKiểm tra ID và external user; thử lại sau khi response hoàn tất.
INVALID_CURSOR400KhôngTruyền last_id của cùng hội thoại vào after.
VALIDATION_ERROR422KhôngSửa request; details.errors liệt kê field lỗi.
UNSUPPORTED_FILE_TYPE415KhôngTải lên loại file được hỗ trợ, có nội dung khớp với phần mở rộng.
FILE_TOO_LARGE413KhôngUpload tệp tối đa 25 MiB.
INVALID_AUDIO_FORMAT400KhôngDùng codec/rate/channel được hỗ trợ.
CONTEXT_TOO_LARGE400KhôngTạo hội thoại mới.
UPSTREAM_UNAVAILABLE503CóBackoff và retry có giới hạn.
RATE_LIMIT_UNAVAILABLE503CóBackoff và retry; API fail closed.
INTERNAL_SERVER_ERROR500CóRetry có backoff và gửi request_id cho support.

Chỉ retry khi retryable là true hoặc tài liệu chỉ rõ. Dùng exponential backoff có jitter, đặt số lần thử tối đa và giữ cùng idempotency key cho cùng thao tác logic.

Rate limits

Response có thể chứa:

HeaderÝ nghĩa
RateLimit-LimitSố request tối đa trong window hiện tại.
RateLimit-RemainingSố request còn lại.
RateLimit-ResetSố giây đến khi window hiện tại reset.
Retry-AfterSố giây phải chờ sau lỗi 429.
X-Request-IDID dùng để trace/support.

Giới hạn dùng chung cho mọi key của một trợ lý, nên tạo thêm key không tăng hạn mức. Giới hạn mặc định:

BucketGiới hạn
Tất cả API requests120/phút
Chat responses30/phút
Tạo voice session20/phút

Plan Enterprise cho phép 600 requests, 120 chat responses và 60 voice sessions mỗi phút. Giới hạn dùng sliding window một phút. Client nên đọc headers thay vì hard-code các giá trị này.

WebSocket errors

{
  "type": "error",
  "sequence": 8,
  "error": {
    "code": "INVALID_EVENT_ORDER",
    "message": "Audio frames require input_audio.start",
    "retryable": false
  }
}

Close codes:

CodeÝ nghĩa
1000Kết thúc bình thường.
1002Protocol violation.
1008Authentication, policy, ordering hoặc limit violation.
1009JSON/binary frame quá lớn.
1011Lỗi provider hoặc lỗi server.

Không reconnect với cùng session token. Với lỗi có thể retry, yêu cầu backend cấp token mới rồi mở connection mới. Với 1008, sửa credential, origin, event order hoặc limit trước khi thử lại.

Khi liên hệ support

Gửi endpoint, timestamp, HTTP status/close code, request_id, session_id và public credential prefix. Không gửi full API key, session token, raw audio hoặc dữ liệu cá nhân không cần thiết.

On this page