Mulai Cepat

Baca tinggi blok tanpa API key, buat API key, kirim panggilan terautentikasi pertama Anda, dan kueri saham, ambil log historis, atau terima Webhook.

Pengembang dan agen AI dapat mencoba RPC publik tanpa API key, lalu membuat API key untuk melanjutkan.

1. Baca tinggi blok tanpa API key

Panggil endpoint JSON-RPC publik dari rantai contoh robinhood_mainnet tanpa membuat akun atau memberikan 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 dalam respons sesuai dengan permintaan ini; result adalah tinggi blok heksadesimal dan dapat berubah antar panggilan. Jika respons berisi error, periksa kode dan alasannya. Lihat endpoint RPC publik gratis untuk metode publik, rentang historis, dan batas per IP.

2. Buat API key

Buka konsol, masuk dengan GitHub, Google, atau dompet Ethereum (akun Anda dibuat pada login pertama), dan buat API key. Rahasia hanya ditampilkan sekali: simpan dengan aman dan tetapkan di variabel lingkungan BLOCKVECTRA_API_KEY. Jangan sertakan dalam kode yang berjalan di browser klien. Akun baru mendapatkan 30,000,000 CU saat pendaftaran — tanpa kartu kredit.

Belum memiliki API key?

Jika Anda memiliki dompet Ethereum: ikuti panduan pendaftaran terprogram untuk mendaftar dan membuat API key dengan tanda tangan dompet Ethereum, tanpa browser. Jika tidak memiliki dompet: minta pengguna untuk masuk ke console.blockvectra.com, buat API key, dan tetapkan di variabel lingkungan BLOCKVECTRA_API_KEY. Jangan minta pengguna untuk menempelkan API key dalam obrolan.

3. Kirim panggilan terautentikasi pertama Anda

Kueri tinggi blok dari rantai yang sama dengan header x-api-key. URL diakhiri dengan nama rantai, tanpa garis miring penutup:

: "${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 kembali berupa tinggi blok heksadesimal. Permintaan ini mengonsumsi CU; lihat referensi JSON-RPC untuk bobot metode dan kode error serta Harga untuk harga terkini. API key baru berlaku dalam waktu sekitar 5 detik; jika Anda menerima invalid_api_key, tunggu sejenak dan coba lagi. Lihat Error umum di bawah untuk kegagalan lainnya.

4. Lanjutkan dengan tugas bisnis

Referensi

API key dan saldo

Templat awal lengkap: blockvectra/agent-quickstart

Setiap API key diawali dengan rgw_ diikuti oleh 64 karakter heksadesimal, misalnya rgw_1f2e... (disingkat). Jaga kerahasiaannya — siapa pun yang memiliki API key dapat menghabiskan saldo Anda.

Saat saldo Anda tidak mencukupi, server mengembalikan HTTP 402 (kode error JSON-RPC -32020; Data API error.code insufficient_balance). Buka halaman penagihan konsol untuk memeriksa saldo dan metode pengisian ulang Anda.

Coba tanpa API key

Anda dapat langsung memanggil endpoint JSON-RPC publik tanpa membuat akun atau memberikan API key.

# Direct public endpoint:
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":[]}'

# Or using the API key fallback pattern (defaults to public when BLOCKVECTRA_API_KEY is unset):
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":[]}'

Endpoint pada contoh di bawah ini dibatasi lajunya per IP (3 req/s, burst 20, maksimal batch 10). Permintaan yang melebihi batas laju mengembalikan HTTP 429 dengan alasan public_rate_limit atau public_pool_busy (disertai header Retry-After); metode yang tidak didukung mengembalikan error JSON-RPC -32601 (method_not_public).

Endpoint publik berdasarkan rantai

  • Arbitrum One: https://api.blockvectra.com/v1/arb_mainnet/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)
  • Base: https://api.blockvectra.com/v1/base_mainnet/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)
  • BNB Smart Chain: https://api.blockvectra.com/v1/bsc_mainnet/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)
  • Ethereum: https://api.blockvectra.com/v1/eth_mainnet/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)
  • Ethereum Sepolia: https://api.blockvectra.com/v1/eth_sepolia/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)
  • HyperEVM: https://api.blockvectra.com/v1/hyperevm_mainnet/public — Hanya baca
  • Polygon: https://api.blockvectra.com/v1/polygon_mainnet/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)
  • Robinhood Chain: https://api.blockvectra.com/v1/robinhood_mainnet/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)
  • Robinhood Chain Testnet: https://api.blockvectra.com/v1/robinhood_testnet/public — Membaca dan menyiarkan transaksi bertanda tangan (eth_sendRawTransaction)

Dua endpoint metadata publik di bawah ini menunjukkan status layanan dan konfigurasi setiap rantai; tidak memerlukan API key dan tidak ditagih.

Periksa status kesehatan layanan dan rantai

curl https://api.blockvectra.com/v1/status

Mengembalikan waktu pemeriksaan checked_at, status operasional layanan gateway.status, dan untuk setiap rantai yang didukung, progres sinkronisasi node sync, tinggi blok terkini, serta latensi 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
      }
    }
  ]
}

Kueri rantai yang didukung dan kebijakan metode

curl https://api.blockvectra.com/v1/chains

Mengembalikan chain_id dari setiap rantai yang didukung, bendera fitur untuk JSON-RPC, Data API, dan WebSocket, kebijakan metode yang diizinkan dan ditolak (methods.allow dan methods.deny), batas rentang blok kueri log max_logs_block_range, dan jendela status historis 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": {}
    }
  ]
}

Pilih rantai

Setiap endpoint BlockVectra bersifat spesifik untuk suatu rantai: permintaan JSON-RPC menyertakan nama rantai {chain} di path URL, dan permintaan Data API menggunakannya sebagai awalan rute. Lihat Rantai yang Didukung untuk rantai yang saat ini tersedia dan pengenalnya.

Rantai{chain}Chain IDTracingEndpoint publikWebSocketData APIJumlah metode dengan kunci APIPush WebhookKirim TransaksiKirim Transaksi (Endpoint Publik Tanpa Key)Jendela riwayat stateRentang blok maksimum eth_getLogsDataset Data APITestnet terkaitPanduan terkait
arb_mainnet RPC dan Data APIarb_mainnet42161✓https://api.blockvectra.com/v1/arb_mainnet/publicTidak didukungTerbuka43Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungState historis untuk 6,000 blok terbaru1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Kesegaran dataTidak dikenalTidak dikenal
base_mainnet RPC dan Data APIbase_mainnet8453—https://api.blockvectra.com/v1/base_mainnet/publicTidak didukungTerbuka39Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungState historis untuk 10,000 blok terbaru1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Kesegaran dataTidak dikenalBase
bsc_mainnet RPC dan Data APIbsc_mainnet56—https://api.blockvectra.com/v1/bsc_mainnet/publicTidak didukungTerbuka25Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungState historis untuk 100 blok terbaru1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Kesegaran dataTidak dikenalTidak dikenal
Ethereum RPC dan Data APIeth_mainnet1✓https://api.blockvectra.com/v1/eth_mainnet/publicTidak didukungTerbuka38Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungState historis untuk 250,000 blok terbaru1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Kesegaran dataTidak dikenalTidak dikenal
eth_sepolia RPC dan Data APIeth_sepolia11155111—https://api.blockvectra.com/v1/eth_sepolia/publicTidak didukungTerbuka29Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungTidak dikenal1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Kesegaran dataTidak dikenalTidak dikenal
HyperEVM RPC dan Data APIhyperevm_mainnet999—https://api.blockvectra.com/v1/hyperevm_mainnet/publicTidak didukungTerbuka24Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
Tidak didukungTidak didukungTidak dikenal1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Saldo, Pemegang, NFT, Kesegaran dataTidak dikenalHyperEVM backfill and polling
polygon_mainnet RPC dan Data APIpolygon_mainnet137✓https://api.blockvectra.com/v1/polygon_mainnet/publicTidak didukungTerbuka43Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungState historis untuk 126 blok terbaru1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Kesegaran dataTidak dikenalTidak dikenal
Robinhood Chain RPC dan Data APIrobinhood_mainnet4663✓https://api.blockvectra.com/v1/robinhood_mainnet/publicDidukung (newHeads, logs)Terbuka43Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungState historis untuk 900 blok terbaru1,000 blokBlok, Transaksi, Transaksi alamat, Transfer, Metadata token, Saldo, Pemegang, NFT, Swap DEX, Harga DEX, Saham tertokenisasi, Trace transaksi, Kesegaran dataTidak dikenalRobinhood Chain
Stock token multiplier

Tokenized stocks
robinhood_testnet RPCrobinhood_testnet46630✓https://api.blockvectra.com/v1/robinhood_testnet/publicDidukung (newHeads, logs)Belum tersedia43Didukung · Konfirmasi 1–1 (default 1)
Panduan push Webhook
DidukungDidukungState historis untuk 1,023 blok terbaru1,000 blokTidak didukungTidak dikenalTestnet faucet
Robinhood Chain Testnet starter

Langkah berikutnya dengan kunci API

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

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

Buat langganan Webhook · Buat langganan Webhook · Penggunaan dan CU · Isi saldo

HyperEVM

Blok HyperEVM mencakup transaksi sistem HyperCore (dari alamat 0x2222…2222 atau 0x20…, gasPrice 0).

Pengiriman transaksi belum didukung di rantai ini (eth_sendRawTransaction mengembalikan -32601 method_not_allowed); metode baca berfungsi normal.

Semua contoh di halaman ini menggunakan robinhood_mainnet.

Tip: pilih rantai yang menyediakan layanan, metode, dan jendela historis dari contoh pada matriks di atas, lalu ganti robinhood_mainnet dengan {chain} rantai tersebut. API key yang sama berfungsi di semua rantai yang didukung.

Opsi autentikasi lainnya dan contoh bahasa

Endpoint JSON-RPC bersifat spesifik rantai: POST /v1/{chain}/{api_key} dengan API key di path atau POST /v1/{chain} dengan API key di header x-api-key. {chain} adalah nama rantai yang juga digunakan oleh Data API; untuk Robinhood Chain, nilainya adalah robinhood_mainnet, sehingga endpoint di halaman ini adalah https://api.blockvectra.com/v1/robinhood_mainnet. Memanggil eth_subscribe melalui HTTP mengembalikan -32601; langganan WebSocket tercantum per rantai di Rantai yang Didukung. API mengirimkan Access-Control-Allow-Origin: *, tetapi Anda harus menjaga kerahasiaan API key dan melakukan permintaan dari layanan backend, bukan dari kode di browser klien.

Anda dapat meneruskan API key dengan tiga cara: di path URL (POST /v1/{chain}/{api_key}, yang hanya menggunakan API key di path dan mengabaikan kedua header), di header x-api-key, atau di header Authorization: Bearer <api_key>.

API key di path 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":[]}'

API key di header permintaan

: "${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":[]}'

Tanpa garis miring di akhir

Saat meneruskan API key dalam header, panggil https://api.blockvectra.com/v1/robinhood_mainnet persis seperti yang ditampilkan: URL diakhiri dengan nama rantai, tanpa garis miring penutup. JSON-RPC hanya dilayani di /v1/{chain} dan /v1/{chain}/{api_key}. Garis miring penutup (seperti /v1/{chain}/) atau permintaan tanpa segmen rantai (seperti /v1 atau /v1/) mengembalikan 404 dengan body kosong.

Header Authorization: Bearer <api_key> juga berfungsi. Pada POST /v1/{chain}, header x-api-key yang tidak kosong memiliki prioritas lebih tinggi daripada Bearer, dan Bearer hanya digunakan ketika x-api-key tidak ada atau kosong. Bentuk API key di path mengabaikan kedua header tersebut.

Panggilan batch

Kirim sebuah array untuk membuat beberapa panggilan dalam satu permintaan (hingga 100 per batch). Setiap API key memiliki bucket CU (pengisian ulang cu_per_sec, kapasitas burst_cu — default adalah 400 CU/dtk dan burst 1,600 CU; ditampilkan per kunci di tabel Keys konsol); permintaan tunggal — termasuk seluruh batch JSON-RPC — yang total CU-nya melebihi kapasitas burst API key akan ditolak dengan -32022 request_exceeds_burst, bahkan jika di bawah batas 100 panggilan per batch; bagi menjadi beberapa batch yang lebih kecil. Contoh ini mengueri Chain ID dan saldo suatu akun dalam satu kali pulang-pergi:

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"]}
  ]'

Respons tiba sebagai sebuah array, dalam urutan yang sama dengan permintaan, dicocokkan berdasarkan id.

Jika server menolak seluruh batch — karena saldo tidak mencukupi, batas laju, kapasitas burst, atau batch terlalu besar (lihat Error umum di bawah) — server mengembalikan satu objek error JSON-RPC alih-alih sebuah array; mode batch: true viem menampilkan ini sebagai UnknownRpcError tanpa detail, jadi ulangi panggilan tunggal untuk melihat error sebenarnya.

Pahami penagihan CU

Setiap panggilan yang ditagih mengonsumsi Compute Unit (CU): panggilan ringan seperti eth_blockNumber atau eth_chainId memiliki biaya terendah, pembacaan umum seperti eth_getBlockByNumber berbiaya sedikit lebih tinggi, panggilan yang lebih berat seperti eth_call atau eth_getLogs berbiaya lebih besar, dan metode pelacakan eksekusi (seperti debug_traceTransaction) memiliki biaya tertinggi. Penggunaan ditagih per akun untuk setiap periode satu jam, dibulatkan ke bawah ke unit penagihan utuh (1 unit = 1,000 CU), dengan sisa dipindahkan ke periode berikutnya (jadi di seluruh periode total yang ditagih adalah floor(total CU / 1,000)); penyelesaian berjalan sekitar 15 menit setelah periode berakhir. Misalnya: sisa 508 CU + 2557 CU yang dikonsumsi = 3065 CU, menghasilkan 3 unit penagihan yang ditagih dan 65 CU dipindahkan ke periode berikutnya. Lihat Harga untuk harga terkini.

Tabel lengkap bobot per metode dan kode error ada di Referensi API → JSON-RPC — halaman ini hanya menyajikan format permintaan.

Error umum

Tindakan AndaResponsTindakan
Rantai tidak dikenal atau belum publikHTTP 404 dengan body JSON error.data.reason: "unknown_chain"Periksa nama rantai di URL
Permintaan tanpa segmen rantai (misalnya /v1 atau /v1/)HTTP 404 dengan body kosongSertakan nama rantai di URL (/v1/{chain})
API key hilang, tidak dikenal, atau dinonaktifkanHTTP 401, kode JSON-RPC -32024 (missing_api_key atau invalid_api_key)Gunakan API key yang valid dan aktif (API key baru atau yang dirotasi mulai berlaku di semua instans dalam waktu sekitar 5 detik; selama periode tersebut, dapat mengembalikan 401 invalid_api_key atau 503 -32021 (dengan Retry-After) saat status penagihan saat ini belum dapat dikonfirmasi, jadi tunggu sejenak dan coba lagi)
Saldo nol atau negatifHTTP 402, kode JSON-RPC -32020Isi ulang saldo Anda atau tunggu pembaruan gratis
Permintaan dikirim terlalu cepat (batas laju atau kelebihan beban sementara)HTTP 429 (atau 200), kode JSON-RPC -32005Coba lagi nanti (patuhi Retry-After jika ada)
Permintaan tunggal atau batch melebihi kapasitas burst API key (burst_cu, default 1,600 CU; laju default 400 CU/dtk), atau batch paket gratis melebihi panggilan/dtk (25 panggilan/dtk)HTTP 429, kode JSON-RPC -32022 (request_exceeds_burst)Bagi permintaan menjadi batch yang lebih kecil (tidak akan pernah berhasil sebagaimana dikirimkan)
Node upstream sementara tidak tersediaHTTP 200, kode JSON-RPC -32603 (upstream unavailable), tidak ditagihUlangi permintaan
Status historis di luar jendela status rantai (lihat state_window_blocks di GET /v1/chains)HTTP 200, kode JSON-RPC -32011, tidak ditagihKueri blok yang lebih baru
Transaksi atau blok tidak ditemukan, atau respons terlalu besar; di Ethereum, kueri blok / tanda terima / log di luar jendela terkini juga mengembalikan -32000 "old data not available due to pruning" (tidak ditagih; lihat Rantai yang Didukung → Ethereum)HTTP 200, kode JSON-RPC -32000Ubah permintaan (periksa hash atau nomor blok; hash trace dengan format yang salah mengembalikan transaksi tidak ditemukan)
Tracer tidak diizinkan atau batas waktu trace tidak diizinkan (panggilan debug_trace)HTTP 200, kode JSON-RPC -32602, tidak ditagihGunakan tracer bawaan yang diizinkan (callTracer, flatCallTracer, prestateTracer, 4byteTracer, noopTracer, atau abaikan) dan batas waktu ≤ 30 detik
Metode tidak diizinkan oleh daftar metode rantai (lihat Rantai yang Didukung)HTTP 200, kode JSON-RPC -32601, tidak ditagihHanya panggil metode yang diizinkan oleh rantai
Body JSON tidak validHTTP 200, kode JSON-RPC -32700, tidak ditagihPerbaiki sintaks JSON permintaan
Lebih dari 100 panggilan dalam satu batchHTTP 200, kode JSON-RPC -32600 (batch too large), tidak ditagihBagi batch menjadi maksimal 100 panggilan

Penolakan di atas tidak pernah ditagih. Setiap panggilan yang diterima dan mendapatkan respons akan ditagih sesuai bobot CU yang dipublikasikan dari metode tersebut; tabel kode error mencantumkan kasus yang tidak ditagih (lihat kolom Ditagih di Kode Error).

Panggil Data API

Data API mengekspos data rantai hanya-baca (blok, transaksi, saldo, pemegang, aktivitas DEX, dan banyak lagi) sebagai REST/JSON. Setiap rute, kecuali GET https://api.blockvectra.com/v1/data/chains, memiliki pengenal rantai sebagai awalan: robinhood_mainnet adalah pengenal rantai (bidang chain yang dikembalikan oleh /chains dan di meta) yang digunakan di semua path di bawah. GET https://api.blockvectra.com/v1/data/chains hanya mencantumkan rantai publik dan hanya mengembalikan {"data": [...]} (tanpa meta, tanpa next_cursor). Permintaan diukur dan ditagih dalam Compute Unit (CU); hanya respons 2xx yang berhasil yang ditagih.

Setiap permintaan memerlukan API key yang sama seperti yang digunakan dalam JSON-RPC — kirimkan di header x-api-key. Setiap respons sukses khusus rantai menggunakan struktur respons yang sama: data (data), next_cursor (string buram, hanya ada jika ada halaman lain — jika tidak, kunci sama sekali tidak ada, tidak pernah null), dan meta (chain, chain_slug (bentuk huruf besar dari chain), chain_external_id, as_of_block, safe_block, finalized_block, coverage, refreshed_at; refreshed_at bisa bernilai null, yang menandakan bahwa waktu pembaruan data tidak diketahui dan harus diperlakukan sebagai usang — endpoint berbasis blok selalu mengembalikan nilai). Respons error biasanya berisi {"error":{"code","message"}} — 409 not_indexed_yet menambahkan indexed_through (blok terkini yang diindeks). Rantai yang tidak dikenal atau tidak publik mengembalikan HTTP 404 dengan error.code not_found (tidak ditagih; nama rantai harus berupa slug huruf kecil yang tepat); API key yang hilang, tidak dikenal, atau dinonaktifkan mengembalikan HTTP 401 dengan error.code missing_api_key atau invalid_api_key. Permintaan yang dibatasi laju mengembalikan HTTP 429 (error.code rate_limited, data.reason: "key_rate_limit"), dan saldo habis mengembalikan HTTP 402 (error.code insufficient_balance); keduanya tidak ditagih. Nilai yang dapat melebihi 2^53 (saldo, jumlah token) berupa string desimal, tidak pernah berupa angka JSON.

Kueri blok berdasarkan nomor:

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"
  }
}

Nomor di atas blok terkini yang diindeks (as_of_block) mengembalikan 409 (error.code: "not_indexed_yet"), dengan indexed_through yang menginformasikan blok terkini yang diindeks — data belum tersedia, jadi coba lagi nanti. Nomor blok sebelum seluruh riwayat yang dicakup rantai (coverage.from_block) mengembalikan 422 (error.code: "no_coverage"). Di dalam cakupan, nomor yang sama dengan atau lebih rendah dari as_of_block tanpa catatan aktif (tidak pernah diindeks atau dikembalikan oleh reorg) mengembalikan 404 (error.code: "not_found").

Periksa kesegaran data (seberapa jauh setiap dataset yang dilacak tertinggal dari blok terkini rantai — berguna untuk halaman status atau verifikasi sebelum mengandalkan kueri):

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"
  }
}

(Disingkat: respons memiliki satu baris per dataset; hanya baris blocks yang ditampilkan. Baris traces juga berisi coverage_from_block, coverage_to_block, dan coverage_complete.)

Jika data kesegaran sementara tidak tersedia untuk rantai tersebut, responsnya adalah 503 (error.code: "unavailable") alih-alih hasil parsial; respons menyertakan header Retry-After (detik) — tunggu setidaknya selama waktu tersebut dan coba lagi.

Buat daftar saldo ERC-20 dari suatu alamat (snapshot yang difilter untuk saldo bukan nol, diurutkan berdasarkan token):

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"
  }
}

Alamat tanpa saldo bukan nol tetap mengembalikan 200 dengan data: [] — tidak pernah 404. Kirimkan ?limit= (default 50, maksimum 500) dan next_cursor yang dikembalikan untuk mengueri halaman berikutnya.

Cakupan lengkap endpoint — blok, transaksi, alamat, token, NFT, DEX, dan saham tertokenisasi — ada di Referensi API → Data API.

Bacaan lebih lanjut

FAQ

Rantai mana saja yang didukung?

9 rantai didukung: Arbitrum One, Base, BNB Smart Chain, Ethereum, Ethereum Sepolia, HyperEVM, Polygon, Robinhood Chain, Robinhood Chain Testnet. Daftar ini mengikuti GET /v1/chains dan diperbarui saat rantai baru diluncurkan. Lihat halaman status untuk status langsung. Lihat rantai yang didukung →

Apakah WebSocket didukung?

Memanggil eth_subscribe melalui HTTP mengembalikan -32601; pada rantai dengan ws bernilai true di /v1/chains, eth_subscribe tersedia melalui WebSocket. Jika tidak, lakukan polling eth_getLogs. Lihat rantai yang didukung →

Dapatkah saya melakukan kueri state historis dan trace?

Ya, tetapi bervariasi menurut rantai. Jendela state historis adalah kolom state_window_blocks pada /v1/chains (null berarti riwayat penuh); ketersediaan trace bergantung pada apakah methods.allow untuk rantai tersebut mencakup metode debug_trace (seperti debug_traceTransaction); rentang blok maksimum untuk satu permintaan eth_getLogs adalah max_logs_block_range. Lihat direktori rantai dan parameter per rantai →

Bisakah satu kunci API digunakan di semua rantai?

Ya. Satu kunci API berfungsi untuk JSON-RPC di setiap rantai yang didukung dan untuk Data API pada rantai yang menyediakannya; kunci tersebut milik akun, bukan milik rantai tertentu. Panduan satu kunci multi-rantai →

Terakhir diperbarui:

Di halaman ini