# Métriques quotidiennes on-chain des actions tokenisées avec la Data API

> Source: https://docs.blockvectra.com/fr/guides/stocks/

> Les données proviennent des registres publics on-chain et sont fournies à titre informatif uniquement. Elles ne constituent pas un conseil en investissement.


Pour le déploiement de contrats et l'écoute d'événements sur Robinhood Chain, suivez le [guide RPC et WebSocket](https://docs.blockvectra.com/fr/guides/robinhood-chain/).

* **Première étape :** [Lire le dernier bloc sans API key](#1-read-the-latest-block-without-an-api-key) à l'aide de la commande curl ci-dessous.
* **Terminé quand :** La requête authentifiée sur les actions renvoie `data` et `meta` ; les enregistrements disponibles incluent `day`, `token`, `transfers` et `holder_count`, tandis que `data: []` signifie qu'aucun enregistrement d'activité n'est disponible.

[Paramètres du mainnet et jeux de données](https://blockvectra.com/fr/chains/robinhood_mainnet/).

<span id="stock-activity-task" />

## Tâche en trois étapes : interroger l'activité des actions sur Robinhood Chain

Trouvez les actions tokenisées les plus actives lors du dernier jour UTC enregistré, puis lisez leur nombre de transferts et leur nombre de détenteurs.

Utilisez une seule API key pour interroger l'activité des tokens d'actions et les détenteurs sur le mainnet pour un tableau de bord d'activité. Ce sont des métriques d'activité on-chain, non des cours d'actions.

### 1. Lire le dernier bloc sans API key

```bash
curl -sS "https://api.blockvectra.com/v1/robinhood_mainnet/public" \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
```

Le `result` JSON-RPC est le dernier numéro de bloc en hexadécimal. Cet appel RPC public ne nécessite aucune clé ; la requête Data API de l'étape 3 en requiert une.

### 2. Créer une clé pour la même chaîne

[Connectez-vous à la console et ouvrez Clés API](https://console.blockvectra.com/login/?next=%2Fkeys%2F\&ref=docs-stocks-task). Créez une clé et enregistrez le secret affiché dans la boîte de dialogue. La même clé fonctionne pour JSON-RPC et la Data API sur `robinhood_mainnet`.

Pour un agent IA utilisant HTTP sans navigateur, suivez le [guide d'inscription programmatique](https://docs.blockvectra.com/fr/guides/programmatic-signup/?ref=docs-stocks-task) pour vous inscrire avec une signature de portefeuille Ethereum et créer une clé ; ne demandez pas à l'utilisateur de coller la clé dans le chat.

### 3. Interroger l'activité des actions avec votre clé

Remplacez `replace-with-your-key` ci-dessous par votre clé enregistrée, puis exécutez la commande sur votre serveur ou dans un terminal local. Omettre `day` sélectionne le dernier jour enregistré ; `limit=5` renvoie jusqu'à cinq actions ordonnées par activité de transfert décroissante.

```bash
export BLOCKVECTRA_API_KEY='replace-with-your-key'

curl -sS "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?limit=5" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```

Lisez ces champs dans la réponse :

| Champ                 | Signification                                                                                         |
| --------------------- | ----------------------------------------------------------------------------------------------------- |
| `data[].day`          | Date UTC des métriques quotidiennes.                                                                  |
| `data[].token`        | Adresse du contrat de token d'action renvoyée par la requête.                                         |
| `data[].symbol`       | Symbole du jeton.                                                                                     |
| `data[].transfers`    | Nombre de transferts on-chain sur cette journée.                                                      |
| `data[].holder_count` | Nombre total d'adresses détentrices.                                                                  |
| `meta.as_of_block`    | Sommet indexé actuel, plutôt que la hauteur de bloc de l'instantané des métriques quotidiennes.       |
| `meta.refreshed_at`   | Heure de mise à jour de l'instantané ; considérez les données comme obsolètes si ce champ est `null`. |

Un tableau `data` vide signifie qu'aucun enregistrement d'activité n'est disponible. Pour inspecter une action à partir du résultat, utilisez sa valeur `token` avec `GET /robinhood_mainnet/stocks/{token}` comme décrit ci-dessous.

## Qu'est-ce que le jeu de données des actions tokenisées

La Data API de BlockVectra fournit des métriques quotidiennes on-chain et des métadonnées pour les actions tokenisées. Ce jeu de données agrège les transferts quotidiens, les émissions (mints), les destructions (burns), les variations nettes d'offre, la distribution des détenteurs et les métriques de trading sur les plateformes d'échange décentralisées (DEX), permettant aux développeurs de suivre l'activité publique des actions tokenisées.

Pour les chaînes proposant ce jeu de données, consultez la page des [Chaînes prises en charge](https://docs.blockvectra.com/fr/chains/).

* **URL de base** : `https://api.blockvectra.com/v1/data` — à l'exception de `GET /chains`, toutes les routes de la Data API sont préfixées par un identifiant de chaîne (ex. `https://api.blockvectra.com/v1/data/{chain}/…`)
* **Exemple de chaîne** : `robinhood_mainnet` (utilisé comme exemple de paramètre de chemin ; consultez les [Chaînes prises en charge](https://docs.blockvectra.com/fr/chains/) pour connaître toutes les chaînes proposant ce jeu de données)
* **Authentification** : fournissez votre API key dans l'en-tête de requête `x-api-key: $BLOCKVECTRA_API_KEY`
* **Facturation et couverture** : mesuré en Compute Units (CU) ; seules les réponses réussies 2xx sont facturées. Si une chaîne ne dispose pas de couverture pour les actions, le point de terminaison renvoie HTTP `422 no_coverage` (non facturé)

## Classement quotidien (`GET /{chain}/stocks`)

Le point de terminaison `GET /{chain}/stocks` renvoie un classement de l'activité quotidienne des actions tokenisées pour une date UTC spécifiée, incluant les métadonnées d'affichage (symbole, nom, etc.), ordonnées par activité de transfert décroissante (jetons les plus actifs en premier).

### Paramètres de requête

* `{chain}` (paramètre de chemin, obligatoire) : identifiant de chaîne (par exemple, `robinhood_mainnet`).
* `day` (paramètre de requête, optionnel) : date du calendrier UTC au format `YYYY-MM-DD`. En cas d'omission, correspond par défaut au dernier jour enregistré (si aucune activité n'est enregistrée, renvoie `200` avec `data: []`). Si fourni mais non valide au format de calendrier `YYYY-MM-DD`, renvoie HTTP `400` (`error.code = "bad_request"`).
* `limit` (paramètre de requête, optionnel) : plafonne le nombre d'enregistrements renvoyés. Par défaut à 50 ; les valeurs supérieures à 500 sont limitées à 500 ; passer `0` ou un nombre non entier renvoie HTTP `400` (`error.code = "bad_request"`).

### Comportement de pagination

Ce point de terminaison n'est **pas paginé**. Le paramètre `limit` plafonne le nombre maximal d'enregistrements renvoyés. Dans l'enveloppe globale `StockDailyListEnvelope` (`data` et `meta`), les points de terminaison des actions ne renvoient pas `next_cursor` (la clé est totalement absente, jamais `null`).

### Exemples de code

Modèle de démarrage complet sur Robinhood Chain : [blockvectra/robinhood-stock-tokens](https://github.com/blockvectra/robinhood-stock-tokens)

**cURL**

```bash
curl -s "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?day=2026-09-29&limit=10" \
  -H "x-api-key: $BLOCKVECTRA_API_KEY"
```


  **TypeScript**

```ts
const res = await fetch(
  "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?day=2026-09-29&limit=10",
  {
    headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
  },
);
const body = await res.json();
console.log(body);
```


  **Python**

```python
import os
import requests

res = requests.get(
    "https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks?day=2026-09-29&limit=10",
    headers={"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]},
)
print(res.json())
```


### Structure de réponse

L'enveloppe de réponse est `StockDailyListEnvelope`, contenant `data` et `meta` :

* `data` (tableau) : une liste d'enregistrements du classement quotidien (`StockDaily`), ordonnée par activité de transfert décroissante (jetons les plus actifs en premier). Chaque élément inclut les identifiants du jeton (`token`, `symbol`, `name`), l'activité de transfert (`transfers`, `unique_senders`, `unique_receivers`), les métriques d'offre (`mint_raw_amount`, `burn_raw_amount`, `net_supply_change`), les métriques de distribution (`holder_count`, `top10_holder_share_bps`), les métriques de trading DEX (`dex_swap_count`, `dex_raw_volume`) et l'horodatage de rafraîchissement (`refreshed_at`).
* `meta` (objet) : métadonnées de la chaîne (`chain`, `chain_slug`, `chain_external_id`, `as_of_block`, `safe_block`, `finalized_block`, `coverage`, `refreshed_at`). `meta.refreshed_at` peut être `null` : `null` signifie que l'heure de mise à jour de ces données est inconnue et qu'elles doivent être traitées comme obsolètes ; les points de terminaison basés sur les blocs renvoient toujours une valeur.

## Obtenir une action tokenisée (`GET /{chain}/stocks/{token}`)

Le point de terminaison `GET /{chain}/stocks/{token}` récupère les métadonnées et jusqu'à 30 jours de métriques quotidiennes récentes pour une action tokenisée spécifique via son adresse de jeton.

### Paramètres de requête

* `{chain}` (paramètre de chemin, obligatoire) : identifiant de chaîne (par exemple, `robinhood_mainnet`).
* `{token}` (paramètre de chemin, obligatoire) : adresse du contrat de jeton sur 20 octets ; le préfixe `0x` est optionnel et les majuscules/minuscules sont acceptées (les adresses renvoyées sont normalisées avec `0x` suivi de 40 chiffres hexadécimaux minuscules). Un format d'adresse non valide renvoie HTTP `400` (`error.code = "bad_request"`).
* Si `{token}` n'est pas une action tokenisée connue, renvoie HTTP `404` (`error.code = "not_found"`). Si `{chain}` est une chaîne inconnue, renvoie HTTP `404` (`error.code = "unknown_chain"`).

### Exemples de code

**cURL**

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


  **TypeScript**

```ts
const token = "0x1111111111111111111111111111111111111111";
const res = await fetch(
  `https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks/${token}`,
  {
    headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
  },
);
const body = await res.json();
console.log(body);
```


  **Python**

```python
import os
import requests

token = "0x1111111111111111111111111111111111111111"
res = requests.get(
    f"https://api.blockvectra.com/v1/data/robinhood_mainnet/stocks/{token}",
    headers={"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]},
)
print(res.json())
```


### Structure de réponse

L'enveloppe de réponse est `StockTokenEnvelope`, contenant `data` et `meta` :

* `data` (objet) : un objet `StockToken` contenant les métadonnées du contrat de jeton (`address`, `symbol`, `name`, `decimals`, `created_block`, `created_tx_hash`, `factory`, `creator`, `mint_address`, `burn_address`, `refreshed_at`) et un tableau de métriques quotidiennes récentes `daily`.
  * `daily` (tableau) : un tableau de métriques quotidiennes récentes (`StockDailyMetric`), jusqu'à 30 jours, ordonné par date décroissante (plus récent en premier). Chaque élément quotidien partage le même schéma de métriques que le classement ci-dessus (sans les champs redondants `token`, `symbol` et `name`).
* `meta` (objet) : objet de métadonnées de chaîne conforme à la réponse du classement.

## Explication des champs de retour clés

### Champs des métriques quotidiennes (StockDaily et StockDailyMetric)

Le classement ainsi que les éléments quotidiens historiques d'un jeton unique incluent les champs principaux suivants :

| Champ                    | Type                 | Description                                                                                                                                    |
| ------------------------ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `day`                    | `string` (date)      | Date d'agrégation UTC formatée en `YYYY-MM-DD`.                                                                                                |
| `token`                  | `string` (address)   | Adresse du contrat de jeton (présente uniquement dans le classement `StockDaily`), 40 caractères hexadécimaux minuscules avec le préfixe `0x`. |
| `symbol`                 | `string`             | Symbole du jeton (par exemple, `"EXMPL"`).                                                                                                     |
| `name`                   | `string`             | Nom d'affichage du jeton ; chaîne vide `""` lorsqu'aucune métadonnée de nom correspondante n'est disponible.                                   |
| `transfers`              | `integer` (int64)    | Nombre total de transferts on-chain au cours de cette journée UTC.                                                                             |
| `unique_senders`         | `integer` (int64)    | Nombre d'adresses d'expéditeurs uniques ayant initié des transferts ce jour-là.                                                                |
| `unique_receivers`       | `integer` (int64)    | Nombre d'adresses de destinataires uniques ayant reçu des transferts ce jour-là.                                                               |
| `mint_raw_amount`        | `string` (decimal)   | Montant brut total de jetons émis ce jour-là.                                                                                                  |
| `burn_raw_amount`        | `string` (decimal)   | Montant brut total de jetons détruits ce jour-là.                                                                                              |
| `net_supply_change`      | `string` (decimal)   | Variation nette de l'offre ce jour-là (chaîne décimale signée, peut être négative).                                                            |
| `holder_count`           | `integer` (int64)    | Nombre total d'adresses détentrices.                                                                                                           |
| `top10_holder_share_bps` | `integer`            | Part des 10 principaux détenteurs en points de base (0–10000, 1 bps = 0,01%).                                                                  |
| `dex_swap_count`         | `integer` (int64)    | Nombre de swaps DEX impliquant ce jeton ce jour-là.                                                                                            |
| `dex_raw_volume`         | `string` (decimal)   | Volume brut total d'échanges sur DEX ce jour-là.                                                                                               |
| `refreshed_at`           | `string` (timestamp) | Horodatage UTC ISO-8601 de la dernière mise à jour de cet enregistrement quotidien.                                                            |

### Champs de métadonnées du jeton (StockToken)

Lors de l'interrogation d'un seul jeton, l'objet externe `data` contient les métadonnées du contrat et les métriques quotidiennes récentes :

| Champ             | Type                         | Description                                                                                                                                |
| ----------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `address`         | `string` (address)           | Adresse du contrat de jeton.                                                                                                               |
| `symbol`          | `string`                     | Symbole du jeton.                                                                                                                          |
| `name`            | `string`                     | Nom complet du jeton.                                                                                                                      |
| `decimals`        | `integer` ou `null`          | Décimales du jeton (0–255), ou `null` si non disponible.                                                                                   |
| `created_block`   | `integer` (int64)            | Numéro de bloc dans lequel le contrat de jeton a été créé.                                                                                 |
| `created_tx_hash` | `string` (hash)              | Hash de transaction de création du contrat, 64 caractères hexadécimaux minuscules avec le préfixe `0x`.                                    |
| `factory`         | `string` (address)           | Adresse du contrat factory.                                                                                                                |
| `creator`         | `string` (address) ou `null` | Adresse du créateur, ou `null` si non disponible.                                                                                          |
| `mint_address`    | `string` (address) ou `null` | Adresse d'émission (mint), ou `null` si non disponible.                                                                                    |
| `burn_address`    | `string` (address) ou `null` | Adresse de destruction (burn), ou `null` si non disponible.                                                                                |
| `daily`           | `array`                      | Tableau de métriques quotidiennes récentes (`StockDailyMetric`), jusqu'à 30 jours, ordonné par date décroissante (plus récent en premier). |
| `refreshed_at`    | `string` (timestamp)         | Horodatage UTC ISO-8601 de la dernière mise à jour des métadonnées du jeton.                                                               |

### Conventions d'encodage

L'API respecte des règles d'encodage strictes sur tous les points de terminaison afin de préserver la précision numérique et la cohérence :

* **Sécurité financière (Money-safety)** : toute valeur pouvant dépasser `2^53` (entiers de 256 bits tels que `mint_raw_amount`, `burn_raw_amount`, `net_supply_change` et `dex_raw_volume`) est sérialisée sous forme de **chaîne décimale**, jamais comme nombre JSON et jamais en notation scientifique ou hexadécimale. Cela évite les pertes de précision dans les environnements d'exécution tels que JavaScript. En JavaScript/TypeScript, analysez avec `BigInt(str)` (par exemple `const net = BigInt(body.data.daily[0].net_supply_change)`) ; en Python, analysez avec `int(str)`. Les compteurs restant bien en deçà de `2^53` (`transfers`, `unique_senders`, `unique_receivers`, `holder_count`, `top10_holder_share_bps`, `dex_swap_count`, `created_block`) sont de simples nombres JSON.
* **Valeurs binaires et hexadécimales** : les adresses sont composées de `0x` suivi de 40 caractères hexadécimaux minuscules ; les hashs sont composés de `0x` suivi de 64 caractères hexadécimaux minuscules. Toutes les valeurs hexadécimales renvoyées sont strictement en minuscules.
* **Horodatages et dates** : les horodatages tels que `refreshed_at` utilisent `YYYY-MM-DDTHH:MM:SSZ` (ISO-8601 UTC avec précision à la seconde). Les agrégats quotidiens (`day`) utilisent de simples dates de calendrier (`YYYY-MM-DD`).

## Estimation de consommation (actualisation quotidienne de 50 tokens)

Les requêtes de la Data API consomment des Compute Units (CU) selon les pondérations de méthodes de la plateforme. L'estimation ci-dessous évalue un scénario où 50 jetons appellent chacun `GET /{chain}/stocks/{token}` une fois par jour, calculée par rapport aux pondérations de méthodes actives :

- **Poids de la méthode par appel :** Chaque appel `data.stock` consomme 15 CU (prix catalogue de $1.50 par million d'appels).
- **Actualisation quotidienne de 50 tokens** (un appel `GET /{chain}/stocks/{token}` par token, 50 appels/jour) : la consommation quotidienne est de 750 CU ; sur un cycle de 30 jours, cela totalise 1,500 appels consommant 22,500 CU, soit environ <0.1% du quota gratuit (30,000,000 CU). En cas de dépassement du quota gratuit ou sur un forfait payant, l'utilisation totale au prix catalogue est d'environ <$0.01/mois.

## Démarrage et mise à niveau

Le quota gratuit est idéal pour le développement, les tests et les charges de travail légères. Lorsque votre trafic augmente et nécessite une concurrence plus élevée ou davantage d'unités de calcul, rechargez on-chain sur la [page Facturation](https://console.blockvectra.com/billing/) de la console ; une fois la transaction confirmée on-chain et créditée, le plafond d'appels par seconde au niveau du compte est supprimé. Chaque clé reste soumise aux limites de débit en CU et de burst, comme décrit dans la [documentation JSON-RPC](https://docs.blockvectra.com/fr/api/json-rpc/#method-policy). Tous les crédits gratuits inutilisés restent dans vos crédits et peuvent toujours être utilisés. Pour connaître les tarifs et unités de facturation actuels, veuillez consulter la [page Tarifs](https://blockvectra.com/fr/pricing/).

## Étapes suivantes

* [Parcourir le répertoire des jeux de données](https://blockvectra.com/fr/data/) pour voir chaque jeu de données indexé par BlockVectra.
* [Consulter le forfait gratuit et les tarifs](https://blockvectra.com/fr/pricing/#free) pour vérifier ce que comprend votre compte.
* [Se connecter à la console](https://console.blockvectra.com/login/?next=%2Fkeys%2F) pour créer une API key.
