服务端 API/API 调用指南/频控策略
# 频控策略

Lark开放平台为不同的 OpenAPI 设定了不同级别的频控控制策略，以保障系统稳定性和为开发者提供最佳性能和优质的开发体验。不同的频控等级的具体限制有所不同，本文列举了在Lark开放平台上提供的具体的频控限制，并说明在调用 OpenAPI 遇到频控限制时应该如何处理。

## 触发限制后的响应

超过限制阈值时，Lark会返回 HTTP 状态码 429 ，将来自该客户端的任何进一步操作限制在一段时间内，并在失败请求的响应头中返回建议的等待时间。

发生限制时，你将收到与如下的示例类似的 HTTP 响应。

```http
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
x-ogw-ratelimit-limit: 100 //窗口期上限，单位：秒
x-ogw-ratelimit-reset: 52 //恢复 limit 周期，单位：秒

{
    "code": 99991400,
    "msg": "request trigger frequency limit"
}
```

对于部分旧版 OpenAPI，你收到的 HTTP 响应可能略有不同（HTTP 状态码为 400）。示例如下：

```
HTTP/1.1 400 Bad Request
Content-Type: application/json
x-ogw-ratelimit-limit: 100 //窗口期上限，单位：秒
x-ogw-ratelimit-reset: 52 //恢复 limit 周期，单位：秒

{
    "code": 99991400,
    "msg": "request trigger frequency limit"
}
```

## 如何处理限制情况

当你在实现错误处理时，可以使用 HTTP 429 错误码来判断出现限流情况。失败的响应头中包含 `x-ogw-ratelimit-reset`，使用该响应头延迟请求是解除限频的最好方法。

1. 等待 `x-ogw-ratelimit-reset` 中指定的秒数。
2. 重试请求。
3. 若请求再次失败并出现 HTTP 429 错误码，你将会再次被限制。可以继续使用推荐的 `x-ogw-ratelimit-reset` 延迟并重试请求，直到成功。

## 频控策略等级

通常情况下，频控策略等级都是应用于 **每个 API**、 **每个应用**、**每个租户** 的基础上。
根据场景的不同，同一个资源的不同操作方法可能频控等级不同。例如，写入接口的频控等级会略低于读取接口，以保护系统本身的可靠性。
- 自建应用根据所属企业的套餐不同，对应的频控等级有所不同。商店应用则与所在企业无关，受商店应用自身频控策略限制。
- 自定义机器人的频率控制和普通应用不同，为 100 次/分钟，5 次/秒。
- 大部分 OpenAPI 的频控策略归属于某一个特定的频控策略等级，但也有部分 OpenAPI 由于较为复杂，不在标准的频控策略当中覆盖，你需要通过联系技术支持获取具体的频控策略。
- 对于不同时间周期内的限频策略（如 1000次/分&50次/秒），请求速率达到任意上限（QPS 或 QPM）都会触发限流。
- 每一个频控策略等级的具体限制值是有可能发生变化的，我们将在发生变化时通过Lark开放平台的更新日志告诉你。

等级 | 描述 | 基础版自建应用限制 | 商业版自建应用限制 | 商店应用限制
---|---|---|---|---
1 | 当前 API在每个应用、每个租户 10 次 / 分钟 | 10次/分 | 10次/分 | 10次/分
2 | 当前 API在每个应用、每个租户 20 次 / 分钟 | 20次/分 | 20次/分 | 20次/分
3 | 当前 API在每个应用、每个租户 100 次 / 分钟 | 100次/分 | 100次/分 | 100次/分
4 | 当前 API在每个应用、每个租户 1000 次/分钟、50 次/秒 | 1000次/分 & 50次/秒 | 1000次/分 & 50次/秒 | 1000次/分 & 50次/秒
5 | 当前 API在每个应用、每个租户 1 次 / 秒 | 1次/秒 | 1次/秒 | 1次/秒
6 | 当前 API在每个应用、每个租户 5 次 / 秒 | 5次/秒 | 5次/秒 | 5次/秒
7 | 当前 API在每个应用、每个租户 10 次 / 秒 | 10次/秒 | 10次/秒 | 10次/秒
8 | 当前 API在每个应用、每个租户 20 次 / 秒 | 20次/秒 | 20次/秒 | 20次/秒
9 | 当前 API在每个应用、每个租户 50 次 / 秒 | 50次/秒 | 50次/秒 | 50次/秒
10 | 当前 API在每个应用、每个租户 50 次 / 秒 | 50次/秒 | 100次/秒 | 50次/秒
11 | 当前 API在每个应用、每个租户 100 次 / 秒 | 100次/秒 | 100次/秒 | 100次/秒
特殊频控 | 非标准频控，请点击右下角”技术支持“了解具体配置 | &nbsp; | &nbsp; | &nbsp;

## 如何针对应用、企业提升 API 接口频控

Lark开放平台暂不支持自行调整 API 接口频控。如你有数据迁移、大型活动等场景需要短时间提升接口频控，可联系所在企业的 CSM（客户成功经理），提升接口频控。
[消息](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/introduction)、[群组](https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/group/overview)、[多维表格](https://open.larksuite.com/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/bitable-overview)暂时不支持提频。