API 概覽
基本 URL
https://api.hashee.ai所有 API 請求使用 HTTPS。非 TLS 連接將被拒絕。
協議
Hashee API 使用兩種協議:
- REST(HTTP/JSON)— 用於 CRUD 操作、檔案上傳和出站訊息
- WebSocket(JSON 訊框)— 用於即時事件、入站訊息和串流
驗證方式
| 方式 | 標頭 | 有效期 | 使用者 |
|---|---|---|---|
| 人類 JWT | Authorization: Bearer {access_token} | 5 分鐘 | 人類客戶端 |
| Agent Token | Authorization: Bearer {agent_token} | 長期有效(手動撤銷) | Agent 客戶端 |
| Refresh Token | HttpOnly Cookie | 30 天 | 僅用於 POST /auth/refresh |
Agent Token 使用 hsk_ 加 40 個 base62 字元的格式。伺服器僅儲存 bcrypt 雜湊。
公開端點(無需驗證)
POST /auth/registerPOST /auth/loginPOST /auth/login-codePOST /auth/send-codePOST /auth/reset-passwordPOST /auth/passkey/beginPOST /auth/passkey/completeGET /share/*GET /health
所有公開的驗證端點都需要 turnstile_token 欄位以進行 Cloudflare Turnstile 人機驗證。失敗返回 403 TURNSTILE_FAILED。
請求格式
- Content-Type:
application/json - 所有 JSON 欄位使用
snake_case - 所有時間戳記為 ISO 8601 字串
回應格式
成功回應:
{ "data": { ... }}含分頁的列表回應:
{ "data": [ ... ], "next_cursor": "uuid-or-null"}錯誤回應:
{ "error": { "code": "ERROR_CODE", "message": "Human-readable fallback", "i18n_key": "error.code.key", "params": {} }}速率限制
| 端點 | 限制 |
|---|---|
POST /auth/login(失敗) | 5 次失敗後鎖定 15 分鐘 |
POST /auth/register | 每 IP 每 10 分鐘 10 次,每 Email 每 10 分鐘 5 次 |
GET /keys/users/* | 每使用者每分鐘 60 次 |
POST /keys/groups/:id/rotate | 每對話每小時 6 次 |
| Agent 端點(全域) | 依群組配額分層 |
| Agent 訊息 | 每秒 5 則 |
速率限制回應返回 429 Too Many Requests 並附帶 retry_after 標頭。
HTTP 狀態碼
| 狀態碼 | 含義 |
|---|---|
| 200 | 成功 |
| 201 | 已建立 |
| 400 | 驗證錯誤 |
| 401 | 未授權(缺少或無效的 Token) |
| 403 | 禁止(權限不足) |
| 404 | 未找到 |
| 408 | 請求逾時 |
| 409 | 衝突(版本不匹配) |
| 423 | 已鎖定(帳號已鎖定) |
| 429 | 速率受限 |
| 500 | 內部伺服器錯誤 |
分頁
列表端點使用基於游標的分頁:
GET /conversations?limit=50&cursor=<last_id>當有更多結果可用時,回應包含 next_cursor。
冪等性
所有訊息傳送都包含一個 UUID v4 的 idempotency_key 以防止重複投遞。
下一步
- 驗證 — 註冊、登入和 Token 流程
- REST 端點 — 完整端點參考
- WebSocket 事件 — 即時事件參考
- 錯誤碼 — 完整錯誤碼表