# 速率限制与并发

请求限制、任务限制及 429 的处理方式。

来源：https://scifig.ai/zh/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 次，与网站共享。
