lifi_api_documentation.md•11.6 kB
# LI.FI General API 完整文档
## 概述
LI.FI的API基于REST原则构建,通过HTTPS提供服务。本文档包含所有General API端点的完整信息,包括参数和使用示例。
**基础URL:** `https://li.quest/v1`
## 认证
通过自定义HTTP头 `x-lifi-api-key` 进行API认证。基本使用不需要API密钥,但需要更高速率限制时需要API密钥。
```bash
curl --location 'https://li.quest/v1/endpoint' \
--header 'x-lifi-api-key: YOUR_CUSTOM_KEY'
```
## 速率限制
### 未认证用户
- 报价相关端点:每2小时200次请求
- 其他端点:每2小时200次请求
### 已认证用户
- 报价相关端点:每分钟200次请求
- 其他端点:每分钟200次请求
## General API 端点
### 1. 获取所有当前支持的链信息
**端点:** `GET /chains`
**描述:** 获取所有当前支持的区块链网络信息。
**URL:** `https://li.quest/v1/chains`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/chains
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 查询参数
- `chainTypes` (string, 可选): 按类型过滤链(如EVM、Solana等)
#### 响应 (200 - application/json)
返回所有支持的区块链网络信息。
**链对象属性:**
- `id` (number): 链ID
- `key` (string): 链标识符键
- `name` (string): 链名称
- `coin` (string): 原生代币符号
- `mainnet` (boolean): 是否为主网链
- `logoURI` (string): 链标志URL
- `tokenlistUrl` (string): 链的代币列表URL
- `faucetUrls` (array): 测试网水龙头URL列表
---
### 2. 获取指定链ID的Gas价格
**端点:** `GET /gas/prices/{chainId}`
**描述:** 获取指定chainId的最新gas价格信息。
**URL:** `https://li.quest/v1/gas/prices/{chainId}`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/gas/prices/1
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 路径参数
- `chainId` (string, 必需): 需要获取gas价格的链ID
#### 响应 (200 - application/json)
返回指定链的当前gas价格信息。
**响应示例:**
```json
{
"standard": 123,
"fast": 123,
"fastest": 123,
"lastUpdated": 123
}
```
**响应属性:**
- `standard` (number): 标准gas价格
- `fast` (number): 快速gas价格
- `fastest` (number): 最快gas价格
- `lastUpdated` (number): 最后更新时间戳
#### 错误响应
- `400`: 请求错误 - 无效的chainId
---
### 3. 获取指定链的Gas建议
**端点:** `GET /gas/suggestion/{chain}`
**描述:** 获取指定链所需gas数量的建议。建议基于通过LI.FI在指定链上进行的10次批准和10次基于uniswap的交换的平均价格。
**URL:** `https://li.quest/v1/gas/suggestion/{chain}`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/gas/suggestion/1
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 路径参数
- `chain` (string, 必需): 需要获取gas建议的链(可以是链ID或链键)
#### 查询参数
- `fromChain` (string, 可选): 如果指定了fromChain和fromToken,结果将包含用户需要发送多少fromToken数量才能在请求的链上接收建议的gas数量的信息
- `fromToken` (string, 可选): 用于计算接收建议gas所需数量的代币地址
#### 响应 (200 - application/json)
返回指定链的gas建议信息。
---
### 4. 获取所有已知代币
**端点:** `GET /tokens`
**描述:** 获取LI.FI服务已知的所有代币信息。
**URL:** `https://li.quest/v1/tokens`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/tokens
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 查询参数
- `chains` (string, 可选): 将结果代币限制为给定的链
- `chainTypes` (string, 可选): 将结果代币限制为给定的链类型
- `minPriceUSD` (number, 可选): 按最小代币价格(美元)过滤结果。此参数的最小值为0。默认为0.0001美元
#### 响应 (200 - application/json)
响应是一个对象,其中键是链ID,值是代币对象数组。
**代币对象属性:**
- `address` (string, 必需): 代币地址
- `decimals` (number, 必需): 代币使用的小数位数
- `symbol` (string, 必需): 代币符号
- `chainId` (number, 必需): 代币链的ID
- `name` (string, 必需): 代币名称
- `coinKey` (string): 代币标识符
- `logoURI` (string): 代币标志
- `priceUSD` (string): 代币美元价格
**响应示例:**
```json
{
"1": [
{
"address": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",
"symbol": "DAI",
"decimals": 18,
"chainId": 137,
"name": "(PoS) Dai Stablecoin",
"coinKey": "DAI",
"priceUSD": "1",
"logoURI": "https://static.debank.com/image/matic_token/logo_url/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063/549c4205dbb199f1b8b03af783f35e71.png"
}
]
}
```
---
### 5. 获取代币信息
**端点:** `GET /token`
**描述:** 通过地址或符号及其链获取代币的详细信息。
**URL:** `https://li.quest/v1/token`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/token?chain=1&token=0x...
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 查询参数
- `chain` (string, 必需): 代币存在的链ID或名称
- `token` (string, 必需): 要获取信息的代币地址或符号
#### 响应 (200 - application/json)
返回特定代币的详细信息。
**代币对象属性:**
- `address` (string): 代币地址
- `symbol` (string): 代币符号
- `decimals` (number): 代币使用的小数位数
- `chainId` (number): 代币链的ID
- `name` (string): 代币名称
- `coinKey` (string): 代币标识符
- `priceUSD` (string): 代币美元价格
- `logoURI` (string): 代币标志
#### 错误响应
- `400`: 请求错误 - 无效参数
- `404`: 未找到 - 代币未找到
---
### 6. 获取可用的桥接和交易所
**端点:** `GET /tools`
**描述:** 获取通过我们服务可用的桥接和交易所信息。
**URL:** `https://li.quest/v1/tools`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/tools
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 查询参数
- `chains` (string, 可选): 将结果工具限制为给定的链
#### 响应 (200 - application/json)
返回可用桥接和交易所的信息。
**响应结构:**
- `exchanges` (array): 可用交易所列表
- `bridges` (array): 可用桥接列表
**交易所/桥接对象属性:**
- `key` (string): 工具的唯一标识符
- `name` (string): 工具的显示名称
- `logoURI` (string): 工具标志的URL
- `supportedChains` (array): 此工具支持的链ID列表
**响应示例:**
```json
{
"exchanges": [
{
"key": "1inch",
"name": "0x",
"logoURI": "https://raw.githubusercontent.com/lifinance/types/main/src/assets/icons/exchanges/zerox.svg",
"supportedChains": [
"1",
"137",
"56"
]
}
],
"bridges": [
// 类似结构的桥接对象
]
}
```
---
### 7. 获取链之间的可能连接
**端点:** `GET /connections`
**描述:** 获取链之间所有可能传输的信息。由于结果可能非常大,需要至少按一个链进行过滤。
**URL:** `https://li.quest/v1/connections`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/connections?fromChain=1
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 查询参数
- `fromChain` (string, 可选): 过滤连接的源链ID
- `toChain` (string, 可选): 过滤连接的目标链ID
- `fromToken` (string, 可选): 过滤连接的源代币地址
- `toToken` (string, 可选): 过滤连接的目标代币地址
- `allowBridges` (string, 可选): 允许的桥接键的逗号分隔列表
- `denyBridges` (string, 可选): 拒绝的桥接键的逗号分隔列表
- `allowExchanges` (string, 可选): 允许的交易所键的逗号分隔列表
- `denyExchanges` (string, 可选): 拒绝的交易所键的逗号分隔列表
#### 响应 (200 - application/json)
根据提供的过滤器返回链之间所有可能的连接。
**响应结构:**
- `connections` (array): 链之间可能连接的列表
**连接对象属性:**
- `fromChainId` (number): 源链ID
- `toChainId` (number): 目标链ID
- `fromTokens` (array): 源链上的可用代币
- `toTokens` (array): 目标链上的可用代币
---
### 8. 检查跨链传输状态
**端点:** `GET /status`
**描述:** 使用交易哈希或其他标识符检查跨链传输的状态。
**URL:** `https://li.quest/v1/status`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/status?txHash=0x...
```
#### 请求头
- `x-lifi-api-key` (string, 可选): 认证头,如需注册请联系支持团队
#### 查询参数
- `txHash` (string, 可选): 要检查状态的交易哈希
- `transactionId` (string, 可选): 替代交易标识符
#### 响应 (200 - application/json)
返回跨链传输的当前状态。
---
### 9. 获取集成商费用提取交易
**端点:** `GET /integrator/{integratorId}/fees/{chainId}`
**描述:** 获取从指定链提取集成商收集费用的交易请求。
**URL:** `https://li.quest/v1/integrator/{integratorId}/fees/{chainId}`
**请求示例:**
```bash
curl --request GET \
--url https://li.quest/v1/integrator/your-integrator-id/fees/1
```
#### 请求头
- `x-lifi-api-key` (string, 必需): 认证头,如需注册请联系支持团队
#### 路径参数
- `integratorId` (string, 必需): 请求费用提取的集成商ID
- `chainId` (string, 必需): 指定要提取资金的链ID
#### 查询参数
- `tokens` (string, 可选): 指定要提取资金的代币
#### 响应 (200 - application/json)
返回包含交易请求的 `IntegratorWithdrawalTransactionResponse` 对象。
**响应示例:**
```json
{
"transactionRequest": {
"data": "0x",
"to": "0xbD6C7B0d2f68c2b7805d88388319cfB6EcB50eA9"
}
}
```
#### 错误响应
- `400`: 请求错误 - 如果提供的代币地址没有收集到费用
---
## 错误处理
LI.FI API使用标准HTTP状态码来指示请求的成功或失败:
- `200`: 成功 - 请求成功
- `400`: 请求错误 - 请求无效或格式错误
- `404`: 未找到 - 请求的资源未找到
- `429`: 请求过多 - 超出速率限制
- `500`: 内部服务器错误 - 发生意外错误
### 常见错误响应格式
```json
{
"errorType": "NO_QUOTE",
"code": "INSUFFICIENT_LIQUIDITY",
"message": "工具的流动性不足。",
"tool": "1inch"
}
```
### 错误代码
- `INSUFFICIENT_LIQUIDITY`: 工具的流动性不足以满足请求的数量
- `TOOL_TIMEOUT`: 第三方工具超时
- `NO_POSSIBLE_ROUTE`: 无法找到请求传输的路由
## 最佳实践
1. **缓存**: 缓存 `/chains` 和 `/tokens` 等端点的响应,因为它们不经常更改
2. **速率限制**: 尊重速率限制并为重试实施指数退避
3. **错误处理**: 始终优雅地处理错误并向用户提供有意义的反馈
4. **认证**: 使用API密钥获得更高的速率限制和更好的服务可靠性
5. **过滤**: 使用查询参数过滤结果并减少响应大小
## 支持
如需额外支持或申请更高速率限制的API密钥,请联系LI.FI支持团队。
---
*本文档涵盖了LI.FI API中所有可用的General API端点。有关报价相关端点和高级功能,请参考LI.FI官方文档中的相应部分。*