Birdeye 价格对不上?按网络、地址、时间和单位对照 API
链小知 · 进阶 · 核验 · 依官方文档整理
针对 Solana 代币,比较 Price 与 Token Overview,排除链错误、旧报价和 Token-2022 单位差异。
开始前准备
- 准备 Solana 目标代币的规范 mint 地址、已获授权的 Birdeye API Key 和对照时间。不要使用钱包账户地址代替 mint。
- 适用当前 Data API 的 /defi/price 和 /defi/token_overview;本篇限定 Solana,不推定所有网络有相同字段。
- 请求会消耗 API 配额/CU,套餐和收费查看当前控制台;只读查询不签名、不广播、不产生链上 Gas。
1. 固定代币身份和请求范围
从发行方公开记录核实规范 mint,记录网络 Solana。准备请求头 x-chain: solana 与 X-API-KEY;即使接口默认是 Solana,也显式写链,方便审计和迁移时发现错误。
不把 token account、钱包地址或同名代币填进 address。将 Key 保存在自己的请求环境,不贴到报告、网页公开地址或支持工单;教程中的占位符需由本人在本地替换。
检查结果:保存不含 Key 的网络、mint 和请求路径。
2. 读取当前价格与更新时间
使用 GET https://public-api.birdeye.so/defi/price?address=<mint>&ui_amount_mode=raw,带上述请求头。检查 HTTP 状态,再记录返回 data 中的 value、updateUnixTime 和 updateHumanTime;Unix 时间单位为秒。
响应为 null 或缺字段,可能是地址不受支持、新代币未索引或没有数据,保留未知。不要把缺失价格换算成 0,也不要拿过期更新时间与刚发生的成交比较。
检查结果:得到价格、原始单位与更新时间,或明确返回缺失。
3. 对照 Overview 的身份与市场信息
使用 GET https://public-api.birdeye.so/defi/token_overview?address=<mint>&ui_amount_mode=raw,保持相同网络与请求头。先核对 address、decimals、name/symbol,再读 price、liquidity、marketCap、fdv 和最后成交时间。
名称不能代替地址核验。最后成交时间与价格更新时间不是同一个概念;两个响应在不同时间取得,也可能产生正常价差。市值与 FDV 也不表示自己持有数量或当前可卖出价值。
检查结果:两次查询使用同一 mint、网络和单位,并记录各自时间。
4. 检查 Token-2022 单位差异
若响应出现 isScaledUiToken、multiplier 或 scaledValue 等字段,保留 raw 与 scaled 的区别。官方当前说明中 Price 默认 RAW,而 Overview 默认 SCALED;直接拿两者默认值相比可能产生单位差。
已显式请求 raw 时,仍检查实际字段和接口支持情况,不自行混乘倍率。若某返回未给对应单位或倍率,将单位一致性标成待确认,不能仅按页面显示的小数位强行推断。
检查结果:说明比较的是 raw 还是 scaled;缺倍率时不猜。
5. 按错误类型处理并保存结果
401 先查 Key 是否有效,403 查权限,429 查限流并按当前配额重试;服务端错误保留状态、路径和检查时间。重试时仅发送必要请求,不循环刷接口。
完成时保存去掉 Key 的参数、状态、价格、时间和单位。查询价格不构成可成交报价;真正交换时还要查看路线、滑点、规模和钱包费用,不能把此接口结果当作保证成交金额。
检查结果:形成能重放的脱敏查询记录;未成功的接口保留错误状态。
怎样确认完成
- 同一 mint 的两份请求参数、状态、单位和时间已记录。
- 已解释差异或准确保留数据缺失、权限、限流等未解决项。
- 依据官方文档整理,真实账户/API 返回与资金操作尚待实际验证。
常见错误与边界
- Price 和 Overview 的默认单位可能不同,特别是 scaled UI token。
- 缺价格不等于价格为零;流动性、市值和可卖出金额不能互换。
- 报价时间与最后成交时间不同,实际交换还有滑点和费用。