# 速率限制與併發

請求限制、任務限制及 429 的處理方式。

來源：https://scifig.ai/zh-Hant/docs/api/rate-limits

## 限制

| 限制 | 數值 | 適用範圍 |
| --- | --- | --- |
| 建立請求 | 每分鐘 20 次 | 每個 API 金鑰，或每個 OAuth 用戶端與帳戶，跨所有 `POST` 端點計算 |
| 建立請求 | 每分鐘 40 次 | 每個帳戶，跨其所有憑證計算 |
| 讀取請求 | 每分鐘 120 次 | 每個 API 金鑰，或每個 OAuth 用戶端與帳戶 |
| 執行中任務 | 按方案（參閱 `GET /credits`） | 每個帳戶，與網站共享 |
| 每小時任務數 | 每個滾動小時 200 個 | 每個帳戶，與網站共享 |
| 點陣圖轉換 | 每天 200 次 | 每個帳戶 |
| 文字識別 | 每 15 分鐘 20 次 | 每個帳戶，與網站共享 |
| 有限等待 | 30 秒 | 每個請求 |

## 處理 429

- 透過驗證和權限檢查的請求，其響應攜帶最嚴格請求視窗對應的 `X-RateLimit-Limit`、`X-RateLimit-Remaining` 和 `X-RateLimit-Reset`。`401` 和 `403 SCOPE_DENIED` 不包含這些請求標頭。`429` 攜帶以秒計的 `Retry-After`。
- `429 CONCURRENCY_LIMITED` 表示帳戶已有過多任務正在執行；已完成任務不再計入。`429 RATE_LIMITED` 的原因見下方。
- 至少等待 `Retry-After` 指示的時長，以帶隨機抖動的指數退避方式重試，並使用相同的 `Idempotency-Key`。
- 任務限制屬於帳戶，增加金鑰不會增加容量。

## 429 的原因

- 請求過多：每個憑證每分鐘 20 次建立請求、每個帳戶每分鐘 40 次建立請求、每個憑證每分鐘 120 次讀取請求。`Retry-After` 指示視窗重置前的等待時間；不包含 `details.reason`。
- 最近一小時啟動的任務過多：每個帳戶最多 200 個，與網站共享。`Retry-After: 30`。
- 執行中任務過多：`429 CONCURRENCY_LIMITED`，按方案限制並與網站共享（參閱 `GET /credits`）。`Retry-After: 30`。
- 每日 200 次免費 PNG、PDF、TIFF 和 PPTX 轉換額度已用完：`details.reason = DAILY_CONVERSION_LIMIT`，`Retry-After` 指示每日視窗重置前的等待時間。
- 上傳過快：`details.reason = UPLOAD_RATE_LIMITED`（`POST /files` 的圖片和遮罩、流程圖附件、圖表資料），對應網站每分鐘上傳限制。
- 每日上傳過多：`details.reason = UPLOAD_DAILY_LIMIT_REACHED`（流程圖附件和圖表資料），對應網站每日上傳限制。
- 文字識別：每個帳戶每 15 分鐘 20 次，與網站共享。
