Data API
基于各支持链索引数据的 REST 接口。
概述
Data API 提供了 REST 端点来查询区块链索引数据——区块、交易、地址、代币、NFT、DEX 活动、代币化股票和数据集新鲜度。
- 基础 URL:
https://dev-api.blockvectra.network/v1/data——除/chains外,所有路由都以链标识为前缀(如https://dev-api.blockvectra.network/v1/data/{chain}/…) - 协议:HTTP
GET(批量查代币元数据/{chain}/tokens:batch用POST),JSON 响应 - 认证:需要 API key——在请求头
x-api-key中传入你的 key。请求按 CU 计量与计费,仅对 2xx 成功响应计费 - 以太坊(Beta):只提供最近约 30 天的数据,可用数据集也更少,见支持的链 → 以太坊
Data API 各操作的 CU 权重列于定价页,也可通过 GET /v1/plans 接口获取。具体请求与响应示例请参考快速上手 → 调用 Data API。
链
Data API 按链提供索引数据:https://dev-api.blockvectra.network/v1/data/{chain}/…。
各链支持的数据集与特性因链而异,完整支持矩阵见支持的链。GET https://dev-api.blockvectra.network/v1/data/chains 会返回每条链的 features、coverage、finality 与 limits。请求超出数据集覆盖范围时返回 HTTP 422 no_coverage(不计费);请求未知或未公开的链名返回 HTTP 404,error.code 为 not_found(在检查 key 之前判定且不计费,不占限流;链名必须为全小写 slug)。
错误
每个错误响应都是 {"error":{"code","message"}};只有 409 not_indexed_yet 可能额外带 indexed_through(该链已索引到的最高区块);当整条链尚无任何索引数据时该字段不存在。客户最常遇到的错误码:
| 状态码 | error.code | 含义 | 建议操作 |
|---|---|---|---|
402 | insufficient_balance | 付费余额或免费额度已耗尽(不计费) | 前往控制台充值或等待免费额度补足 |
404 | not_found | {chain} 未知或未公开,或对象不存在 | 修正请求 |
409 | not_indexed_yet | 区块号高于已索引链头(indexed_through 给出已索引到的最高区块),或整条链尚无任何索引数据(不带 indexed_through) | 带 indexed_through 时轮询等待,直到你的区块号不高于它;不带时等待该链开始索引 |
409 | finality_exceeded | 区块已索引但高于 finalized_block(尚未达到重组安全水位) | 等待最终性,或改读更早的区块 |
422 | no_coverage | 永久性缺口:该链不支持此能力,或区块早于索引/trace 覆盖范围 | 修改请求;重试不会成功 |
429 | rate_limited | key 的 CU 速率超限(响应带 Retry-After)或账户调用速率超限(不带 Retry-After);不计费 | 等待 Retry-After 秒后重试 |
429 | cost_exceeds_burst | 单个请求的 CU 超过该 key 的突发容量;不带 Retry-After(不计费) | 拆小请求;按原样重试永远不会成功 |
503 | unavailable | 暂时不可用;响应带 Retry-After。当某条链的 coverage.from_block 暂为 null 时,对它的历史请求也返回此错误 | 等待 Retry-After 秒后重试 |
503 | gateway_overloaded | 该链当前繁忙(以太坊 Data API 并发能力较小);带 Retry-After: 1 | 退避后重试 |
409 not_indexed_yet 覆盖两种情况。区块高于已索引链头:请求的区块号高于该链已索引的高度,响应带 indexed_through,数据之后可能到位,稍后重试即可。尚无任何索引数据:刚上线的链没有任何已索引数据,响应不带 indexed_through,且 GET /v1/data/chains 中该链的 coverage.has_data 为 false。此时等待该链开始索引即可;可通过 /v1/status 的 data_status 或 /v1/data/chains 的 coverage.has_data 查看当前状态,开始索引后这些值会自动变化。
仅 2xx 响应计费,错误响应一律不计费。
Chain
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /chains | List supported chains |
| GET | /{chain}/blocks/{number} | Get a block by number |
| GET | /{chain}/blocks/hash/{hash} | Get a block by hash |
| GET | /{chain}/blocks/{number}/transactions | List a block's transactions |
| GET | /{chain}/transactions/{hash} | Get a transaction by hash |
Status
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /{chain}/status/freshness | Freshness and lag per dataset |
Addresses
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /{chain}/addresses/{address}/transactions | List an address's transactions |
| GET | /{chain}/addresses/{address}/transfers | List an address's token transfers |
| GET | /{chain}/addresses/{address}/balances | List an address's ERC-20 balances |
Tokens
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /{chain}/tokens/{token}/transfers | List a token contract's transfers |
| GET | /{chain}/tokens/{token}/holders | List a token's holders |
| GET | /{chain}/tokens/{token} | Get token metadata |
| POST | /{chain}/tokens:batch | Batch get token metadata |
NFTs
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /{chain}/nfts/{contract}/{token_id} | Get one NFT's owner/holders |
| GET | /{chain}/nfts | List NFTs owned by an address |
DEX
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /{chain}/dex/swaps | List DEX swaps by pool or token |
| GET | /{chain}/dex/prices | Daily DEX token prices |
Stocks
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /{chain}/stocks | Daily leaderboard of tokenized stocks |
| GET | /{chain}/stocks/{token} | Get one tokenized stock |
Traces
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /{chain}/blocks/{number}/traces | Historical callTracer trace tree for a whole block |
| GET | /{chain}/transactions/{hash}/trace | Historical callTracer trace tree for one transaction |