> ## Documentation Index
> Fetch the complete documentation index at: https://docs.li.fi/llms.txt
> Use this file to discover all available pages before exploring further.

# 速率限制和 API 身份验证

为了减少滥用并管理我们 API 的容量，我们对 LI.FI API 使用实施了限制。

速率限制适用于使用您的 `x-lifi-api-key` 发出的请求，并按 API 密钥跨所有端点计算。这些限制有助于防止滥用并确保每个人的流畅体验。

# 当前速率限制

生产使用的默认速率限制如下：

### 未认证

| 端点范围                                                                    | 速率限制         |
| ----------------------------------------------------------------------- | ------------ |
| <Tooltip tip="包括 /quote、/routes 和 /stepTransaction 端点">报价相关端点</Tooltip> | 每两小时 200 个请求 |
| 其他端点                                                                    | 每两小时 200 个请求 |

### 已认证

| 端点范围                                                                    | 速率限制        |
| ----------------------------------------------------------------------- | ----------- |
| <Tooltip tip="包括 /quote、/routes 和 /stepTransaction 端点">报价相关端点</Tooltip> | 每分钟 200 个请求 |
| 其他端点                                                                    | 每分钟 200 个请求 |

<Note> 速率限制在两小时窗口内强制执行，以应对流量峰值 </Note>

> 🔒 企业客户可能有更高的限制。请查看我们的[计划页面](https://li.fi/plans/)了解更多详情。

# 处理速率限制

每个响应都在标头中包含您当前的速率限制。请记住，限制可能因端点而异。

在合作伙伴门户中，您会看到每分钟请求数 (RPM) 限制。为了在峰值期间给您灵活性，我们不会逐分钟强制执行。相反，我们将您的 RPM 乘以 120 并将其应用为两小时滚动窗口。

👉 示例：如果您的限制是 100 RPM，这意味着您可以在任何两小时窗口内最多发出 12,000 个请求——要么一次性发出，要么按您喜欢的方式分散。

### 请求响应中的速率限制信息

`ratelimit-reset`：速率限制将在多少秒后重置（2 小时等于 7200）

`ratelimit-limit`：2 小时期间的总限制

`ratelimit-remaining`：重置前还剩多少限制

以下是计算平均 RPM 的方法：

`(ratelimit-limit - ratelimit-remaining) / ((7200 - ratelimit-reset) / 60)`

如果您超过速率限制，您将收到 `429 Too Many Requests` HTTP 响应。当这种情况发生时：

* 您将收到一个错误消息，显示速率限制何时解除（例如，5 小时）
* 请求更高的速率限制

# 最佳实践

为避免达到速率限制：

* 缓存来自 `GET /tokens`、`GET /chains` 和静态端点的结果
* 避免频繁轮询相同的数据
* 批处理或防抖触发 API 调用的用户输入

# 滥用预防

为防止滥用，LI.FI 可能会暂时阻止以下密钥：

* 持续超过速率限制
* 尝试通过多个密钥或 IP 绕过限制
* 导致服务性能下降

# 使用 API 密钥

<Note>所有 LI.FI API 都不需要 API 密钥。API 密钥仅用于更高的速率限制</Note>

LI.FI API 的身份验证通过自定义 HTTP 标头 `x-lifi-api-key` 和 API 密钥执行。如果您使用客户端 SDK，您将在[创建配置](/zh-Hans/sdk/configure-sdk)时设置 API，然后 SDK 将在每个请求中代表您发送标头。如果直接与 API 集成，您需要自己发送此标头，如下所示：

```curl theme={"system"}
curl --location 'https://li.quest/v1/quote?fromChain=100&fromAmount=1000000&fromToken=0x4ecaba5870353805a9f068101a40e0f32ed605c6&fromAddress=0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0&toChain=137&toToken=0x2791bca1f2de4661ed88a30c99a7a9449aa84174&slippage=0.03' \
--header 'x-lifi-api-key: YOUR_CUSTOM_KEY'
```

可以使用以下端点测试 API 密钥：

```javascript theme={"system"}
curl --location 'https://li.quest/v1/keys/test' 
--header 'x-lifi-api-key: YOUR_CUSTOM_KEY'
```

<Note> 永远不要在客户端环境中暴露您的 `x-lifi-api-key`，例如基于浏览器的 JavaScript 或直接的小部件集成。在客户端使用 API 密钥可能导致未经授权的使用或滥用您的密钥，因为它会在浏览器的开发者工具或网络标签中公开可见。
如果您使用 LI.FI 小部件，您**不需要传递 API 密钥**。小部件在前端安全运行，无需密钥。对于服务器端集成（例如 SDK 或来自后端的 API 请求），请始终保持您的密钥机密和安全。 </Note>

# 需要更高的限制？

如果您正在构建高容量集成或生产级产品，我们很乐意支持您的扩展需求。

请查看我们的[计划页面](https://li.fi/plans/)了解更多详情。
