# Chaînes prises en charge

> Source: https://docs.blockvectra.com/fr/chains/

BlockVectra est un fournisseur de données blockchain multi-chaînes : JSON-RPC sur toutes les chaînes que nous prenons en charge, et Data API là où elle est disponible.

## Une seule clé, toutes les chaînes

* **Clé universelle** : la même clé API fonctionne sur chaque réseau blockchain pris en charge par BlockVectra — pas de clés séparées par chaîne.
* **Chaîne dans l'URL** : chaque requête nomme explicitement sa chaîne via le segment de chemin `{chain}`.
* **Utilisation mutualisée** : le solde du compte, les quotas de limitation de débit en Compute Units (CU) et les limites de requêtes par seconde du forfait gratuit sont partagés entre toutes les chaînes.
* **Tarifs** : voir les [Tarifs](https://blockvectra.com/fr/pricing/).

## Essayer sans clé API

Choisissez un [point de terminaison RPC public gratuit](https://blockvectra.com/fr/free/#public-rpc) pour utiliser les méthodes de portefeuille sans clé API. Les méthodes publiques et les limites par IP sont répertoriées par réseau ; voir le [Démarrage rapide](https://docs.blockvectra.com/fr/quickstart/) pour un exemple d'appel.

## Modèles d'URL

Structures d'URL standard pour appeler le JSON-RPC et la Data API :

| Service  | Mode                       | Modèle d'URL                 | Notes                                                                    |
| -------- | -------------------------- | ---------------------------- | ------------------------------------------------------------------------ |
| JSON-RPC | Clé dans le chemin         | `POST /v1/{chain}/{api_key}` | Forme la plus simple ; recommandée pour curl et les clients HTTP         |
| JSON-RPC | Clé dans un en-tête        | `POST /v1/{chain}`           | Transmettez la clé dans l'en-tête de requête `x-api-key: {api_key}`      |
| Data API | Points de terminaison REST | `GET /v1/data/{chain}/…`     | Transmettez la clé dans l'en-tête de requête `x-api-key`                 |
| État     | État public                | `GET /v1/status`             | Aucune clé requise ; renvoie l'état et la tête de chaque chaîne publique |

> **Remarque** : une requête sans segment de chaîne (par ex. `POST /v1` ou `POST /v1/`) renvoie HTTP 404 avec un corps vide. Voir le [Démarrage rapide](https://docs.blockvectra.com/fr/quickstart/) pour les détails de configuration.

## Matrice des chaînes prises en charge

Les réseaux blockchain actuellement disponibles sur BlockVectra, avec leurs fonctionnalités de service :

Les points de terminaison, les méthodes avec une clé API, les abonnements, l'envoi de transactions, les limites d'état et de logs, les jeux de données, les testnets associés et les guides sont affichés par chaîne. Les éléments non déterminés restent non précisés. Développez une chaîne sous la matrice pour voir les requêtes prises en charge par cette chaîne.

| Chaîne | {chain} | Chain ID | Tracing | Endpoint public | WebSocket | Data API | Méthodes avec une clé API | Notifications Webhook | Envoyer des transactions | Envoyer des transactions (endpoint public sans key) | Fenêtre d'historique d'état | Plage maximale de blocs pour eth_getLogs | Jeux de données Data API | Réseaux de test associés | Guides associés |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| [RPC et Data API arb_mainnet](https://blockvectra.com/fr/chains/arb_mainnet/) | arb_mainnet | 42161 | ✓ | `https://api.blockvectra.com/v1/arb_mainnet/public` | Non pris en charge | Ouvert | 43 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | État historique pour les 6,000 blocs les plus récents | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Fraîcheur des données | Inconnu | Inconnu |
| [RPC et Data API base_mainnet](https://blockvectra.com/fr/chains/base_mainnet/) | base_mainnet | 8453 | — | `https://api.blockvectra.com/v1/base_mainnet/public` | Non pris en charge | Ouvert | 39 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | État historique pour les 10,000 blocs les plus récents | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Fraîcheur des données | Inconnu | [Base](https://docs.blockvectra.com/fr/guides/base/) |
| [RPC et Data API bsc_mainnet](https://blockvectra.com/fr/chains/bsc_mainnet/) | bsc_mainnet | 56 | — | `https://api.blockvectra.com/v1/bsc_mainnet/public` | Non pris en charge | Ouvert | 25 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | État historique pour les 100 blocs les plus récents | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Fraîcheur des données | Inconnu | Inconnu |
| [RPC et Data API Ethereum](https://blockvectra.com/fr/chains/eth_mainnet/) | eth_mainnet | 1 | ✓ | `https://api.blockvectra.com/v1/eth_mainnet/public` | Non pris en charge | Ouvert | 38 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | État historique pour les 250,000 blocs les plus récents | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Fraîcheur des données | Inconnu | Inconnu |
| [RPC et Data API eth_sepolia](https://blockvectra.com/fr/chains/eth_sepolia/) | eth_sepolia | 11155111 | — | `https://api.blockvectra.com/v1/eth_sepolia/public` | Non pris en charge | Ouvert | 29 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | Inconnu | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Fraîcheur des données | Inconnu | Inconnu |
| [RPC et Data API HyperEVM](https://blockvectra.com/fr/chains/hyperevm_mainnet/) | hyperevm_mainnet | 999 | — | `https://api.blockvectra.com/v1/hyperevm_mainnet/public` | Non pris en charge | Ouvert | 24 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Non pris en charge | Non pris en charge | Inconnu | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Soldes, Détenteurs, NFT, Fraîcheur des données | Inconnu | [HyperEVM backfill and polling](https://docs.blockvectra.com/fr/guides/hyperevm-backfill/) |
| [RPC et Data API polygon_mainnet](https://blockvectra.com/fr/chains/polygon_mainnet/) | polygon_mainnet | 137 | ✓ | `https://api.blockvectra.com/v1/polygon_mainnet/public` | Non pris en charge | Ouvert | 43 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | État historique pour les 126 blocs les plus récents | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Fraîcheur des données | Inconnu | Inconnu |
| [RPC et Data API Robinhood Chain](https://blockvectra.com/fr/chains/robinhood_mainnet/) | robinhood_mainnet | 4663 | ✓ | `https://api.blockvectra.com/v1/robinhood_mainnet/public` | Pris en charge (newHeads, logs) | Ouvert | 43 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | État historique pour les 900 blocs les plus récents | 1,000 blocs | Blocs, Transactions, Transactions d'adresses, Transferts, Métadonnées de jetons, Soldes, Détenteurs, NFT, Swaps DEX, Prix DEX, Actions tokenisées, Traces, Fraîcheur des données | Inconnu | [Robinhood Chain](https://docs.blockvectra.com/fr/guides/robinhood-chain/), [Stock token multiplier](https://docs.blockvectra.com/fr/guides/stock-token-multiplier/), [Tokenized stocks](https://docs.blockvectra.com/fr/guides/stocks/) |
| [RPC robinhood_testnet](https://blockvectra.com/fr/chains/robinhood_testnet/) | robinhood_testnet | 46630 | ✓ | `https://api.blockvectra.com/v1/robinhood_testnet/public` | Pris en charge (newHeads, logs) | Pas encore disponible | 43 | [Pris en charge · Confirmations 1–1 (par défaut 1)](https://blockvectra.com/fr/webhooks/), [Guide des notifications Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) | Pris en charge | Pris en charge | État historique pour les 1,023 blocs les plus récents | 1,000 blocs | Non pris en charge | Inconnu | [Testnet faucet](https://docs.blockvectra.com/fr/guides/robinhood-testnet-faucet/), [Robinhood Chain Testnet starter](https://docs.blockvectra.com/fr/guides/robinhood-testnet-starter/) |

## Étapes suivantes avec une clé API

### arb_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/arb_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/fr/api/data/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### base_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/base_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/fr/api/data/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### bsc_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/bsc_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/fr/api/data/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### Ethereum

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/eth_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/fr/api/data/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### eth_sepolia

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/eth_sepolia/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/fr/api/data/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### HyperEVM

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/hyperevm_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/fr/api/data/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### polygon_mainnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

```bash
curl -fsS 'https://api.blockvectra.com/v1/data/polygon_mainnet/status/freshness' -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

[Data API](https://docs.blockvectra.com/fr/api/data/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### Robinhood Chain

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### Data API

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

[Data API](https://docs.blockvectra.com/fr/api/data/)

#### WebSocket

```bash
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](https://docs.blockvectra.com/fr/guides/websocket-subscriptions/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

### robinhood_testnet

#### eth_getLogs

```bash
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](https://docs.blockvectra.com/fr/guides/getlogs-block-range/)

#### WebSocket

```bash
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](https://docs.blockvectra.com/fr/guides/websocket-subscriptions/)

[Créer un abonnement Webhook](https://blockvectra.com/fr/webhooks/) · [Créer un abonnement Webhook](https://docs.blockvectra.com/fr/guides/webhook-push/) · [Utilisation et CU](https://console.blockvectra.com/usage/) · [Recharger](https://console.blockvectra.com/billing/)

**HyperEVM**
Les blocs HyperEVM incluent des transactions système HyperCore (provenant de l'adresse 0x2222…2222 ou 0x20…, gasPrice 0).
L'envoi de transactions n'est pas encore pris en charge sur cette chaîne (`eth_sendRawTransaction` renvoie `-32601` `method_not_allowed`) ; les méthodes de lecture fonctionnent normalement.

[Voir l'état en direct →](https://blockvectra.com/fr/status/)

## Ethereum

* **Chain ID** : `1`
* **Nom de la chaîne (`{chain}` dans les URL)** : `eth_mainnet`, par ex. `POST /v1/eth_mainnet/{api_key}` ou `GET /v1/data/eth_mainnet/…`.

### JSON-RPC

* **Méthodes** : les méthodes disponibles pour chaque chaîne sont déterminées par `methods.allow` / `deny` dans `GET /v1/chains` (voir la [Politique de méthode](https://docs.blockvectra.com/fr/api/json-rpc/#method-policy)) ; les méthodes hors de ce périmètre renvoient `-32601`.
* **Données récentes uniquement** : la fenêtre d'état historique est déterminée par `state_window_blocks` dans `GET /v1/chains`. Les requêtes d'état historique en dehors de cette fenêtre renvoient `-32011` (non facturé) ; les requêtes de blocs, reçus et logs en dehors de la fenêtre renvoient `-32000 old data not available due to pruning` (non facturé) ; une transaction recherchée par hash en dehors de la fenêtre renvoie `result: null`.
* **`eth_getLogs`** : la plage de blocs maximale par requête est définie par `max_logs_block_range` dans `GET /v1/chains`.

### Data API

* **Données récentes uniquement** : la couverture des données Ethereum est déterminée par `coverage.from_block` dans `GET /v1/data/chains`. Un numéro de bloc ou une fenêtre antérieur(e) au point de départ renvoie `422 no_coverage` ; un hash de transaction ayant quitté la fenêtre renvoie `404`.
* **Lorsque `from_block` est `null`** : le point de départ est temporairement indéterminé. Ne le traitez pas comme `0` ni comme un historique complet, et n'envoyez pas de requêtes historiques (par numéro de bloc, fenêtre ou hash) pour Ethereum tant qu'il ne redevient pas un entier ; elles renvoient `503 unavailable`.
* **`503 gateway_overloaded`** : réessayez avec un délai d'attente progressif (`Retry-After: 1`).
* **Jeux de données** : les jeux de données servis par Ethereum sont répertoriés dans le champ `features` de `GET /v1/data/chains` ; les autres renvoient `422 no_coverage` (non facturé). Les transactions et transferts par adresse ne couvrent que la fenêtre : une réponse qui franchit son point de départ est marquée `meta.coverage: "partial"`.

## Découvrir les chaînes de manière programmatique

Utilisez ces points de terminaison publics pour découvrir les chaînes prises en charge et leur état :

### 1. État du service (`GET /v1/status`)

Un point de terminaison public ne nécessitant aucune clé API (CORS `*`). Il répertorie uniquement les chaînes accessibles publiquement et renvoie leur état ainsi que leur tête indexée :

```bash
curl -s "https://api.blockvectra.com/v1/status"
```

Exemple de réponse :

```json
{
  "checked_at": "2026-09-28T07:40:00Z",
  "gateway": { "status": "ok" },
  "chains": [
    {
      "chain": "robinhood_mainnet",
      "name": "Robinhood Chain",
      "chain_id": 4663,
      "jsonrpc": true,
      "data": true,
      "status": "ok",
      "data_status": "ok",
      "sync": { "stage": "synced", "node_block": 74600000, "target_block": null },
      "head": {
        "block": 74600000,
        "time": "2026-09-28T07:39:58Z",
        "lag_seconds": 3
      }
    },
    {
      "chain": "eth_mainnet",
      "name": "Ethereum",
      "chain_id": 1,
      "jsonrpc": true,
      "data": true,
      "status": "ok",
      "data_status": "ok",
      "sync": { "stage": "synced", "node_block": 26010000, "target_block": null },
      "head": {
        "block": 26010000,
        "time": "2026-09-28T07:39:59Z",
        "lag_seconds": 1
      }
    }
  ]
}
```

Le champ `name` de chaque entrée correspond toujours au nom d'affichage anglais de la chaîne. `jsonrpc` et `data` indiquent si cette chaîne est ouverte respectivement pour le JSON-RPC et la Data API ; `status` vaut `"ok"` ou `"unavailable"`. Si une chaîne est en cours de synchronisation, les appels vers cette chaîne renvoient `-32010`. Sur `/v1/status`, `status` indique si le JSON-RPC fonctionne normalement et `data_status` indique si la Data API fonctionne normalement (`"ok"`, `"syncing"`, ou `"unavailable"`) ; dans `/v1/data/chains`, une valeur `coverage.has_data` égale à `false` signifie que la chaîne n'a pas encore de données indexées.

### 2. Chaînes de la Data API (`GET /v1/data/chains`)

Nécessite une clé API dans l'en-tête `x-api-key` (facturé). Renvoie les chaînes publiques servies par la Data API, chacune avec les éléments qu'elle dessert (`features`), les blocs couverts par ses données (`coverage`), les marqueurs de consensus `safe`/`finalized` du nœud ainsi que leur état (`finality`) et ses limites par requête (`limits`) :

```bash
curl -s "https://api.blockvectra.com/v1/data/chains" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

Exemple de réponse :

```json
{
  "data": [
    {
      "chain": "robinhood_mainnet",
      "chain_slug": "ROBINHOOD_MAINNET",
      "name": "Robinhood Chain",
      "chain_id": 4663,
      "chain_external_id": "eip155:4663",
      "features": [
        "blocks", "transactions", "address_transactions", "transfers", "token_metadata",
        "balances", "holders", "nfts", "dex_swaps", "dex_prices", "stocks", "traces", "freshness"
      ],
      "coverage": { "from_block": 0, "traces_from_block": 1000000, "has_data": true },
      "finality": { "model": "node_tags", "status": "ok", "safe_block": 74599400, "finalized_block": 74598900 },
      "limits": { "max_page_size": 500, "max_window_blocks": 100000, "max_pools_for_token": 200, "max_batch_addresses": 100 }
    },
    {
      "chain": "eth_mainnet",
      "chain_slug": "ETH_MAINNET",
      "name": "Ethereum",
      "chain_id": 1,
      "chain_external_id": "eip155:1",
      "features": ["blocks", "transactions", "address_transactions", "transfers", "token_metadata", "freshness"],
      "coverage": { "from_block": 1000000, "traces_from_block": null, "has_data": true },
      "finality": { "model": "node_tags", "status": "stale", "safe_block": 26009950, "finalized_block": 26009900 },
      "limits": { "max_page_size": 500, "max_window_blocks": 100000, "max_pools_for_token": 200, "max_batch_addresses": 100 }
    }
  ]
}
```

`finality` indique les marqueurs de consensus du nœud (`model` vaut `"node_tags"`), la santé des marqueurs (`status` vaut `"ok"`, `"stale"`, ou `"unavailable"`), et les valeurs actuelles de `safe_block` et `finalized_block` (`safe_block >= finalized_block`, et tous deux ne valent `null` que lorsque le statut est `"unavailable"`).

`coverage.from_block` est le bloc indexé le plus bas, lu en direct. Il vaut `0` dès que l'historique de la chaîne remonte jusqu'au bloc de genèse. Il ne peut valoir `null` que lorsque la chaîne n'a aucun bloc indexé (`has_data = false`), ou tant que le point de départ ne peut pas être déterminé : traitez `null` comme indéterminé — ni comme un historique complet, ni comme `0` — et les requêtes historiques renvoient alors `503 unavailable`. Lisez-le toujours depuis ce point de terminaison au moment de l'exécution au lieu de le coder en dur. `coverage.traces_from_block` est le premier bloc contenant des données de trace ; une requête de trace antérieure à celui-ci, ou située dans un intervalle manquant, renvoie `422 no_coverage` (non facturé).

Appeler `/v1/data/{chain}/…` avec une chaîne inconnue ou non publique renvoie HTTP `404` avec `error.code` `not_found` (non facturé ; le nom de la chaîne doit être le slug exact en minuscules).
