加密货币 API 文档参考
加密货币交易对的价格和历史
概览
加密货币交易对的价格和价格历史。每个请求都需要 Bearer 密钥,REST 和 MCP 共用同一余额。
交易对 id 由币种、连字符和计价货币组成,例如 BTC-USD 或 ETH-EUR。不区分大小写,也可用斜杠代替连字符。每个响应都带有规范交易对。计价货币为 USD、EUR 和 GBP。价格是十进制字符串,最多 8 位有效数字。
加密货币全天候交易,没有市场时段。价格超过 5 分钟未更新即为过期。
基础 URL: https:/。 MCP 工具是 crypto, with one action ,适用于下方每个路由。
每个账户可获得的内容
| 查看 | 所有账户 |
|---|---|
| 最新价格 | 在线 |
| 24 小时涨跌 | 已包含 |
| 日线柱状数据 | 完整历史数据 |
| 1 分钟 K 线 | 已包含 |
| 交易对列表 | 已包含 |
查看 价格 了解每次调用的费用。请求按其所属 API 的价格计费,除非某个路由另有说明。
- 加密货币没有成交量。价格和 K 线不含成交量字段。
- 日 K 线对应一个 UTC 日,在 00:00 UTC 出现。当天尚未完成的 K 线从不显示。
- 交易对列表包含我们提供价格的交易对。交易对只要至少每 30 秒成交一次就会列入,低于每 2 分钟一次则移除。
端点
每个路由都是 GET 请求,并需要在以下请求头中携带你的密钥: Authorization: Bearer 标头。示例仅展示响应的结构,并非实时数据。
我们提供价格的加密货币交易对
GET /v1/crypto/pairs
列出我们提供价格的所有交易对,按交易对排序(BTC-USD 形式)。可选 quote(USD、EUR 或 GBP)。交易对只要至少每 30 秒成交一次就会列入,低于每 2 分钟一次则移除。数据读自我们自己的交易对列表,所有账户均可使用,计一次调用。
MCP:工具 crypto, action pairs。
参数
| 参数 | 位置 | 必填 | 类型 | 含义 |
|---|---|---|---|---|
quote | 查询参数 | 否 | 取值之一:USD、EUR、GBP | 仅限以该货币计价的交易对(USD、EUR 或 GBP)。 |
响应字段
| 字段 | 类型 | 传入 | 含义 |
|---|---|---|---|
pairs | 对象数组 | 总是 | 列出我们提供价格的所有交易对,按交易对排序。交易对只要至少每 30 秒成交一次就会列入,低于每 2 分钟一次则移除。 |
pairs[].pair | 字符串 | 总是 | 规范交易对,例如 BTC-USD。 |
pairs[].base | 字符串 | 总是 | 币种的代码。 |
pairs[].quote | 字符串 | 总是 | 报价货币。 |
pairs[].name | 字符串 | 总是 | 币种的名称。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/crypto/pairs?quote=USD"{
"pairs": [
{
"pair": "BTC-USD",
"base": "BTC",
"quote": "USD",
"name": "Bitcoin"
},
{
"pair": "ETH-EUR",
"base": "ETH",
"quote": "EUR",
"name": "Ethereum"
}
]
}单个加密货币交易对的最新价格
GET /v1/crypto/{pair}/price
交易对的最新综合价格,附带 24 小时涨跌(未知时省略)。加密货币全天候交易,没有市场时段;价格超过 5 分钟未更新时 stale 为 true。change_ 以百分比表示。
MCP:工具 crypto, action price。
参数
| 参数 | 位置 | 必填 | 类型 | 含义 |
|---|---|---|---|---|
pair | 路径参数 | 是 | 字符串 | 加密货币交易对:币种、连字符和计价货币,例如 BTC-USD 或 ETH-EUR。不区分大小写;也可用斜杠代替连字符。响应中带有规范交易对。 |
响应字段
| 字段 | 类型 | 传入 | 含义 |
|---|---|---|---|
pair | 字符串 | 总是 | 规范交易对。 |
base | 字符串 | 总是 | 币种的代码。 |
quote | 字符串 | 总是 | 计价货币;所有价格均以它计价。 |
price | 字符串 | 总是 | 最新价格,最多 8 位有效数字。 |
change_ | 字符串 | 可选 | price 减去 24 小时前的价格,由 24 小时涨跌百分比推算得出。未知时省略。 |
change_ | 字符串 | 可选 | 24 小时涨跌百分比(1.5 表示 1.5%)。与 change_ 一同省略。 |
timestamp | 日期时间 | 总是 | 价格的有效时间(UTC,精确到整秒)。 |
stale | 布尔值 | 总是 | 价格超过 5 分钟未更新或无法刷新时为 true。 |
delayed | 恒为 true | 可选 | 不返回:所有账户的价格都是实时的。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/crypto/BTC-USD/price"{
"pair": "BTC-USD",
"base": "BTC",
"quote": "USD",
"price": "68250.5",
"change_24h": "812.4",
"change_24h_percent": "1.2",
"timestamp": "2026-10-26T15:42:00Z",
"stale": false
}最多 50 个加密货币交易对的最新价格
GET /v1/crypto/prices
返回所列每个交易对的最新价格。每个返回价格的交易对计一次调用,一次性扣费:如果你的余额不足以支付已解析的交易对,整个请求会被拒绝并返回 402 insufficient_credits。未返回价格的交易对列在 errors 中(作为 id),不收费。change_ 以百分比表示。
最多发送 50 个交易对。批量请求一次性扣费:如果你的余额不足以支付能解析的交易对,整个请求返回 402 insufficient_credits。
MCP:工具 crypto, action prices。
参数
| 参数 | 位置 | 必填 | 类型 | 含义 |
|---|---|---|---|---|
pairs | 查询参数 | 是 | 字符串 | 以逗号分隔的交易对,去重后最多 50 个。每个交易对的规则与单个价格路由相同。每个返回价格的交易对计一次调用。 |
响应字段
| 字段 | 类型 | 传入 | 含义 |
|---|---|---|---|
prices | 对象数组 | 总是 | 每个已解析的交易对一个价格,按交易对排列。 |
prices[].pair | 字符串 | 总是 | 规范交易对。 |
prices[].base | 字符串 | 总是 | 币种的代码。 |
prices[].quote | 字符串 | 总是 | 计价货币;所有价格均以它计价。 |
prices[].price | 字符串 | 总是 | 最新价格,最多 8 位有效数字。 |
prices[].change_ | 字符串 | 可选 | price 减去 24 小时前的价格,由 24 小时涨跌百分比推算得出。未知时省略。 |
prices[].change_ | 字符串 | 可选 | 24 小时涨跌百分比(1.5 表示 1.5%)。与 change_ 一同省略。 |
prices[].timestamp | 日期时间 | 总是 | 价格的有效时间(UTC,精确到整秒)。 |
prices[].stale | 布尔值 | 总是 | 价格超过 5 分钟未更新或无法刷新时为 true。 |
prices[].delayed | 恒为 true | 可选 | 不返回:所有账户的价格都是实时的。 |
errors | 对象数组 | 总是 | 未返回价格的交易对。不收费。 |
errors[].id | 字符串 | 总是 | 请求时传入的原始 id。 |
errors[].code | 取值之一:not_found、not_covered、upstream_busy | 总是 | not_found:没有这个标的。not_covered:该交易所暂无价格数据。upstream_busy:当前无法获取价格,请稍后重试。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/crypto/prices?pairs=BTC-USD,ETH-USD"{
"prices": [
{
"pair": "BTC-USD",
"base": "BTC",
"quote": "USD",
"price": "68250.5",
"change_24h": "812.4",
"change_24h_percent": "1.2",
"timestamp": "2026-10-26T15:42:00Z",
"stale": false
}
],
"errors": [
{
"id": "XYZ-USD",
"code": "not_found"
}
]
}单个加密货币交易对的价格 K 线
GET /v1/crypto/{pair}/bars
日线(1d,一个 UTC 日,于 00:00 UTC 收盘)或一分钟(1m)K 线,按时间从早到晚排列。某一天的 K 线在 00:00 UTC 发布;当天尚未完成的 K 线从不显示。历史范围:全部,所有账户均可获取。每页最多 5,000 根 K 线,附带 next_;游标与价格不再匹配时返回 409 cursor_expired。每页计一次调用。
如果游标对应的价格发生变化,游标将失效并返回 409 cursor_expired。
MCP:工具 crypto, action bars。
参数
| 参数 | 位置 | 必填 | 类型 | 含义 |
|---|---|---|---|---|
pair | 路径参数 | 是 | 字符串 | 加密货币交易对:币种、连字符和计价货币,例如 BTC-USD 或 ETH-EUR。不区分大小写;也可用斜杠代替连字符。响应中带有规范交易对。 |
interval | 查询参数 | 否 | 取值之一:1d、1m | 1d(每个 UTC 日一根 K 线,于 00:00 UTC 收盘)或 1m(一分钟 K 线)。其他值返回 400 invalid_interval。 |
start | 查询参数 | 否 | 字符串 | 第一根 K线。1d:日期(YYYY-MM-DD),包含该日;省略表示取最早的一根。1m:UTC 时间(YYYY-MM-DDTHH:MM:SSZ,或表示 UTC 00:00 的日期),包含该时刻;省略表示 end 之前一天。 |
end | 查询参数 | 否 | 字符串 | 最后一根 K 线。1d:日期,含当日;省略表示最近已完成的一天。1m:UTC 时间,不含该时刻;省略表示当前时间,或 start 之后五天。1m 的 start 与 end 之间最多 5 天(400 range_too_large)。 |
cursor | 查询参数 | 否 | 字符串 | 上一页的 next_,其余参数保持一致。 |
响应字段
| 字段 | 类型 | 传入 | 含义 |
|---|---|---|---|
pair | 字符串 | 总是 | 规范交易对。 |
start | 字符串 | 可选 | 不返回:start 不会被调整。 |
end | 字符串 | 可选 | 不返回:日 K线不会被截断。 |
bars | 对象数组 | 总是 | 每页最多 5,000 根 K线。 |
bars[].timestamp | 日期时间 | 总是 | K 线周期的起点(UTC):日 K 线为 00:00,一分钟 K 线为该分钟。 |
bars[].open | 字符串 | 总是 | 周期的第一个价格。 |
bars[].high | 字符串 | 总是 | 周期内最高价。 |
bars[].low | 字符串 | 总是 | 周期内最低价。 |
bars[].close | 字符串 | 总是 | 周期的最后一个价格。 |
next_ | 字符串 | 总是 | 回传该值即可读取下一页。最后一页为 null。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/crypto/BTC-USD/bars?interval=1d&start=2026-10-01"{
"pair": "BTC-USD",
"bars": [
{
"timestamp": "2026-10-25T00:00:00Z",
"open": "67210.3",
"high": "68540.9",
"low": "66980.1",
"close": "68100.2"
}
],
"next_cursor": null
}错误
错误使用通用的 problem 结构,并带有 request_。查看 API 错误码与额度 了解该结构和额度相关的响应头。失败的请求不计费。
| 代码 | 状态 | 含义 |
|---|---|---|
invalid_ | 400 | 参数缺失、未知、重复或超出范围。 |
invalid_ | 400 | id 或交易对的写法不符合此 API 的要求。 |
too_ | 400 | 批量请求包含的 id 超过 50 个。 |
invalid_ | 400 | interval 不是 1d 或 1m,或该品种不支持。 |
range_ | 400 | 时间窗口超过该路由允许的长度。 |
not_ | 404 | 没有这个标的、基金或交易对。 |
invalid_ | 400 | 该游标不是本请求返回的,或来自另一个请求。 |
cursor_ | 409 | 游标对应的价格已变化。请不带游标重新开始。 |
insufficient_ | 402 | 您的额度余额低于该请求的费用。 |
upstream_ | 503 | 目前无法获取价格。在批量请求中会列在 errors 中。请稍后重试。 |
area_ | 503 | 该区域目前无法响应。 |
此页面对你有帮助吗?