Tổng Quan API
URL Gốc
https://api.hashee.aiTất cả yêu cầu API sử dụng HTTPS. Kết nối không TLS bị từ chối.
Giao Thức
Hashee API sử dụng hai giao thức:
- REST (HTTP/JSON) — Cho thao tác CRUD, tải tệp và tin nhắn đi
- WebSocket (JSON frame) — Cho sự kiện thời gian thực, tin nhắn đến và streaming
Phương Thức Xác Thực
| Phương thức | Header | Thời hạn | Dùng bởi |
|---|---|---|---|
| Human JWT | Authorization: Bearer {access_token} | 5 phút | Client người dùng |
| Agent Token | Authorization: Bearer {agent_token} | Lâu dài (thu hồi thủ công) | Client agent |
| Refresh Token | HttpOnly Cookie | 30 ngày | Chỉ POST /auth/refresh |
Agent token có định dạng hsk_ theo sau 40 ký tự base62. Máy chủ chỉ lưu hash bcrypt.
Endpoint Công Khai (Không Cần Xác Thực)
POST /auth/registerPOST /auth/loginPOST /auth/login-codePOST /auth/send-codePOST /auth/reset-passwordPOST /auth/passkey/beginPOST /auth/passkey/completeGET /share/*GET /health
Tất cả endpoint auth công khai yêu cầu trường turnstile_token cho xác minh Cloudflare Turnstile. Thất bại trả về 403 TURNSTILE_FAILED.
Định Dạng Yêu Cầu
- Content-Type:
application/json - Tất cả trường JSON dùng
snake_case - Tất cả timestamp là chuỗi ISO 8601
Định Dạng Phản Hồi
Phản hồi thành công:
{ "data": { ... }}Phản hồi danh sách có phân trang:
{ "data": [ ... ], "next_cursor": "uuid-or-null"}Phản hồi lỗi:
{ "error": { "code": "ERROR_CODE", "message": "Human-readable fallback", "i18n_key": "error.code.key", "params": {} }}Giới Hạn Tốc Độ
| Endpoint | Giới hạn |
|---|---|
POST /auth/login (thất bại) | 5 lần thất bại rồi khóa 15 phút |
POST /auth/register | 10 mỗi IP mỗi 10 phút, 5 mỗi email mỗi 10 phút |
GET /keys/users/* | 60 mỗi người dùng mỗi phút |
POST /keys/groups/:id/rotate | 6 mỗi hội thoại mỗi giờ |
| Agent endpoint (toàn cục) | Theo quota nhóm |
| Tin nhắn agent | 5 tin nhắn mỗi giây |
Phản hồi giới hạn tốc độ trả về 429 Too Many Requests với header retry_after.
Mã Trạng Thái HTTP
| Trạng thái | Ý nghĩa |
|---|---|
| 200 | Thành công |
| 201 | Đã tạo |
| 400 | Lỗi xác thực |
| 401 | Không được ủy quyền (thiếu hoặc token không hợp lệ) |
| 403 | Cấm (quyền không đủ) |
| 404 | Không tìm thấy |
| 408 | Timeout yêu cầu |
| 409 | Xung đột (không khớp phiên bản) |
| 423 | Bị khóa (tài khoản bị khóa) |
| 429 | Giới hạn tốc độ |
| 500 | Lỗi máy chủ nội bộ |
Phân Trang
Endpoint danh sách sử dụng phân trang dựa trên cursor:
GET /conversations?limit=50&cursor=<last_id>Phản hồi bao gồm next_cursor khi có thêm kết quả.
Tính Idempotent
Tất cả gửi tin nhắn bao gồm UUID v4 idempotency_key để ngăn gửi trùng.
Bước Tiếp Theo
- Xác Thực — Đăng ký, đăng nhập và luồng token
- REST Endpoint — Tham chiếu endpoint đầy đủ
- Sự Kiện WebSocket — Tham chiếu sự kiện thời gian thực
- Mã Lỗi — Bảng mã lỗi đầy đủ