跳轉到主要內容
文件API 開放平台鑑權與速率限制

鑑權與速率限制

Bearer / X-API-Key / query 三種寫法、套餐速率上限、HTTP 狀態碼語意。

開放平台所有端點統一透過 API Key 鑑權。本頁講清楚三種 Token 寫法、套餐速率限制、以及錯誤回應的語意。

三種鑑權寫法

1. Authorization: Bearer(推薦)

bash
curl https://braidrun.com/api/v1/workflows \
  -H "Authorization: Bearer dyk_<id>_<secret>"

最標準的寫法,所有 SDK 預設支援。生產環境優先使用。

2.X-API-Key Header

bash
curl https://braidrun.com/api/v1/workflows \
  -H "X-API-Key: dyk_<id>_<secret>"

適合某些封閉網路的代理人無法轉送 Authorization Header 的場景。功能等同於 Bearer。

3. Query 參數 ?api_key=(僅限不能寫 Header 的場景)

text
https://braidrun.com/api/webhook-trigger/approval/appr-123/approve?api_key=dyk_<id>_<secret>
謹慎使用 query 參數

Query 參數會被記錄在瀏覽器歷史、Referer Header、HTTP server 存取日誌、CDN 日誌中。僅用於必須以 GET 連結形式觸發的場景(例如郵件 / Slack / Telegram 一鍵審批連結),並配合短 TTL 的 Key。絕對不要把 Bearer 優先權讓位給 query 參數。

優先級

  1. Authorization: Bearer dyk_…
  2. X-API-Key: dyk_…
  3. ?api_key=dyk_…

從上到下依序嘗試,找到一個非空就停止解析。

速率限制

每個 API Key 各自有「每分鐘」和「每日」兩個上限,按 Key owner 的套餐自動應用。 每個 Key 獨立配額,不與同賬號的其他 Key 共享。

套餐對照表

套餐每分鐘每日
Free602,000
Pro30050,000
Team1,200500,000
Enterprise6,000不限

視窗語義

  • 每分鐘(minute window) · 使用 epoch 分鐘做 key,每分鐘邊界自動重置(不是從第一次調用算起的滑動窗口)
  • 每日(day window) · 使用 UTC 日期做 key,每日 00:00 UTC 自動重置

達到限額時

http
HTTP/1.1 429 Too Many Requests
Retry-After: 38
X-RateLimit-Limit: 60
X-RateLimit-Window: minute
Content-Type: application/json

{
  "error": "Rate limit exceeded",
  "window": "minute",
  "limit": 60,
  "retryAfterSeconds": 38
}

客戶端應當:

  • 讀取 Retry-After Header(秒數),延遲相應時長後再重試
  • X-RateLimit-Window 告訴您是哪個窗口被命中(minute / day)
  • 指數退避 + jitter;不要在收到 429 後立即重試
多 Key 切分流量

需要更高吞吐?為不同環境 / 不同集成簽發獨立 Key,每個 Key 都拿到完整額度。一個 Pro 用戶開 3 個 Key 等於 900 RPM 總能力。這也是事故定位的最佳實踐——出問題時只需看哪個 Key 的用量異常。

HTTP 回應碼

狀態碼含義因應策略
200成功
202已接受(啟動 execution 時)用傳回的 executionId 輪詢狀態
400請求體非法(JSON / 字段錯誤)修正請求;不要重試
401Token 缺失 / 格式錯誤 / 已撤銷 / 已過期 / scope 不足重新核對 Token 與 scope;不要重試
403Token owner 帳號已停用 / 鎖定聯絡帳號管理員;不要重試
404資源不存在或無可見性檢查 ID / scope;不要重試
409狀態衝突(例如審批已被決策)重新查詢目前狀態
429速率限制遵守 Retry-After 後重試
500/502/503服務端錯誤指數退避 + jitter,重試 3-5 次
為什麼 401 不區分原因

Token 缺失、過期、吊銷、scope 不足全部統一返回 401,不暴露具體失敗原因——這避免了攻擊者通過試錯探測哪些 Key 存在 / 哪些 scope 已開啟。審計日誌中保留了完整的失敗原因(reason 欄位),管理員可以查到。