Швидкий старт

Зчитуйте висоту блоку без ключа, створіть 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. Продовження роботи з бізнес-завданням

Довідка

Ключі 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 IDTracingПублічний ендпоінтWebSocketData APIКількість методів з API keyWebhook-сповіщенняНадсилання транзакційНадсилання транзакцій (публічний ендпоінт без key)Вікно історії стануМаксимальний діапазон блоків eth_getLogsНабори даних Data APIПов'язані тестові мережіПов'язані посібники
arb_mainnet: RPC та Data APIarb_mainnet42161✓https://api.blockvectra.com/v1/arb_mainnet/publicНе підтримуєтьсяВідкрито43Підтримується · Підтвердження 1–1 (за замовчуванням 1)
Посібник із Webhook-сповіщень
ПідтримуєтьсяПідтримуєтьсяІсторичний стан за останні 5,000 блоків1,000 блоківБлоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість данихНевідомоНевідомо
base_mainnet: RPC та Data APIbase_mainnet8453—https://api.blockvectra.com/v1/base_mainnet/publicНе підтримуєтьсяВідкрито39Підтримується · Підтвердження 1–1 (за замовчуванням 1)
Посібник із Webhook-сповіщень
ПідтримуєтьсяПідтримуєтьсяІсторичний стан за останні 10,000 блоків1,000 блоківБлоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість данихНевідомоBase
bsc_mainnet: RPC та Data APIbsc_mainnet56—https://api.blockvectra.com/v1/bsc_mainnet/publicНе підтримуєтьсяВідкрито25Підтримується · Підтвердження 1–1 (за замовчуванням 1)
Посібник із Webhook-сповіщень
ПідтримуєтьсяПідтримуєтьсяІсторичний стан за останні 100 блоків1,000 блоківБлоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість данихНевідомоНевідомо
Ethereum: RPC та Data APIeth_mainnet1✓https://api.blockvectra.com/v1/eth_mainnet/publicНе підтримуєтьсяВідкрито38Підтримується · Підтвердження 1–1 (за замовчуванням 1)
Посібник із Webhook-сповіщень
ПідтримуєтьсяПідтримуєтьсяІсторичний стан за останні 250,000 блоків1,000 блоківБлоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість данихНевідомоНевідомо
eth_sepolia: RPC та Data APIeth_sepolia11155111—https://api.blockvectra.com/v1/eth_sepolia/publicНе підтримуєтьсяВідкрито29Підтримується · Підтвердження 1–1 (за замовчуванням 1)
Посібник із Webhook-сповіщень
ПідтримуєтьсяПідтримуєтьсяНевідомо1,000 блоківБлоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість данихНевідомоНевідомо
HyperEVM: RPC та Data APIhyperevm_mainnet999—https://api.blockvectra.com/v1/hyperevm_mainnet/publicНе підтримуєтьсяВідкрито24Підтримується · Підтвердження 1–1 (за замовчуванням 1)
Посібник із Webhook-сповіщень
Не підтримуєтьсяНе підтримуєтьсяНевідомо1,000 блоківБлоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Баланси, Власники, NFT, Свіжість данихНевідомоБекфіл та опитування HyperEVM
polygon_mainnet: RPC та Data APIpolygon_mainnet137✓https://api.blockvectra.com/v1/polygon_mainnet/publicНе підтримуєтьсяВідкрито43Підтримується · Підтвердження 1–1 (за замовчуванням 1)
Посібник із Webhook-сповіщень
ПідтримуєтьсяПідтримуєтьсяІсторичний стан за останні 126 блоків1,000 блоківБлоки, Транзакції, Транзакції адреси, Перекази токенів, Метадані токенів, Свіжість данихНевідомоНевідомо
Robinhood Chain: RPC та Data APIrobinhood_mainnet4663✓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: RPCrobinhood_testnet46630✓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_getLogs

Data 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_getLogs

Data 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_getLogs

Data 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_getLogs

Data 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_getLogs

Data 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_getLogs

Data 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_getLogs

Data 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_getLogs

Data API

curl -fsS 'https://api.blockvectra.com/v1/data/robinhood_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
Data API

WebSocket

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_getLogs

WebSocket

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, не тарифікуєтьсяВикликайте лише методи, дозволені для цієї мережі
Некоректне тіло JSONHTTP 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.

Додаткові матеріали

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 у мережах, які його підтримують; ключ належить акаунту, а не конкретній мережі. Читати посібник «Один ключ, багато мереж» →

Востаннє оновлено:

На цій сторінці