Швидкий старт
Зчитуйте висоту блоку без ключа, створіть API key, надішліть перший автентифікований виклик, а потім запитуйте активність акцій, відновлюйте логи або отримуйте вебхуки.
Розробники та AI-агенти можуть спробувати публічний RPC без ключа, а потім створити ключ для продовження роботи.
1. Зчитування висоти блоку без ключа
Викличте публічний ендпоінт JSON-RPC для прикладу мережі robinhood_mainnet без створення акаунта або надання API key:
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/public" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'Значення id: 1 у відповіді відповідає цьому запиту; result є шістнадцятковою висотою блоку і може змінюватися між викликами. Якщо відповідь містить error, перевірте її код та причину. Перегляньте безкоштовні публічні ендпоінти RPC для ознайомлення з публічними методами, діапазонами історії та лімітами на IP.
2. Створення API key
Перейдіть до консолі, увійдіть за допомогою GitHub, Google або гаманця Ethereum (ваш акаунт створюється під час першого входу) та створіть API key. Секрет відображається лише один раз: надійно збережіть його та встановіть як змінну середовища BLOCKVECTRA_API_KEY. Не додавайте його до клієнтського коду браузера. Нові акаунти отримують 30,000,000 CU під час реєстрації — без кредитної картки.
Ще немає API key?
Якщо у вас є гаманець Ethereum: дотримуйтесь посібника з програмної реєстрації, щоб зареєструватися та створити API key за допомогою підпису гаманця Ethereum без браузера. Якщо у вас немає гаманця: попросіть користувача увійти на console.blockvectra.com, створити ключ і встановити його як змінну середовища BLOCKVECTRA_API_KEY. Не просіть користувача вставляти ключ у чат.
3. Відправлення першого автентифікованого виклику
Зчитайте висоту блоку тієї самої мережі із заголовком x-api-key. URL закінчується назвою мережі без скісної риски в кінці:
: "${BLOCKVECTRA_API_KEY:?Set BLOCKVECTRA_API_KEY first}"
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
-H 'Content-Type: application/json' \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'result знову є шістнадцятковою висотою блоку. Цей запит споживає CU; перегляньте довідник JSON-RPC щодо ваги методів та кодів помилок, а також Ціни для актуальних тарифів. Новий ключ набуває чинності приблизно через 5 секунд; якщо ви отримали invalid_api_key, зачекайте трохи та повторіть спробу. Інші можливі збої див. у розділі Поширені помилки нижче.
4. Продовження роботи з бізнес-завданням
- Запит ончейн-активності токенізованих акцій на Robinhood Chain
- Заповнення логів HyperEVM частинами
- Отримання активності гаманця та переказів токенів за допомогою вебхуків
Довідка
Ключі API та баланс
Повний стартовий шаблон: blockvectra/agent-quickstart
Кожен ключ має вигляд rgw_, за яким слідують 64 шістнадцяткові символи, наприклад
rgw_1f2e... (скорочено). Зберігайте його в таємниці — будь-хто з цим ключем може витрачати ваш баланс.
Якщо ваш баланс недостатній, сервер повертає HTTP 402 (код помилки JSON-RPC -32020; error.code у Data API insufficient_balance). Перейдіть на сторінку Тарифікація в консолі, щоб перевірити баланс та способи поповнення.
Спробуйте без ключа
Ви можете викликати публічний ендпоінт JSON-RPC одразу, без створення акаунта та без надання API key.
# Прямий публічний ендпоінт:
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/public" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
# Або за шаблоном резервного використання API key (за замовчуванням публічний, якщо BLOCKVECTRA_API_KEY не встановлено):
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/${BLOCKVECTRA_API_KEY:-public}" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'Ендпоінт у наведеному нижче прикладі має обмеження частоти запитів на IP (3 зап/с, сплеск 20, макс. пакет 10). Запити, що перевищують ліміти частоти, повертають HTTP 429 з причиною public_rate_limit або public_pool_busy (із заголовком Retry-After); непідтримувані методи повертають помилку JSON-RPC -32601 (method_not_public).
Публічні ендпоінти за мережами
- Arbitrum One:
https://api.blockvectra.com/v1/arb_mainnet/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction) - Base:
https://api.blockvectra.com/v1/base_mainnet/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction) - BNB Smart Chain:
https://api.blockvectra.com/v1/bsc_mainnet/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction) - Ethereum:
https://api.blockvectra.com/v1/eth_mainnet/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction) - Ethereum Sepolia:
https://api.blockvectra.com/v1/eth_sepolia/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction) - HyperEVM:
https://api.blockvectra.com/v1/hyperevm_mainnet/public— Лише для читання - Polygon:
https://api.blockvectra.com/v1/polygon_mainnet/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction) - Robinhood Chain:
https://api.blockvectra.com/v1/robinhood_mainnet/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction) - Robinhood Chain Testnet:
https://api.blockvectra.com/v1/robinhood_testnet/public— Читання та трансляція підписаних транзакцій (eth_sendRawTransaction)
Наступні два публічні ендпоінти метаданих відображають статус сервісу та конфігурацію кожної мережі; вони не вимагають API key і не тарифікуються.
Перевірка стану працездатності сервісу та мереж
curl https://api.blockvectra.com/v1/statusПовертає мітку часу перевірки checked_at, робочий статус сервісу gateway.status та прогрес синхронізації нод кожної підтримуваної мережі sync, висоту останнього блоку та затримку head:
{
"checked_at": "2026-10-03T13:30:47Z",
"gateway": {
"status": "ok"
},
"chains": [
{
"chain": "bsc_mainnet",
"name": "BNB Smart Chain",
"chain_id": 56,
"jsonrpc": true,
"data": true,
"data_features": [
"blocks",
"transactions",
"address_transactions",
"transfers",
"token_metadata",
"freshness"
],
"data_status": "ok",
"data_head_block": 125492675,
"data_head_age_seconds": 3,
"status": "ok",
"sync": {
"stage": "synced",
"node_block": 125492676,
"target_block": null
},
"head": {
"block": 125492676,
"time": "2026-10-03T13:30:45Z",
"lag_seconds": 2
}
}
]
}Запит підтримуваних мереж та політик методів
curl https://api.blockvectra.com/v1/chainsПовертає chain_id кожної підтримуваної мережі, прапорці можливостей для JSON-RPC, Data API та WebSocket, політики дозволу та заборони методів (methods.allow та methods.deny), ліміт діапазону блоків логів для одного запиту max_logs_block_range та вікно історичного стану state_window_blocks:
{
"chains": [
{
"chain": "bsc_mainnet",
"name": "BNB Smart Chain",
"chain_id": 56,
"jsonrpc": true,
"data": true,
"ws": false,
"subscriptions": [],
"methods": {
"allow": [
"eth_blockNumber",
"eth_call",
"eth_chainId",
"eth_getLogs"
],
"deny": [
"eth_newFilter",
"eth_subscribe",
"eth_unsubscribe"
]
},
"max_logs_block_range": 1000,
"state_window_blocks": 990000,
"info": {}
}
]
}Вибір мережі
Кожен ендпоінт BlockVectra прив'язаний до певної мережі: запити JSON-RPC містять назву мережі {chain} у шляху URL, а запити Data API додають її префіксом до маршруту. Перегляньте Підтримувані мережі щодо доступних наразі мереж та їхніх ідентифікаторів.
| Мережа | {chain} | Chain ID | Tracing | Публічний ендпоінт | WebSocket | Data API | Кількість методів з API key | Webhook-сповіщення | Надсилання транзакцій | Надсилання транзакцій (публічний ендпоінт без key) | Вікно історії стану | Максимальний діапазон блоків eth_getLogs | Набори даних Data API | Пов'язані тестові мережі | Пов'язані посібники |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| arb_mainnet: RPC та Data API | arb_mainnet | 42161 | ✓ | https://api.blockvectra.com/v1/arb_mainnet/public | Не підтримується | Відкрито | 43 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Історичний стан за останні 5,000 блоків | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість даних | Невідомо | Невідомо |
| base_mainnet: RPC та Data API | base_mainnet | 8453 | — | https://api.blockvectra.com/v1/base_mainnet/public | Не підтримується | Відкрито | 39 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Історичний стан за останні 10,000 блоків | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість даних | Невідомо | Base |
| bsc_mainnet: RPC та Data API | bsc_mainnet | 56 | — | https://api.blockvectra.com/v1/bsc_mainnet/public | Не підтримується | Відкрито | 25 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Історичний стан за останні 100 блоків | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість даних | Невідомо | Невідомо |
| Ethereum: RPC та Data API | eth_mainnet | 1 | ✓ | https://api.blockvectra.com/v1/eth_mainnet/public | Не підтримується | Відкрито | 38 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Історичний стан за останні 250,000 блоків | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість даних | Невідомо | Невідомо |
| eth_sepolia: RPC та Data API | eth_sepolia | 11155111 | — | https://api.blockvectra.com/v1/eth_sepolia/public | Не підтримується | Відкрито | 29 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Невідомо | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість даних | Невідомо | Невідомо |
| HyperEVM: RPC та Data API | hyperevm_mainnet | 999 | — | https://api.blockvectra.com/v1/hyperevm_mainnet/public | Не підтримується | Відкрито | 24 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Не підтримується | Не підтримується | Невідомо | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Баланси, Власники, NFT, Свіжість даних | Невідомо | Бекфіл та опитування HyperEVM |
| polygon_mainnet: RPC та Data API | polygon_mainnet | 137 | ✓ | https://api.blockvectra.com/v1/polygon_mainnet/public | Не підтримується | Відкрито | 43 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Історичний стан за останні 126 блоків | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість даних | Невідомо | Невідомо |
| Robinhood Chain: RPC та Data API | robinhood_mainnet | 4663 | ✓ | https://api.blockvectra.com/v1/robinhood_mainnet/public | Підтримується (newHeads, logs) | Відкрито | 43 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Історичний стан за останні 900 блоків | 1,000 блоків | Блоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Баланси, Власники, NFT, Свопи DEX, Ціни DEX, Токенізовані акції, Трасування, Свіжість даних | Невідомо | Robinhood Chain Мультиплікатор токенів акцій Токенізовані акції |
| robinhood_testnet: RPC | robinhood_testnet | 46630 | ✓ | https://api.blockvectra.com/v1/robinhood_testnet/public | Підтримується (newHeads, logs) | Поки недоступно | 43 | Підтримується · Підтвердження 1–1 (за замовчуванням 1) Посібник із Webhook-сповіщень | Підтримується | Підтримується | Історичний стан за останні 1,023 блоків | 1,000 блоків | Не підтримується | Невідомо | Кран testnet Стартовий посібник Robinhood Chain Testnet |
Наступні кроки з API key
arb_mainnet
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/arb_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/arb_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/arb_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
base_mainnet
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/base_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/base_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/base_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
bsc_mainnet
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/bsc_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/bsc_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/bsc_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
Ethereum
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/eth_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/eth_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/eth_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
eth_sepolia
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/eth_sepolia' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/eth_sepolia' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/eth_sepolia/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
HyperEVM
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/hyperevm_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/hyperevm_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/hyperevm_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
polygon_mainnet
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/polygon_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/polygon_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/polygon_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
Robinhood Chain
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/robinhood_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/robinhood_mainnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsData API
curl -fsS 'https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"Data APIWebSocket
echo '{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}' | websocat --no-close -H="x-api-key: $BLOCKVECTRA_API_KEY" 'wss://api.blockvectra.com/v1/robinhood_mainnet'WebSocketСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
robinhood_testnet
eth_getLogs
set -eu
MAX_LOGS_BLOCK_RANGE=1000
head=$(curl -fsS 'https://api.blockvectra.com/v1/robinhood_testnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' | python3 -c 'import json,sys; print(int(json.load(sys.stdin)["result"],16))')
from=$((head >= MAX_LOGS_BLOCK_RANGE ? head - MAX_LOGS_BLOCK_RANGE + 1 : 0))
from_hex=$(printf '0x%x' "$from")
to_hex=$(printf '0x%x' "$head")
curl -fsS 'https://api.blockvectra.com/v1/robinhood_testnet' -H "x-api-key: $BLOCKVECTRA_API_KEY" -H 'Content-Type: application/json' \
-d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$from_hex\",\"toBlock\":\"$to_hex\"}]}"eth_getLogsWebSocket
echo '{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}' | websocat --no-close -H="x-api-key: $BLOCKVECTRA_API_KEY" 'wss://api.blockvectra.com/v1/robinhood_testnet'WebSocketСтворити Webhook-підписку · Створити Webhook-підписку · Використання та CU · Поповнити баланс
HyperEVM
Блоки HyperEVM містять системні транзакції HyperCore (з адреси 0x2222…2222 або 0x20…, gasPrice 0).
Надсилання транзакцій у цій мережі поки не підтримується (eth_sendRawTransaction повертає -32601 method_not_allowed); методи читання працюють нормально.
Потрібна інша мережа? Повідомте нам →
Усі приклади на цій сторінці використовують robinhood_mainnet.
Порада: виберіть мережу, яка підтримує необхідний сервіс, метод та вікно історії з матриці вище, а потім замініть
robinhood_mainnetна її{chain}. Один і той самий API key працює в усіх підтримуваних мережах.
Інші варіанти автентифікації та приклади мовами програмування
Ендпоінти JSON-RPC прив'язані до мережі: POST /v1/{chain}/{api_key} з ключем у
шляху, або POST /v1/{chain} з ключем у заголовку x-api-key. {chain} — це назва
мережі, яку також використовує Data API; для Robinhood Chain це robinhood_mainnet, тому ендпоінт
на цій сторінці — https://api.blockvectra.com/v1/robinhood_mainnet. Виклик eth_subscribe через HTTP повертає -32601; підписки WebSocket перелічені для кожної мережі в розділі Підтримувані мережі. API повертає заголовок Access-Control-Allow-Origin: *, проте вам слід зберігати ваш
API key у таємниці та здійснювати запити з бекенд-сервісу, а не з коду браузера на боці клієнта.
Ви можете передавати ключ одним із трьох способів: у шляху URL (POST /v1/{chain}/{api_key}, який використовує лише ключ у шляху та ігнорує обидва заголовки), у заголовку x-api-key або в заголовку Authorization: Bearer <api_key>.
Ключ у шляху URL
: "${BLOCKVECTRA_API_KEY:?Set BLOCKVECTRA_API_KEY first}"
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet/$BLOCKVECTRA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'Ключ у заголовку запиту
: "${BLOCKVECTRA_API_KEY:?Set BLOCKVECTRA_API_KEY first}"
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
-H 'Content-Type: application/json' \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'Без скісної риски в кінці
Передаючи ключ у заголовку, викликайте https://api.blockvectra.com/v1/robinhood_mainnet точно так, як показано: URL закінчується
назвою мережі, без скісної риски в кінці. JSON-RPC обслуговується лише за шляхами /v1/{chain}
та /v1/{chain}/{api_key}. Скісна риска в кінці (як /v1/{chain}/) або запит без сегмента мережі (як /v1 або /v1/) повертає 404 з порожнім тілом (empty body).
Заголовок Authorization: Bearer <api_key> також підтримується. У POST /v1/{chain} непорожній
заголовок x-api-key має пріоритет над Bearer, а Bearer використовується лише тоді, коли x-api-key відсутній
або порожній. Форма запиту зі шляхом ігнорує обидва заголовки.
Пакетні виклики
Надішліть масив, щоб виконати кілька викликів в одному запиті (до 100 викликів у пакеті). Зверніть увагу, що кожен API key має ліміт CU (поповнення cu_per_sec, пікова ємність burst_cu — за замовчуванням 400 CU/s і burst 1,600 CU; відображається для кожного ключа в таблиці Keys консолі); один запит — включно з усім пакетом JSON-RPC — чий загальний обсяг CU перевищує пікову ємність ключа, відхиляється з помилкою -32022 request_exceeds_burst, навіть якщо він не перевищує ліміт 100 викликів на пакет; розділіть його на менші пакети. Цей приклад зчитує
Chain ID та баланс акаунта за один повний цикл запит-відповідь:
curl -s "https://api.blockvectra.com/v1/robinhood_mainnet" \
-H 'Content-Type: application/json' \
-H "x-api-key: $BLOCKVECTRA_API_KEY" \
-d '[
{"jsonrpc":"2.0","id":1,"method":"eth_chainId"},
{"jsonrpc":"2.0","id":2,"method":"eth_getBalance","params":["0x1111111111111111111111111111111111111111","latest"]}
]'Відповіді повертаються у вигляді масиву в тому самому порядку, що й запити, зіставлені за id.
Якщо натомість сервер відхиляє весь пакет повністю — через недостатній баланс, обмеження частоти запитів, пікову ємність або перевищення розміру пакета (див. Поширені помилки нижче) — він повертає один об'єкт помилки JSON-RPC замість масиву; режим viem batch: true у такому разі повертає непрозору помилку UnknownRpcError, тому повторіть окремий виклик, щоб побачити справжню помилку.
Розуміння тарифікації CU
Кожен тарифікований виклик споживає Compute Units (CU): прості виклики, такі як eth_blockNumber або
eth_chainId, коштують найменше, стандартні операції читання, такі як eth_getBlockByNumber, коштують трохи більше, важчі
виклики, такі як eth_call або eth_getLogs, коштують більше, а методи трасування виконання (такі як debug_traceTransaction) коштують найбільше.
Плата за використання нараховується для кожного акаунта за погодинний період із заокругленням у менший бік до цілих розрахункових одиниць (1 одиниця = 1,000 CU), а залишок переноситься на наступний період (тому за всі періоди загальна нарахована сума становить floor(загальна кількість CU / 1,000)); розрахунок виконується приблизно через 15 хвилин після завершення періоду. Наприклад: 508 CU перенесено + 2557 CU використано = 3065 CU, що призводить до нарахування 3 розрахункових одиниць та перенесення 65 CU на наступний період. Актуальні тарифи див. у розділі Ціни.
Повна таблиця ваги для кожного методу та коди помилок наведені в Довіднику API → JSON-RPC — ця сторінка описує лише структуру запиту.
Поширені помилки
| Що сталося | Що повертається | Дія |
|---|---|---|
| Невідома або ще не відкрита мережа | HTTP 404 з тілом JSON error.data.reason: "unknown_chain" | Перевірте назву мережі в URL |
Запит без сегмента мережі (наприклад, /v1 або /v1/) | HTTP 404 з порожнім тілом (empty body) | Вкажіть назву мережі в URL (/v1/{chain}) |
| API key відсутній, невідомий або відключений | HTTP 401, код JSON-RPC -32024 (missing_api_key або invalid_api_key) | Використовуйте дійсний активний API key (абсолютно нові або замінені ключі набувають чинності на кожному екземплярі приблизно протягом 5 секунд; протягом цього часу вони можуть повертати 401 invalid_api_key, або 503 -32021 (з Retry-After), коли стан тарифікації тимчасово неможливо підтвердити, тому зачекайте трохи і повторіть спробу) |
| Баланс дорівнює нулю або від'ємний | HTTP 402, код JSON-RPC -32020 | Поповніть баланс або дочекайтеся безкоштовного поповнення |
| Запити надіслані занадто швидко (ліміт швидкості або тимчасове перевантаження) | HTTP 429 (або 200), код JSON-RPC -32005 | Повторіть спробу пізніше (дотримуйтесь Retry-After, якщо заголовок присутній) |
Окремий запит або пакет перевищує пікову ємність ключа (burst_cu, за замовчуванням 1,600 CU; швидкість за замовчуванням 400 CU/s), або пакет безкоштовного плану перевищує кількість викликів/с (25 викл./с) | HTTP 429, код JSON-RPC -32022 (request_exceeds_burst) | Розділіть запит на менші пакети (в початковому вигляді він ніколи не буде успішним) |
| Вузловий вузол тимчасово недоступний | HTTP 200, код JSON-RPC -32603 (upstream unavailable), не тарифікується | Повторіть запит |
Історичний стан за межами вікна стану цієї мережі (див. state_window_blocks у GET /v1/chains) | HTTP 200, код JSON-RPC -32011, не тарифікується | Зробіть запит до більш пізнього блоку |
| Транзакцію або блок не знайдено, або відповідь занадто велика; на Ethereum запити блоків / квитанцій / логів за межами недавнього вікна також повертають -32000 "old data not available due to pruning" (не тарифікується; див. Підтримувані мережі → Ethereum) | HTTP 200, код JSON-RPC -32000 | Змініть запит (перевірте хеш або номер блоку; некоректні хеші трасування повертають повідомлення про те, що транзакцію не знайдено) |
Трейсер не дозволений або перевищено таймаут трасування (виклики debug_trace) | HTTP 200, код JSON-RPC -32602, не тарифікується | Використовуйте дозволений нативний трейсер (callTracer, flatCallTracer, prestateTracer, 4byteTracer, noopTracer, або оминіть) та таймаут ≤ 30s |
| Метод не дозволений списком методів мережі (див. Підтримувані мережі) | HTTP 200, код JSON-RPC -32601, не тарифікується | Викликайте лише методи, дозволені для цієї мережі |
| Некоректне тіло JSON | HTTP 200, код JSON-RPC -32700, не тарифікується | Виправте синтаксис JSON у запиті |
| Більше ніж 100 викликів в одному пакеті | HTTP 200, код JSON-RPC -32600 (batch too large), не тарифікується | Розділіть пакет на щонайбільше 100 викликів |
Наведені вище відхилення ніколи не тарифікуються. Кожен прийнятий виклик, який отримує відповідь, оплачується відповідно до опублікованої ваги методу в CU; у таблиці кодів помилок перелічені випадки, які не тарифікуються (див. стовпчик Billed у розділі Коди помилок).
Виклик Data API
Data API надає дані блокчейну тільки для читання (блоки, транзакції, баланси, холдери, активність
DEX тощо) у форматі REST/JSON. Кожен маршрут, крім GET https://api.blockvectra.com/v1/data/chains, містить префікс
з ідентифікатором мережі: robinhood_mainnet — це ідентифікатор мережі (поле chain, яке повертає /chains та міститься в meta), що використовується в усіх наведених нижче шляхах.
GET https://api.blockvectra.com/v1/data/chains перелічує лише публічні мережі та повертає лише {"data": [...]} (без
meta, без next_cursor). Запити вимірюються та тарифікуються в Compute Units (CU); тарифікуються лише успішні відповіді 2xx.
Кожен запит вимагає того самого API key, що й JSON-RPC — передавайте його в заголовку x-api-key.
Кожна успішна відповідь у межах мережі використовує однаковий конверт:
data (корисне навантаження), next_cursor (непрозорий рядок, присутній лише за наявності наступної сторінки — інакше
ключ повністю відсутній, ніколи не null), та meta (chain, chain_slug (верхній регістр chain), chain_external_id,
as_of_block, safe_block, finalized_block, coverage, refreshed_at; refreshed_at може бути null, що означає, що час оновлення даних невідомий і їх слід вважати застарілими — ендпоінти на основі блоків завжди повертають значення). Відповіді з помилками зазвичай містять {"error":{"code","message"}} —
409 not_indexed_yet додає indexed_through (найвищий індексований блок). Невідома або непублічна мережа повертає HTTP 404 з error.code not_found (не тарифікується; назви мереж мають бути точними слагами в нижньому регістрі); відсутній, невідомий або відключений API key повертає HTTP 401 з error.code missing_api_key або invalid_api_key. Запити, обмежені лімітом швидкості, повертають HTTP 429 (error.code rate_limited, data.reason: "key_rate_limit"), а вичерпаний баланс повертає HTTP 402 (error.code insufficient_balance); обидва випадки не тарифікуються. Значення, що можуть перевищувати 2^53 (баланси, суми токенів), передаються десятковими
рядками, ніколи числами JSON.
Пошук блоку за номером:
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/blocks/72838701" \
-H "x-api-key: $BLOCKVECTRA_API_KEY"{
"data": {
"number": 72838701,
"hash": "0x9f2c1e7a4b6d3f805e1c9a72b4d6f1e0a3c8b5d7e2f4a1c6b9d3e7f0a2c4b6d8",
"parent_hash": "0x1a3c5e7f9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e7b9d1f3a",
"timestamp": "2026-09-26T05:41:07Z",
"miner": "0x00000000000000000000000000000000000a4b05",
"gas_limit": 32000000,
"gas_used": 4821932,
"base_fee_per_gas": "100000000",
"state_root": "0x2b4d6f8a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d",
"transactions_root": "0x3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a3c5e",
"receipts_root": "0x4d6f8a1c3e5b7d9f1a3c5e7b9d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f",
"tx_count": 239,
"size": 48213,
"l1_block_number": null,
"extra": {}
},
"meta": {
"chain": "robinhood_mainnet",
"chain_slug": "ROBINHOOD_MAINNET",
"chain_external_id": "eip155:4663",
"as_of_block": 72838957,
"safe_block": 72838800,
"finalized_block": 72838701,
"coverage": "full",
"refreshed_at": "2026-09-27T02:15:03Z"
}
}Номер, що перевищує індексовану вершину (as_of_block), повертає 409 (error.code: "not_indexed_yet") із полем indexed_through, де вказано найвищий індексований блок — дані ще не з'явилися, тому повторіть спробу пізніше. Номер блоку, що повністю передує охопленій історії мережі (coverage.from_block), повертає 422 (error.code: "no_coverage"). У межах покриття номер, що менший або дорівнює as_of_block, але не має живого рядка (ніколи не індексувався або відкочений через reorg), повертає 404 (error.code: "not_found").
Перевірка актуальності даних (наскільки кожен відстежуваний набір даних відстає від вершини ланцюга — корисно для сторінки статусу або попередньої перевірки перед тим, як довіряти запиту):
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness" \
-H "x-api-key: $BLOCKVECTRA_API_KEY"{
"data": [
{
"dataset": "blocks",
"category": "raw",
"max_block_number": 72838957,
"max_day": null,
"max_time": "2026-09-27T02:15:01Z",
"seconds_behind": 0,
"blocks_behind": null,
"days_behind": null,
"checked_at": "2026-09-27T02:15:07Z"
}
],
"meta": {
"chain": "robinhood_mainnet",
"chain_slug": "ROBINHOOD_MAINNET",
"chain_external_id": "eip155:4663",
"as_of_block": 72838957,
"safe_block": 72838800,
"finalized_block": 72838701,
"coverage": "full",
"refreshed_at": "2026-09-27T02:15:07Z"
}
}(Скорочено: відповідь містить один рядок для кожного набору даних; показано лише рядок blocks. Рядок traces також містить поля coverage_from_block, coverage_to_block та coverage_complete.)
Якщо дані актуальності для цієї мережі тимчасово недоступні, замість часткового результату повертається 503 (error.code: "unavailable"); відповідь містить заголовок Retry-After (у секундах) — зачекайте щонайменше цей час, а потім повторіть спробу.
Список балансів ERC-20 для адреси (знімок, відфільтрований за ненульовими балансами, впорядкований за токенами):
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/addresses/0x1111111111111111111111111111111111111111/balances" \
-H "x-api-key: $BLOCKVECTRA_API_KEY"{
"data": [
{ "token": "0x0bd7d308f8e1639fab988df18a8011f41eacad73", "balance": "185371464119396", "symbol": "WETH", "decimals": 18 },
{ "token": "0x2295f15bd4914ae9b4685f01d52f4e6f89bf8b03", "balance": "10000000000000000", "symbol": "WNVDA", "decimals": 18 }
],
"meta": {
"chain": "robinhood_mainnet",
"chain_slug": "ROBINHOOD_MAINNET",
"chain_external_id": "eip155:4663",
"as_of_block": 72838957,
"safe_block": 72838800,
"finalized_block": 72838701,
"coverage": "full",
"refreshed_at": "2026-09-27T02:10:00Z"
}
}Адреса без ненульових балансів усе одно повертає 200 з data: [] — ніколи 404.
Передавайте ?limit= (за замовчуванням 50, максимум 500) та отриманий next_cursor для переходу між сторінками.
Повне покриття ендпоінтів — блоки, транзакції, адреси, токени, NFT, DEX, токенізовані акції — доступне в розділі Довідник API → Data API.
Додаткові матеріали
- Довідник API → JSON-RPC — методи, вага CU, коди помилок
- Повний довідник JSON-RPC — повні специфікації, параметри та схеми відповідей для всіх підтримуваних методів
- Довідник API → Data API — REST-ендпоінти для даних блокчейну
- Набори даних — похідні набори даних для підтримуваних мереж
- Посібники — практичні посібники з інтеграції API, керування CU та багатомережевих робочих процесів
- Підтримувані мережі — ідентифікатори мереж та URL ендпоінтів
FAQ
Які мережі підтримуються?
Підтримується 9 мереж: Arbitrum One, Base, BNB Smart Chain, Ethereum, Ethereum Sepolia, HyperEVM, Polygon, Robinhood Chain, Robinhood Chain Testnet. Список відповідає GET /v1/chains і оновлюється під час запуску нових мереж. Перегляньте сторінку статусу для перевірки статусу наживо. Переглянути підтримувані мережі →
Чи підтримується WebSocket?
Виклик eth_subscribe через HTTP повертає -32601; у мережах, де значення ws у /v1/chains дорівнює true, eth_subscribe доступний через WebSocket. В інших випадках виконуйте опитування через eth_getLogs. Переглянути підтримувані мережі →
Чи можу я запитувати історичний стан і трасування?
Так, але це залежить від мережі. Вікно історичного стану визначається полем state_window_blocks у /v1/chains (null означає повну історію); доступність трасувань залежить від того, чи містить methods.allow для цієї мережі методи debug_trace (такі як debug_traceTransaction); максимальний діапазон блоків для одного виклику eth_getLogs становить max_logs_block_range. Переглянути каталог мереж та параметри для кожної мережі →
Чи можна використовувати один API key для всіх мереж?
Так. Один API key підходить для JSON-RPC у кожній підтримуваній мережі та для Data API у мережах, які його підтримують; ключ належить акаунту, а не конкретній мережі. Читати посібник «Один ключ, багато мереж» →
Востаннє оновлено:
Огляд
Документація багатомережевого JSON-RPC та Data API. Використовуйте один ключ для всіх підтримуваних мереж для швидкого старту, довідника API, наборів даних та правил тарифікації.
Підтримувані мережі
Підтримувані блокчейн-мережі, Chain ID, структури URL та доступність функцій. Переглядайте ендпоінти, методи та покриття наборів даних для кожної мережі.