Skip to main content

用户使用手册

本文档面向接入方开发者,介绍如何使用 Token Price API 查询多链代币价格、资产信息与 DEX 流动性池数据。


目录


1. 快速开始

1.1 服务简介

Token Price API 是一个部署在 Cloudflare Workers 上的多链代币价格聚合查询服务。它提供以下核心能力:

  • 查询系统支持的区块链列表与链基础信息
  • 按代币 ID 或合约地址批量查询实时报价
  • 查询代币资产信息(包括跨链平台分布)
  • 查询法币列表与汇率
  • 搜索 DEX 流动性池数据(数据来源 CoinGecko Onchain API)

所有接口均挂载在 /api 路径前缀下,使用 HTTP/JSON 协议通信,无需身份认证。


1.2 Base URL

所有接口请求均以以下地址为根路径:

https://<your-workers-domain>

请将 <your-workers-domain> 替换为实际部署的 Cloudflare Workers 访问域名。

示例:

https://token-price.example.workers.dev/api/chains

1.3 统一响应结构

所有接口的 HTTP 状态码均为 200,业务成功与失败通过响应体中的 code 字段区分。

响应体结构固定为:

{
"code": 200,
"msg": "success",
"data": {}
}
字段类型说明
codeinteger业务状态码。成功固定为 200,失败为对应错误码
msgstring响应消息。成功时通常为 success
dataobject / string业务数据主体。失败时通常为空字符串 ""

成功响应示例:

{
"code": 200,
"msg": "success",
"data": {
"total": 1,
"items": [...]
}
}

失败响应示例:

{
"code": 20001,
"msg": "ids is required",
"data": ""
}

注意: 即使业务发生错误,HTTP 状态码也仍然是 200。请始终以 code 字段判断业务结果,而非 HTTP 状态码。


1.4 业务错误码

错误码含义常见触发场景
200成功正常响应
20001非法查询参数必填的 query 参数缺失或格式不合法
20002非法路径参数路径参数格式不合法或资源未找到
20003非法请求体JSON 格式错误,或请求体中必填字段缺失/为空
30001服务端错误上游数据源请求失败或服务内部异常

1.5 公共响应头

所有接口响应均携带以下响应头:

响应头说明
X-Trace-ID本次请求的追踪 ID,可用于问题定位与日志关联

部分接口还会附带缓存控制头,具体见各接口说明。


2. 链信息查询

本模块提供系统支持的区块链基础信息查询能力,适用于:

  • 展示平台支持的链列表
  • 根据链名称或 ID 获取链配置(图标、浏览器链接等)

2.1 获取链列表

返回系统当前支持的所有区块链基础信息。

请求

GET /api/chains

请求参数

无。

curl 示例

curl https://<your-workers-domain>/api/chains

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"total": 2,
"items": [
{
"id": 1,
"name": "Ethereum",
"short_name": "eth",
"chain_id": 1,
"chain_type": "evm",
"chain_icon_url": "https://example.com/icons/eth.png",
"explorer_url": "https://etherscan.io"
},
{
"id": 2,
"name": "Solana",
"short_name": "sol",
"chain_type": "solana",
"chain_icon_url": "https://example.com/icons/sol.png",
"explorer_url": "https://explorer.solana.com"
}
]
}
}

响应字段说明(data.items 单条)

字段类型必返回说明
idinteger链在系统内部的主键 ID
namestring链名称,如 Ethereum
short_namestring链简称,如 eth
chain_idinteger链协议层 chain ID(EVM 链通常有此字段)
chain_typestring链类型,如 evmsolana
chain_icon_urlstring链图标 URL
explorer_urlstring链区块浏览器地址

2.2 按 ID 或名称查询链

根据链的数字 ID 或名称返回单条链信息。

请求

GET /api/chains/{id_or_name}

路径参数

参数类型必填说明
id_or_namestring链的数字 ID(如 1)或链名称(如 Ethereum

curl 示例

# 按数字 ID 查询
curl https://<your-workers-domain>/api/chains/1

# 按链名称查询
curl https://<your-workers-domain>/api/chains/Ethereum

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"total": 1,
"items": [
{
"id": 1,
"name": "Ethereum",
"short_name": "eth",
"chain_id": 1,
"chain_type": "evm",
"chain_icon_url": "https://example.com/icons/eth.png",
"explorer_url": "https://etherscan.io"
}
]
}
}

未找到时的响应

注意: 链未找到时,HTTP 状态码仍为 200,通过业务码 20002 标识失败。

{
"code": 20002,
"msg": "chain not found",
"data": ""
}

3. 代币报价查询

本模块提供代币实时报价能力,支持两种查询方式:

  • 按代币 ID 查询:适合已知系统内部代币 ID 的场景,返回带完整市场行情的报价数据
  • 按合约地址查询:适合已知链和合约地址的场景,返回精确到链级别的价格数据

3.1 批量获取最新报价

根据代币 ID 列表批量获取最新报价,支持指定目标法币。

请求

GET /api/quotes/latest

查询参数

参数类型必填默认值说明
idsstring代币 ID 列表,多个值用英文逗号分隔,如 1,1027,825
fiatstringUSD目标法币代码,如 USDCNY。不传时默认使用 USD

curl 示例

# 查询 BTC(id=1)和 ETH(id=1027)的 USD 报价
curl "https://<your-workers-domain>/api/quotes/latest?ids=1,1027"

# 指定法币为 CNY
curl "https://<your-workers-domain>/api/quotes/latest?ids=1,1027&fiat=CNY"

缓存说明

本接口成功响应时会附带以下缓存头,客户端和 CDN 可据此缓存 3 秒:

Cache-Control: public, max-age=3, s-maxage=3

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"items": [
{
"token_id": 1,
"name": "Bitcoin",
"symbol": "BTC",
"fiat_id": 1,
"fiat_code": "USD",
"price": "65000.12345678",
"market_cap": "1280000000000",
"volume_24h": "38000000000",
"volume_change_24h": "0",
"percent_change_1h": "0.12",
"percent_change_24h": "2.35",
"percent_change_7d": "-1.08",
"percent_change_30d": "15.20",
"fully_diluted_valuation": "1365000000000",
"circulating_supply": "19700000",
"total_supply": "19700000",
"max_supply": "21000000"
}
]
}
}

响应字段说明(data.items 单条)

字段类型说明
token_idinteger代币系统内部 ID
namestring代币名称
symbolstring代币符号
fiat_idinteger报价法币系统内部 ID
fiat_codestring报价法币代码,如 USD
pricestring当前价格(字符串格式)
market_capstring市值(字符串格式)
volume_24hstring24 小时成交量(字符串格式)
volume_change_24hstring24 小时成交量变化值(字符串格式)
percent_change_1hstring1 小时涨跌幅(字符串格式)
percent_change_24hstring24 小时涨跌幅(字符串格式)
percent_change_7dstring7 天涨跌幅(字符串格式)
percent_change_30dstring30 天涨跌幅(字符串格式)
fully_diluted_valuationstring完全稀释估值(字符串格式)
circulating_supplystring流通供应量(字符串格式)
total_supplystring总供应量(字符串格式)
max_supplystring最大供应量(字符串格式)

注意: 本接口所有价格、市值、供应量等数值字段均为字符串类型,使用时请自行解析为数字。

缺少 ids 参数时的错误响应

{
"code": 20001,
"msg": "ids is required",
"data": ""
}

3.2 按合约地址批量查询价格

根据链类型、链 ID 和代币合约地址批量返回代币价格信息。适合已知链上地址、需要精确定位代币价格的场景。

请求

POST /api/quotes/price/batch
Content-Type: application/json

请求体结构

{
"token_addrs": [
{
"chain_type": "evm",
"chain_id": 1,
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}
],
"fiat": "USD"
}

请求体字段说明

字段类型必填说明
token_addrsarray待查询的代币地址数组,不能为空
token_addrs[].chain_typestring链类型,如 evmsolana
token_addrs[].chain_idinteger链协议 ID,EVM 链需传入(如以太坊主网为 1),其他链可为 null
token_addrs[].token_addressstring代币合约地址或链上标识
fiatstring目标法币代码,默认为 USD(当前底层主要基于 USD 价格处理)

curl 示例

curl -X POST "https://<your-workers-domain>/api/quotes/price/batch" \
-H "Content-Type: application/json" \
-d '{
"token_addrs": [
{
"chain_type": "evm",
"chain_id": 1,
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chain_type": "solana",
"chain_id": null,
"token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
],
"fiat": "USD"
}'

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"items": [
{
"token_id": 3408,
"name": "USD Coin",
"symbol": "USDC",
"chain_type": "evm",
"chain_id": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"external_id": "usd-coin",
"price_usd": 0.9998,
"market_cap_usd": 43000000000,
"volume_24h_usd": 8500000000,
"percent_change_1h": 0.01,
"percent_change_24h": -0.02,
"percent_change_7d": 0.05,
"percent_change_30d": -0.01,
"last_updated": "2026-04-21T08:00:00Z",
"market_cap": 43000000000,
"fully_diluted_valuation": 43000000000,
"total_volume": 8500000000,
"circulating_supply": 43000000000,
"total_supply": 43000000000,
"max_supply": null
}
]
}
}

响应字段说明(data.items 单条)

字段类型说明
token_idinteger代币系统内部 ID
namestring代币名称
symbolstring代币符号
chain_typestring链类型
chain_idinteger链协议 ID
addressstring代币地址
external_idstring外部数据源(如 CoinGecko)中的代币唯一标识
price_usdnumberUSD 价格(数字类型)
market_cap_usdnumberUSD 市值(数字类型)
volume_24h_usdnumberUSD 口径的 24 小时成交量(数字类型)
percent_change_1hnumber1 小时涨跌幅(数字类型)
percent_change_24hnumber24 小时涨跌幅(数字类型)
percent_change_7dnumber7 天涨跌幅(数字类型)
percent_change_30dnumber30 天涨跌幅(数字类型)
last_updatedstring最后更新时间,ISO 8601 格式
market_capnumber市值(数字类型)
fully_diluted_valuationnumber完全稀释估值(数字类型)
total_volumenumber总成交量(数字类型)
circulating_supplynumber流通供应量(数字类型)
total_supplynumber总供应量(数字类型)
max_supplynumber最大供应量(数字类型)

/api/quotes/latest 的区别: 本接口返回的价格、市值等数值字段均为数字类型(number),而 /api/quotes/latest 返回的是字符串类型。

常见错误响应

// token_addrs 为空数组
{
"code": 20003,
"msg": "token_addrs is required",
"data": ""
}

// 请求体 JSON 格式错误
{
"code": 20003,
"msg": "invalid request body",
"data": ""
}

3.3 报价源查询(预留)

该接口为预留接口,当前版本尚未实现

请求

GET /api/quotes/source/{provider}

响应

无论传入何种 provider,当前版本均返回:

{
"code": 20001,
"msg": "not implemented",
"data": ""
}

4. 资产信息查询

本模块提供代币与法币的基础资产信息查询能力,适用于:

  • 构建代币选择器、搜索框
  • 展示代币跨链平台分布
  • 获取法币列表及实时汇率

4.1 获取代币列表

查询系统内的代币信息,支持三种查询模式。

请求

GET /api/assets/tokens

查询参数

参数类型必填说明
chain_idstring链的系统内部 ID,用于限定查询范围
addressstring代币合约地址,通常需与 chain_id 组合使用

查询模式说明

传参组合行为
不传任何参数返回全量活跃代币列表
仅传 chain_id尝试返回该链的原生币
同时传 chain_idaddress按链 ID 与合约地址精确匹配单个代币

curl 示例

# 获取全量代币列表
curl "https://<your-workers-domain>/api/assets/tokens"

# 获取以太坊(chain_id=1)的原生币 ETH
curl "https://<your-workers-domain>/api/assets/tokens?chain_id=1"

# 按链和合约地址精确查询 USDC
curl "https://<your-workers-domain>/api/assets/tokens?chain_id=1&address=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"total": 2,
"items": [
{
"id": 1001,
"name": "Ether",
"symbol": "ETH",
"decimals": 18,
"logo_url": "https://example.com/eth.png",
"chain_id": 1,
"chain_name": "Ethereum",
"is_native": true
},
{
"id": 1002,
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"logo_url": "https://example.com/usdc.png",
"chain_id": 1,
"chain_name": "Ethereum",
"contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"is_native": false
}
]
}
}

响应字段说明(data.items 单条)

字段类型必返回说明
idinteger代币系统内部 ID
namestring代币名称
symbolstring代币符号
decimalsinteger代币精度(小数位数)
logo_urlstring代币图标 URL
chain_idinteger所属链的系统内部 ID
chain_namestring所属链名称
contract_addressstring代币合约地址;原生币不返回此字段
is_nativeboolean是否为链原生币(如 ETH、SOL)

4.2 搜索代币平台记录

根据代币合约地址、名称或符号,搜索该代币在多个链上的平台记录。

请求

GET /api/assets/tokens/platforms/{name_or_symbol}

路径参数

参数类型必填说明
name_or_symbolstring代币合约地址、名称或符号(精确匹配,不区分大小写)

匹配优先级

  1. 首先尝试将 name_or_symbol 作为合约地址进行精确匹配(不区分大小写)
  2. 若无结果,再按代币名称或符号进行精确匹配(不区分大小写)

curl 示例

# 按符号搜索 USDC 在各链上的平台分布
curl "https://<your-workers-domain>/api/assets/tokens/platforms/USDC"

# 按合约地址搜索
curl "https://<your-workers-domain>/api/assets/tokens/platforms/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"total": 3,
"items": [
{
"id": 1002,
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"chain_id": 1,
"chain_name": "Ethereum",
"contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"is_native": false
},
{
"id": 1003,
"name": "USD Coin",
"symbol": "USDC",
"decimals": 6,
"chain_id": 2,
"chain_name": "BNB Smart Chain",
"contract_address": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
"is_native": false
}
]
}
}

响应字段含义与 4.1 获取代币列表 中的 TokenItem 相同。


4.3 获取法币列表

返回系统支持的法币信息列表。

请求

GET /api/assets/fiats

请求参数

无。

curl 示例

curl "https://<your-workers-domain>/api/assets/fiats"

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"total": 3,
"items": [
{
"id": 1,
"code": "USD",
"name": "US Dollar",
"symbol": "$",
"icon_url": "https://example.com/usd.png",
"precision": 2
},
{
"id": 2,
"code": "CNY",
"name": "Chinese Yuan",
"symbol": "¥",
"icon_url": "https://example.com/cny.png",
"precision": 2
}
]
}
}

响应字段说明(data.items 单条)

字段类型必返回说明
idinteger法币系统内部 ID
codestring法币代码,如 USDCNY
namestring法币名称
symbolstring法币符号,如 $¥;未配置时返回空字符串
icon_urlstring法币图标 URL
precisioninteger显示精度(小数位数),未配置时默认返回 2

4.4 获取法币汇率

根据基础法币代码,返回其与其他法币之间的汇率列表。

请求

GET /api/assets/fiats/rate/{base}

路径参数

参数类型必填说明
basestring基础法币代码,如 USDCNY

注意: base 参数大小写不敏感,服务端会自动转为大写处理。

curl 示例

# 获取以 USD 为基准的所有法币汇率
curl "https://<your-workers-domain>/api/assets/fiats/rate/USD"

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"total": 2,
"items": [
{
"target_fiat_id": 2,
"target_fiat_code": "CNY",
"rate": "7.24000000"
},
{
"target_fiat_id": 3,
"target_fiat_code": "EUR",
"rate": "0.92000000"
}
]
}
}

响应字段说明(data.items 单条)

字段类型说明
target_fiat_idinteger目标法币系统内部 ID
target_fiat_codestring目标法币代码
ratestring汇率值,精度为 8 位小数的字符串格式

说明: 当查询的基础法币没有汇率数据时,接口仍返回成功结构,但 items 为空数组,total0


5. DEX 流动性池查询

本模块提供 DEX 流动性池的搜索能力,数据实时透传自 CoinGecko Onchain API,适用于:

  • 查找特定代币参与的流动性池
  • 查看池子的价格、交易量与流动性深度
  • 监控链上实时交易活跃度

5.1 搜索流动性池

根据关键字搜索 DEX 流动性池,支持按 pool 合约地址、token 名称、token 符号或 token 合约地址进行搜索。

请求

GET /api/pools/search

查询参数

参数类型必填默认值说明
querystring搜索关键字。支持:pool 合约地址、token 名称、token symbol、token 合约地址
networkstringCoinGecko network ID,如 ethbscsolana。不传则跨链搜索
pageinteger1分页页码,必须为正整数。每页最多返回 20

常用 network 取值

network
ethEthereum
bscBNB Chain
solanaSolana
polygon_posPolygon
arbitrumArbitrum One
baseBase

curl 示例

# 搜索关键字 weth(跨链)
curl "https://<your-workers-domain>/api/pools/search?query=weth"

# 在以太坊链上搜索,并获取第 2 页
curl "https://<your-workers-domain>/api/pools/search?query=weth&network=eth&page=2"

# 按 pool 合约地址精确搜索
curl "https://<your-workers-domain>/api/pools/search?query=0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640&network=eth"

缓存说明

本接口结果缓存 1 小时。缓存 key 由 querynetworkpage 三个维度共同决定,三者任一不同即视为不同的缓存条目。

成功响应示例

{
"code": 200,
"msg": "success",
"data": {
"total": 1,
"items": [
{
"id": "eth_0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
"name": "WETH / USDC 0.05%",
"address": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
"network": "eth",
"dex": "uniswap_v3",
"pool_created_at": "2021-12-29T12:35:14Z",
"base_token": {
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"name": "Wrapped Ether",
"symbol": "WETH",
"image_url": "https://assets.coingecko.com/coins/images/2518/small/weth.png"
},
"quote_token": {
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"name": "USD Coin",
"symbol": "USDC",
"image_url": "https://assets.coingecko.com/coins/images/6319/small/usdc.png"
},
"base_token_price_usd": "3653.12",
"quote_token_price_usd": "0.9983",
"fdv_usd": "11007041041",
"market_cap_usd": null,
"price_change_percentage": {
"m5": "0",
"h1": "0.51",
"h6": "1.23",
"h24": "7.71"
},
"volume_usd": {
"h1": "16798158.01",
"h24": "536545444.90"
},
"reserve_in_usd": "163988541.38",
"transactions": {
"h24": {
"buys": 2966,
"sells": 3847,
"buyers": 1625,
"sellers": 2399
}
}
}
]
}
}

响应字段说明(data.items 单条)

字段类型说明
idstringCoinGecko Pool 唯一标识,格式为 {network}_{pool_address}
namestringPool 名称,如 WETH / USDC 0.05%
addressstringPool 合约地址
networkstring所在网络的 CoinGecko network ID
dexstring所在 DEX 的标识,如 uniswap_v3
pool_created_atstringPool 创建时间,ISO 8601 格式
base_tokenobjectBase token 信息(见下方)
quote_tokenobjectQuote token 信息(见下方)
base_token_price_usdstringBase token 的 USD 价格(字符串格式)
quote_token_price_usdstringQuote token 的 USD 价格(字符串格式)
fdv_usdstring / null完全稀释估值(USD),无数据时为 null
market_cap_usdstring / null市值(USD),无数据时为 null
price_change_percentageobject多时间维度涨跌幅,key 为 m5m15m30h1h6h24
volume_usdobject多时间维度 USD 交易量,key 同上
reserve_in_usdstring池子 USD 总流动性(字符串格式)
transactionsobject多时间维度交易统计,key 同上(见下方)

base_token / quote_token 字段

字段类型说明
addressstringToken 合约地址
namestringToken 名称
symbolstringToken 符号
image_urlstringToken 图标 URL

transactions 各时间维度字段

字段类型说明
buysinteger买入笔数
sellsinteger卖出笔数
buyersinteger买入独立地址数
sellersinteger卖出独立地址数

常见错误响应

// 缺少 query 参数
{
"code": 20001,
"msg": "query is required",
"data": ""
}

// page 参数非法(如传入 0 或负数)
{
"code": 20001,
"msg": "page must be a positive integer",
"data": ""
}

// 上游 CoinGecko API 请求失败
{
"code": 30001,
"msg": "upstream request failed",
"data": ""
}

6. 健康检查(附录)

本模块提供三个探针接口,供运维监控系统和容器编排平台(如 Kubernetes)进行服务状态探测,不涉及业务数据。

接口用途适用场景
GET /api/health综合健康检查,反映服务整体状态外部监控系统的主探针
GET /api/ready就绪检查,反映服务是否可接收请求容器编排的 Readiness Probe
GET /api/live存活检查,反映进程是否存活容器编排的 Liveness Probe

6.1 健康检查

请求

GET /api/health

curl 示例

curl "https://<your-workers-domain>/api/health"

响应示例

{
"code": 200,
"msg": "success",
"data": {
"status": "ok"
}
}

6.2 就绪检查

请求

GET /api/ready

curl 示例

curl "https://<your-workers-domain>/api/ready"

响应示例

{
"code": 200,
"msg": "success",
"data": {
"status": "ready"
}
}

6.3 存活检查

请求

GET /api/live

curl 示例

curl "https://<your-workers-domain>/api/live"

响应示例

{
"code": 200,
"msg": "success",
"data": {
"status": "alive"
}
}

文档版本:v1.0.0 | 最后更新:2026-04-21