# Référence des erreurs

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

Cette référence documente l'ensemble des codes d'erreur et des valeurs `reason` lisibles par machine sur tous les services BlockVectra, en précisant notamment si un appel rejeté est facturé, les politiques de nouvelle tentative, les durées d'attente exponentielle et les actions recommandées pour les agents IA et les clients automatisés.

Pour une utilisation automatisée, récupérez le catalogue complet au format JSON sur [/errors.json](https://docs.blockvectra.com/errors.json). Chaque réponse d'erreur comportant une `docs_url` renvoie directement vers un point d'ancrage stable sur cette page : `https://docs.blockvectra.com/en/errors/#<reason>` (ou `#-<code-number>` pour les erreurs sans code de motif `reason`).

### Erreurs JSON-RPC



| HTTP | Code | Reason | Signification | Facturé | Réessayable | Temps d'attente (Retry-After) | Action de l'agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 401 | -32024 | `missing_api_key` | `Clé API manquante : transmettez-la dans le chemin de la requête (/v1/{chain}/<api_key>) ou dans l'en-tête x-api-key` | Non | Non | — | Pour les points de terminaison JSON-RPC (/v1/{chain}), transmettez la clé API dans le chemin de la requête (/v1/{chain}/<api_key>) ou dans l'en-tête x-api-key. Pour la Top-up API (/v1/topup/*), transmettez la clé API uniquement dans l'en-tête x-api-key. |
| 401 | -32024 | `invalid_api_key` | `Clé API inconnue, désactivée ou révoquée : JSON-RPC et la Data API renvoient tous deux HTTP 401 avec la structure d'erreur invalid_api_key (JSON-RPC : error.code -32024 et error.data.reason invalid_api_key ; Data API : error.code et error.data.reason invalid_api_key).` | Non | Non | — | Vérifiez la clé API ; si nécessaire, reconnectez-vous à la console ou via l'inscription programmatique pour obtenir une nouvelle clé (voir [Session ou clé API perdue ?](https://docs.blockvectra.com/en/guides/programmatic-signup/#lost-your-session-or-api-key)). |
| 403 | -32025 | `key_expired` | `La clé API a expiré ; créez une nouvelle clé dans la console` | Non | Non | — | La clé API a expiré ; créez une nouvelle clé dans la console ou via l'inscription programmatique. |
| 403 | -32025 | `key_cap_exhausted` | `Le plafond de CU sur la durée de vie de la clé API est épuisé ; créez une nouvelle clé dans la console` | Non | Non | — | Le plafond de CU sur la durée de vie de la clé API est épuisé ; créez une nouvelle clé dans la console ou via l'inscription programmatique. |
| 503 | -32021 | `auth_unavailable` | `Données d'authentification temporairement indisponibles` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Le serveur est temporairement incapable de vérifier la clé ; ce n'est pas un problème avec votre clé. Réessayez après avoir attendu selon Retry-After ; **ne recréez pas de clés**. |
| 404 | -32600 | `unknown_chain` | `Chaîne inconnue` | Non | Non | — | Vérifiez les chaînes disponibles via GET /v1/chains ou l'outil list_chains ; vérifiez le chemin d'accès URL. |
| 404 | 404 | `unknown_endpoint` | `La méthode et le chemin de la Data API ne correspondent pas à une opération connue` | Non | Non | — | Vérifiez la méthode et le chemin d'accès URL conformément à la documentation de la Data API. |
| 200 | -32700 | `parse_error` | `Erreur d'analyse JSON` | Non | Non | — | Vérifiez la syntaxe JSON valide dans le corps de la requête avant de la renvoyer. |
| 200 | -32600 | `invalid_request` | `Requête non valide` | Non | Non | — | Vérifiez la structure de la requête ; vérifiez les champs jsonrpc: '2.0', id et method avant de renvoyer. |
| 200 | -32602 | `invalid_params` | `Tracer non autorisé` | Non | Non | — | Ajustez les paramètres de la méthode ; vérifiez les tracers pris en charge et les limites de délai d'attente pour la chaîne. |
| 200 | -32602 | `logs_range_too_large` | `Plage de blocs eth_getLogs trop grande : au maximum <N> blocs` | Non | Non | — | Réduisez la plage de blocs de la requête pour respecter le max_logs_block_range spécifié dans GET /v1/chains. |
| 429 | -32005 | `public_rate_limit` | `Limite de taux de requêtes publiques dépassée` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Attendez selon l'en-tête Retry-After puis réessayez ; ou envoyez les requêtes avec une clé API. [Obtenir une clé API](https://blockvectra.com/en/get-api-key/?ref=err-public). |
| 429 | -32005 | `public_pool_busy` | `Le pool de chaînes publiques est occupé` | Non | Oui | Respecter l'en-tête Retry-After ou attendre quelques secondes et réessayer avec un backoff | Réessayez avec un backoff, ou envoyez les requêtes avec une clé API. [Obtenir une clé API](https://blockvectra.com/en/get-api-key/?ref=err-public). |
| 200 | -32601 | `method_not_public` | `Méthode non disponible sur le point de terminaison public` | Non | Non | — | Utilisez une méthode prise en charge par le point de terminaison public, ou envoyez la requête avec une clé API. [Obtenir une clé API](https://blockvectra.com/en/get-api-key/?ref=err-public). |
| 200 | -32601 | `method_not_allowed` | `Méthode non disponible sur cette chaîne ou désactivée par une politique` | Non | Non | — | Vérifiez methods.allow et methods.deny dans GET /v1/chains pour connaître les méthodes prises en charge. La prise en charge de l'envoi de transactions est déterminée par methods.allow dans GET /v1/chains. L'envoi de transactions n'est actuellement pas disponible sur : HyperEVM. |
| 200 | -32601 | `subscription_not_available` | `L'abonnement WebSocket n'est pas proposé sur cette chaîne` | Non | Non | — | Vérifiez les abonnements disponibles pour cette chaîne via GET /v1/chains. |
| 200 | -32602 | `logs_filter_required` | `L'abonnement aux logs nécessite une adresse ou topic0 (valeur non nulle à la première position de topic)` | Non | Non | — | Spécifiez une adresse ou un topic0 non nul dans le filtre de logs. |
| 200 | -32600 | `batch_too_large` | `Lot trop grand : au maximum <N> appels` | Non | Non | — | Divisez le lot en lots plus petits respectant la limite maximale d'appels indiquée dans les données d'erreur. |
| 413 | 413 | `request_too_large` | `Le corps de la requête Data API dépasse la limite de taille` | Non | Non | — | Réduisez la taille du corps de la requête. |
| 200 | -32000 | `not_found` | `Transaction introuvable` | Non | Non | Réessayer après quelques secondes si récemment diffusée ou minée | Si la transaction vient d'être soumise ou minée, attendez la propagation et réessayez ; sinon, vérifiez le numéro de bloc ou le hachage. |
| 200 | -32011 | `state_window` | `État historique non disponible au-delà des <N> blocs les plus récents` | Non | Non | — | Interrogez l'état dans la limite de state_window_blocks disponible (voir GET /v1/chains), ou utilisez des nœuds d'archive. |
| 200 | -32011 | `range_not_indexed` | `L'historique demandé n'est pas complètement indexé` | Non | Non | — | Réduisez l'historique demandé à une plage indexée ; ne réessayez pas la même plage non couverte à l'identique. |
| 200 | -32011 | `history_not_ready` | `L'historique demandé n'est pas prêt` | Non | Oui | Attendre que l'indexation rattrape son retard ; respecter error.data.retry_after_seconds le cas échéant | Réessayez une fois que l'indexation aura rattrapé son retard, en attendant error.data.retry_after_seconds si fourni. |
| 429 | -32005 | `key_rate_limit` | `Limite de débit de Compute Units (CU) de la clé API dépassée` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Mettez en pause pendant la durée spécifiée dans l'en-tête Retry-After avant de réessayer, ou répartissez la charge. |
| 429 | rate_limited | `rate_limited` | `Limite de taux de requêtes dépassée sur l'API ou GET /v1/account (plus de 5 requêtes par seconde pour cette clé)` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Attendez pendant la durée indiquée dans Retry-After avant de réessayer. |
| 429 | -32005 | `concurrency_limit` | `Limite de requêtes simultanées en cours dépassée` | Non | Oui | Respecter l'en-tête Retry-After ou attendre que les appels actifs se terminent | Limitez la taille du pool de concurrence client et réessayez sur les créneaux libérés. |
| 429 | -32005 | `free_plan_call_limit` | `Limite d'appels par seconde du forfait gratuit dépassée` | Non | Oui | Attendre 1 seconde avant de réessayer | Ralentissez le débit de vos requêtes ou rechargez pour débloquer le débit du palier payant. |
| 429 | -32022 | `request_exceeds_burst` | `Le coût de requête de <N> CU dépasse la capacité de burst de <M> CU` | Non | Non | — | Attendre ne servira à rien ; divisez le lot ou réduisez les paramètres de méthode pour respecter la capacité de burst. |
| 429 | -32022 | `free_plan_batch_too_large` | `La requête contient <N> appels, ce qui dépasse la limite du forfait gratuit de <M> appels par seconde` | Non | Non | — | Attendre ne servira à rien ; divisez le lot pour que le nombre d'appels respecte la limite du forfait gratuit, ou rechargez. |
| 429 | -32005 | `ws_connection_limit` | `Limite de connexions WebSocket atteinte pour cette clé ou ce compte` | Non | Non | — | Fermez une connexion WebSocket inutilisée ou réutilisez une connexion existante. |
| 200 | -32022 | `subscription_limit` | `Limite d'abonnements WebSocket atteinte pour cette connexion` | Non | Non | — | Désabonnez-vous d'un abonnement existant ou ouvrez une autre connexion. |
| 200 | -32005 | `ws_filter_capacity` | `Les filtres de logs WebSocket ont atteint leur capacité maximale` | Non | Non | — | Désabonnez-vous d'un abonnement de logs existant ou utilisez un filtre plus restreint. |
| 200 | -32026 | `ws_push_overloaded` | `La file d'attente de notifications WebSocket est surchargée` | Non | Oui | Réessayer plus tard avec un backoff, ou se reconnecter | Réessayez eth_subscribe avec un backoff exponentiel, ou reconnectez-vous. Les abonnements existants continuent de recevoir des notifications. |
| 200 | -32005 | `overloaded` | `Service temporairement surchargé` | Non | Oui | Attendre quelques secondes et réessayer avec un backoff exponentiel | Appliquez un backoff avec gigue (jitter) et réessayez la requête. |
| 402 | -32020 | `balance_exhausted` | `Solde insuffisant (lorsque le solde est connu, error.data inclut balance_units et balance_cu)` | Non | Non | — | Rechargez on-chain : obtenez votre adresse de dépôt depuis la console ou `GET /v1/topup/deposit-address` (outil MCP `get_deposit_address`) ; consultez le [guide de recharge pour agents](https://docs.blockvectra.com/en/guides/agent-topup/), ou utilisez la réinitialisation de quota dans la console si vous y êtes éligible. Lorsque le solde est connu, error.data contient balance_units (négatif en cas de découvert) et balance_cu. |
| 402 | -32020 | `free_grant_exhausted` | `Dotation gratuite épuisée (lorsque le solde est connu, error.data inclut balance_units et balance_cu)` | Non | Non | — | Rechargez on-chain : obtenez votre adresse de dépôt depuis la console ou `GET /v1/topup/deposit-address` (outil MCP `get_deposit_address`) ; consultez le [guide de recharge pour agents](https://docs.blockvectra.com/en/guides/agent-topup/), utilisez la réinitialisation de quota si disponible, ou attendez la dotation du cycle suivant. Lorsque le solde est connu, error.data contient balance_units (négatif en cas de découvert) et balance_cu. |
| 503 | -32021 | `billing_unavailable` | `Données de facturation temporairement indisponibles` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Ce n'est pas un problème de solde ; les clés nouvellement créées se synchronisent en quelques secondes. Attendez Retry-After et réessayez. |
| 200 | -32010 | `node_syncing` | `Nœud en cours de synchronisation` | Non | Oui | Attendre quelques secondes et réessayer | Attendez que la synchronisation du nœud se termine, ou vérifiez GET /v1/status. |
| 200 | -32603 | `upstream_unavailable` | `Service amont indisponible` | Non | Oui | Attendre quelques secondes et réessayer | Réessayez avec un backoff exponentiel ; vérifiez GET /v1/status pour l'état de santé du nœud. |
| 504 | 504 | `upstream_timeout` | `Le service amont n'a pas répondu dans le délai imparti` | Non | Oui | Réessayer après un court délai | Réessayez la requête avec un backoff exponentiel. |
| 200 | -32000 | `response_too_large` | `La réponse du service amont est trop volumineuse` | Non | Non | — | Réduisez les paramètres de requête (ex. réduisez la plage de blocs dans eth_getLogs ou demandez des traces plus petites). |
| 200 | -32603 | `internal_error` | `Erreur interne du service` | Non | Non | Réessayer après un court délai | Réessayez la requête ; signalez les échecs persistants au support en indiquant l'horodatage. |
| 200 | 4444 | — | `Historique élagué indisponible` | Non | Non | — | Le bloc est en dehors de la fenêtre d'historique élaguée du nœud ; interrogez les blocs historiques via la Data API. |
| 200 | -32000 | — | `État historique indisponible ; données anciennes indisponibles en raison de l'élagage` | Non | Non | — | Interrogez les blocs dans la fenêtre d'état, ou utilisez la Data API pour les requêtes historiques. |
| 200 | -32002 | — | `<node message>` | Non | Oui | Attendre quelques secondes et réessayer avec un lot plus petit | Réduisez le nombre d'appels dans le lot et réessayez. |
| 200 | -32003 | — | `<node message>` | Non | Non | — | Divisez le lot en requêtes plus petites pour réduire la taille de la charge utile de réponse. |
| 200 | -32601 | — | `<node message>` | Non | Non | — | Vérifiez methods.allow et methods.deny dans GET /v1/chains pour connaître les méthodes prises en charge. La prise en charge de l'envoi de transactions est déterminée par methods.allow dans GET /v1/chains. L'envoi de transactions n'est actuellement pas disponible sur : HyperEVM. |
| 200 | -32603 | — | `<node message>` | Non | Oui | Réessayer après un court délai | Réessayez la requête ; signalez les échecs persistants au support en indiquant l'horodatage. |
| 200 | -32600 | — | `<node message>` | Non | Non | — | Inspectez les requêtes individuelles du lot pour détecter les paramètres non conformes ; divisez et réessayez. |
| 200 | * | — | `<node message>` | Oui | Non | — | Le nœud a effectué des calculs et a été facturé. Inspectez la raison/les données du revert ou les paramètres d'appel ; ne réessayez pas aveuglément. |
| 408 | 408 | — | `La requête a expiré après 35 s entre la fin de réception des en-têtes et la réponse` | Possible | Oui | Attendre quelques secondes avant de réessayer les appels de lecture | Les appels peuvent avoir atteint le nœud et avoir été facturés. Pour les appels de lecture, réessayez avec un backoff. Pour les appels d'écriture (ex. eth_sendRawTransaction), vérifiez d'abord le statut de la transaction par son hachage. |

### Codes de fermeture WebSocket

Codes de fermeture de connexion WebSocket et actions client recommandées.

| Code | Reason | Signification | Réessayable | Temps d'attente (Retry-After) | Action de l'agent |
| --- | --- | --- | --- | --- | --- |
| 1001 | — | `Fermeture pour inactivité` | Oui | Se reconnecter selon les besoins | Reconnectez-vous selon vos besoins. |
| 1003 | — | `Les trames binaires ne sont pas acceptées` | Non | — | Ne vous reconnectez pas automatiquement ; envoyez uniquement des trames de texte UTF-8. |
| 1009 | — | `Message trop volumineux` | Non | — | Ne vous reconnectez pas automatiquement ; divisez les requêtes volumineuses pour rester sous 1 MiB. |
| 1012 | — | `Redémarrage du service` | Oui | Se reconnecter avec un backoff et de la gigue (jitter) | Reconnectez-vous avec un backoff et de la gigue (jitter), réabonnez-vous et rattrapez les données manquées. |
| 1013 | — | `Chaîne indisponible ; surchargée` | Oui | Se reconnecter avec un backoff exponentiel et pleine gigue (full-jitter) | Reconnectez-vous avec un backoff exponentiel et pleine gigue (full-jitter), réabonnez-vous et rattrapez les données manquées. |
| 4402 | — | `Solde insuffisant` | Non | — | Ne vous reconnectez pas automatiquement ; rechargez on-chain : obtenez votre adresse de dépôt depuis la console ou `GET /v1/topup/deposit-address` (outil MCP `get_deposit_address`) ; consultez le [guide de recharge pour agents](https://docs.blockvectra.com/en/guides/agent-topup/), ou utilisez la réinitialisation de quota dans la console si vous y êtes éligible. |
| 4404 | — | `Clé API non valide` | Non | — | Ne vous reconnectez pas automatiquement ; vérifiez ou effectuez une rotation de la clé API dans la console. |
| 4408 | — | `Le service ferme une session dont la file d'attente de push dépasse 512 KiB (524 288 octets) et abandonne les notifications en attente ; les clients peuvent ne pas recevoir de trame de fermeture (le navigateur signale 1006) ; traitez les déconnexions inattendues comme 4408.` | Oui | Se reconnecter avec un backoff ; s'abonner à moins d'événements ou lire plus vite | Les clients doivent traiter une déconnexion inattendue (aucune trame de fermeture reçue, le navigateur signale 1006) comme 4408 : reconnectez-vous avec un backoff, rétablissez les abonnements et rattrapez les données abandonnées avec eth_getLogs ; abonnez-vous à moins d'éléments ou lisez plus rapidement. |
| 4429 | — | `Taux de push dépassé` | Oui | Se reconnecter avec un backoff ou réduire les abonnements | Réduisez les abonnements ou reconnectez-vous avec un backoff. |
| 4503 | — | `Facturation indisponible` | Oui | Se reconnecter avec un backoff exponentiel et pleine gigue (full-jitter) | Reconnectez-vous avec un backoff exponentiel et pleine gigue (full-jitter) et réabonnez-vous. |

### Erreurs de la Data API

Erreurs renvoyées par les points de terminaison de la Blockchain Data API sous /v1/data/{chain}/.

| HTTP | Code | Reason | Signification | Facturé | Réessayable | Temps d'attente (Retry-After) | Action de l'agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 400 | bad_request | — | `Paramètre de requête en double, chaîne de requête non valide ou requête mal formée` | Non | Non | — | Vérifiez les paramètres de requête ; assurez-vous que les paramètres tels que limit n'apparaissent qu'une seule fois et que les paramètres de requête sont valides. |
| 409 | not_indexed_yet | — | `Le numéro ou la fenêtre de bloc demandé est supérieur à as_of_block, ou le hachage se résout au-delà de as_of_block (contient indexed_through à moins que la chaîne n'ait aucun bloc indexé)` | Non | Oui | Attendre quelques secondes jusqu'à ce que indexed_through atteigne le bloc | Interrogez jusqu'à ce que le bloc demandé ou to_block soit inférieur ou égal à indexed_through, ou attendez que la chaîne commence à inscrire des blocs. |
| 409 | window_too_large | — | `La fenêtre de blocs s'étend sur plus de 100 000 blocs et le paramètre clamp n'a pas été défini sur true` | Non | Non | — | Réduisez la plage de blocs (from_block à to_block) <= 100 000 blocs, ou transmettez clamp=true. |
| 409 | too_many_pools | — | `Le token correspond à plus de 200 pools de liquidité ; effectuez plutôt une requête par pool` | Non | Non | — | Interrogez par adresse de pool spécifique plutôt que d'interroger tous les pools pour le token. |
| 409 | span_exceeded | — | `La période demandée dépasse la limite maximale de 90 jours` | Non | Non | — | Réduisez la plage de dates entre from_time et to_time à 90 jours ou moins. |
| 422 | no_coverage | — | `Fonctionnalité non prise en charge sur cette chaîne, ou le bloc demandé précède la fenêtre de couverture` | Non | Non | — | Vérifiez `features` et `coverage.from_block` dans GET /v1/data/chains (ou `data_features` dans le GET /v1/status gratuit) avant d'effectuer la requête. |
| 503 | unavailable | — | `Service Data temporairement indisponible` | Non | Oui | Attendre quelques secondes et réessayer avec un backoff exponentiel | Réessayez après un court délai avec un backoff exponentiel. |
| 402 | insufficient_balance | — | `Solde payant ou dotation gratuite épuisée (lorsque le solde est connu, error.data inclut balance_units et balance_cu)` | Non | Non | — | Rechargez on-chain : obtenez votre adresse de dépôt depuis la console ou `GET /v1/topup/deposit-address` (outil MCP `get_deposit_address`) ; consultez le [guide de recharge pour agents](https://docs.blockvectra.com/en/guides/agent-topup/), ou attendez le rechargement de l'allocation gratuite. |
| 429 | cost_exceeds_burst | — | `Une seule requête coûte plus cher que la capacité de burst de la clé` | Non | Non | — | Divisez la requête en requêtes plus petites ; la renvoyer telle quelle ne réussira jamais. |
| 503 | gateway_overloaded | — | `La capacité de la Data API est temporairement indisponible` | Non | Oui | Retry-After : 1 seconde | Réduisez les requêtes simultanées sur les clés et les chaînes de ce compte ; attendez le Retry-After avant de réessayer. error.data.reason est null. |

### Erreurs des API Console, Compte & Faucet

Erreurs renvoyées par les points de terminaison de gestion, de provisionnement de clés, d'authentification et de faucet sous /v1/.

| HTTP | Code | Reason | Signification | Facturé | Réessayable | Temps d'attente (Retry-After) | Action de l'agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 409 | topup_disabled | — | `Recharge suspendue ou aucun réseau disponible pour la recharge actuellement ; de nouvelles adresses ne peuvent pas être allouées, mais les adresses déjà allouées restent attribuées au compte` | Non | Non | — | Vérifiez la disponibilité de la recharge via GET /v1/topup/status ; réessayez plus tard lorsque la recharge sera activée. |
| 503 | deposit_unavailable | — | `Impossible d'allouer temporairement une adresse de dépôt ; réessayez selon l'en-tête Retry-After` | Non | Oui | Respecter l'en-tête Retry-After (secondes) et utiliser un backoff exponentiel | Réessayez selon l'en-tête Retry-After avec un backoff exponentiel. |
| 400 | invalid_request | `invalid_username` | `Le format du nom d'utilisateur n'est pas valide (doit être alphanumérique ou contenir des traits de soulignement)` | Non | Non | — | Fournissez un nom d'utilisateur valide respectant les exigences de caractères et de longueur. |
| 400 | invalid_request | `expires_at` | `L'heure d'expiration de la clé n'est pas dans le futur ou dépasse la période de validité maximale autorisée` | Non | Non | — | Définissez expires_at sur un horodatage RFC 3339 futur dans la période de validité autorisée (par défaut 365 jours), ou utilisez expires_in_secs. |
| 400 | invalid_request | `cu_cap` | `Le paramètre cu_cap est hors limites (doit être un entier compris entre 1 et 9007199254740991)` | Non | Non | — | Ajustez cu_cap pour qu'il soit un entier compris entre 1 et 9007199254740991 ou omettez-le pour des CU illimités. |
| 400 | siwe_invalid | `expired` | `Le message Sign-In with Ethereum (SIWE) a expiré ou le nonce a déjà été utilisé` | Non | Oui | Récupérer immédiatement un nouveau challenge et le signer | Demandez un nouveau challenge depuis /v1/auth/siwe/challenge et signez la déclaration nouvellement émise. |
| 400 | siwe_invalid | `chain_mismatch` | `Le chainId du message SIWE ne correspond pas aux paramètres du serveur` | Non | Non | — | Utilisez le chainId renvoyé par /v1/auth/siwe/challenge lors de la construction du message SIWE. |
| 400 | siwe_invalid | `domain_mismatch` | `Le domaine du message SIWE ne correspond pas à l'hôte du serveur` | Non | Non | — | Assurez-vous que domain et uri correspondent à l'hôte du serveur renvoyé dans le challenge. |
| 400 | siwe_invalid | `signature` | `La vérification de la signature cryptographique SIWE a échoué` | Non | Non | — | Vérifiez que le message a bien été signé par la clé privée correspondant à l'adresse spécifiée. |
| 409 | key_limit_reached | `active_keys` | `Le nombre de clés API actives (non révoquées) a atteint la limite maximale du compte` | Non | Non | — | Révoquez une clé existante inutilisée avant d'en créer une nouvelle. |
| 409 | no_reset_available | `nothing_to_reset` | `Le solde est déjà supérieur ou égal à l'objectif de réinitialisation ; l'opportunité de réinitialisation est conservée` | Non | Non | — | Aucune réinitialisation nécessaire pour le moment ; utilisez l'opportunité de réinitialisation une fois le solde épuisé. |
| 429 | rate_limited | `daily_creations` | `Limite de création de clés sur 24 heures atteinte pour le compte` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Faites pivoter les clés existantes au lieu d'en créer de nouvelles, ou attendez la réinitialisation de la fenêtre de 24 heures. |
| 429 | signup_rate_limited | `per_ip` | `Limite de taux d'inscription atteinte pour le sous-réseau IP du client` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Attendez l'intervalle Retry-After avant de créer un nouveau compte depuis ce réseau. |
| 429 | signup_rate_limited | `global` | `Limite globale de taux d'inscription de nouveaux utilisateurs atteinte sur toutes les sources` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Attendez l'intervalle Retry-After avant de réessayer la création de compte. |
| 400 | oauth_invalid | — | `Paramètre OAuth non valide ou état de rappel inconnu, expiré ou déjà utilisé` | Non | Oui | — | Initiez un nouveau flux de connexion OAuth depuis /v1/auth/{provider}/start. |
| 400 | login_code_invalid | — | `Code de connexion inconnu, expiré, déjà consommé ou non-concordance du vérificateur PKCE` | Non | Non | — | Relancez la connexion pour obtenir un nouveau code de connexion. |
| 401 | unauthenticated | — | `Session manquante, ou jeton de session invalide, expiré ou révoqué ; sur la Top-up API (/v1/topup/*), cela se produit également lorsque l'en-tête Authorization contient un jeton non-Bearer ou invalide au lieu de x-api-key` | Non | Non | — | Reconnectez-vous pour obtenir un nouveau jeton de session Bearer ; sur la Top-up API, transmettez la clé API dans l'en-tête x-api-key au lieu de l'en-tête Authorization. |
| 403 | user_disabled | — | `Le compte a été suspendu par l'administration` | Non | Non | — | Contactez contact@blockvectra.com pour obtenir de l'aide sur votre compte. |
| 404 | provider_disabled | — | `Le fournisseur OAuth est reconnu mais actuellement désactivé` | Non | Non | — | Utilisez SIWE ou un autre fournisseur d'authentification pris en charge. |
| 409 | identity_in_use | — | `L'identité (portefeuille ou compte OAuth) est déjà liée à un autre utilisateur` | Non | Non | — | Dissociez l'identité du compte précédent ou utilisez une identité différente. |
| 409 | identity_limit_reached | — | `Nombre maximal d'identités liées (5) atteint pour ce compte` | Non | Non | — | Dissociez une ancienne identité avant d'en associer une nouvelle. |
| 409 | last_identity | — | `Impossible de dissocier la seule identité restante du compte` | Non | Non | — | Associez d'abord une autre identité avant de supprimer celle-ci. |
| 409 | key_not_active | — | `Tentative de rotation d'une clé API désactivée, révoquée ou expirée` | Non | Non | — | Créez une nouvelle clé ou effectuez la rotation d'une clé active. |
| 409 | no_reset_available | — | `Aucune opportunité de réinitialisation de quota restante sur ce compte` | Non | Non | — | Rechargez on-chain : obtenez votre adresse de dépôt depuis la console ou `GET /v1/topup/deposit-address` (outil MCP `get_deposit_address`) ; consultez le [guide de recharge pour agents](https://docs.blockvectra.com/en/guides/agent-topup/), ou attendez le prochain cycle promotionnel. |
| 413 | payload_too_large | — | `Le corps de la requête dépasse la limite de taille de 64 KiB` | Non | Non | — | Réduisez la taille du corps de la requête en dessous de 64 KiB. |
| 503 | signup_paused | — | `Les inscriptions globales de nouveaux utilisateurs sont temporairement suspendues ; les connexions existantes ne sont pas affectées` | Non | Oui | Réessayer l'inscription plus tard | Inscriptions de nouveaux utilisateurs temporairement suspendues ; vérifiez l'état et réessayez plus tard. |
| 503 | usage_unavailable | — | `Le service de rapport d'utilisation est temporairement indisponible` | Non | Oui | Attendre quelques secondes et réessayer | Affecte uniquement l'endpoint /usage ; les autres endpoints fonctionnent normalement. Réessayez sous peu. |
| 500 | internal | — | `Erreur serveur inattendue` | Non | Oui | Réessayer après un court délai | Réessayez la requête avec un backoff exponentiel. |
| 400 | invalid_address | `invalid_address` | `Le format ou la somme de contrôle de l'adresse du destinataire n'est pas valide` | Non | Non | — | Utilisez 0x suivi de 40 caractères hexadécimaux, en minuscules ou avec la somme de contrôle EIP-55 ; vérifiez data.field (/address). |
| 503 | faucet_empty | `faucet_empty` | `Le faucet ne dispose pas de fonds suffisants pour la réclamation et les frais de transaction` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Attendez selon Retry-After avant de réessayer ; ne présumez pas que l'ETH de test a été envoyé sans réponse acceptée. |
| 503 | service_unavailable | `service_unavailable` | `Le traitement des réclamations du faucet est temporairement indisponible, ou une réclamation précédente n'a pas encore de reçu` | Non | Oui | Respecter l'en-tête Retry-After (secondes) | Attendez selon Retry-After avant de réessayer ; ne présumez pas que l'ETH de test a été envoyé sans réponse acceptée. |

### Erreurs de la Push API

Erreurs de gestion des abonnements webhook et de l'historique des événements sous /v1/push/.

| HTTP | Code | Reason | Signification | Facturé | Réessayable | Temps d'attente (Retry-After) | Action de l'agent |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 400 | invalid_request | — | `Champs de requête, adresses, pagination ou plage de blocs non valides.` | Non | Non | — | Inspectez data.field et data.invalid ; corrigez la requête. |
| 401 | missing_api_key | — | `En-tête x-api-key manquant.` | Non | Non | — | Fournissez votre clé API dans x-api-key. |
| 401 | invalid_api_key | — | `Clé API inconnue, désactivée ou révoquée.` | Non | Non | — | Utilisez une clé active de votre compte. |
| 402 | insufficient_balance | — | `Solde ou allocation gratuite épuisée pour l'historique des événements.` | Non | Non | — | Vérifiez data.reason (balance_exhausted ou free_grant_exhausted) et data.balance_units / data.balance_cu le cas échéant ; rechargez via data.topup_url ou data.deposit_address_url. |
| 403 | key_cap_exhausted | — | `Plafond de CU de la clé API épuisé pour l'historique des événements.` | Non | Non | — | Vérifiez data.cu_cap et créez une nouvelle clé dans la console. |
| 403 | key_expired | — | `La clé API a expiré.` | Non | Non | — | Utilisez une clé non expirée de votre compte. |
| 404 | not_found | — | `Route, méthode ou abonnement introuvable.` | Non | Non | — | Vérifiez le chemin, la méthode et l'appartenance de l'abonnement. |
| 409 | limit_reached | — | `Limite d'abonnements ou de paires d'adresses du compte atteinte.` | Non | Non | — | Vérifiez data.limit et data.max ; réduisez les abonnements ou les adresses. |
| 413 | request_too_large | — | `Le corps de la requête dépasse la limite de la route.` | Non | Non | — | Divisez le lot d'adresses ou réduisez la taille du corps. |
| 422 | chain_not_available | — | `Chaîne indisponible pour le push ou absente de l'abonnement.` | Non | Non | — | Vérifiez GET /v1/push/chains et les chaînes de l'abonnement. |
| 422 | chains_required | — | `Au moins une chaîne est requise.` | Non | Non | — | Fournissez un objet chains non vide ; utilisez le statut offline pour arrêter l'écoute. |
| 422 | confirmations_out_of_range | — | `Profondeur de confirmation en dehors de la plage de la chaîne.` | Non | Non | — | Choisissez des confirmations comprises entre data.min et data.max. |
| 422 | destination_not_allowed | — | `L'URL de réception n'est pas autorisée.` | Non | Non | — | Vérifiez data.rule ; utilisez un nom d'hôte HTTPS sur le port 443 sans userinfo ni fragment. |
| 422 | block_out_of_range | — | `Plage de blocs en dehors de la couverture de relecture ou d'historique disponible.` | Non | Non | — | Utilisez data.min_block et data.max_block pour ajuster la plage. |
| 429 | cost_exceeds_burst | — | `Le coût de la requête d'historique dépasse la capacité de burst de la clé.` | Non | Non | — | Vérifiez data.reason (request_exceeds_burst) et data.max ; augmentez la capacité de burst avant de réessayer. Réessayer à l'identique n'aidera pas. |
| 429 | rate_limited | — | `Limite de taux atteinte pour la gestion ou la requête d'historique.` | Non | Oui | Attendre le nombre de secondes indiqué dans Retry-After. | Pour l'historique, vérifiez data.reason (key_rate_limit ou free_plan_call_limit) ; attendez le nombre de secondes dans Retry-After et réduisez la fréquence des requêtes ou la concurrence. |
| 500 | internal_error | — | `Erreur de service inattendue.` | Non | Non | — | Conservez le x-request-id et contactez le support. |
| 503 | auth_unavailable | — | `Validation de la clé API temporairement indisponible.` | Non | Oui | Attendre le nombre de secondes indiqué dans Retry-After. | Attendez le nombre de secondes dans Retry-After avant de réessayer. |
| 503 | billing_unavailable | — | `État de facturation de l'historique temporairement indisponible.` | Non | Oui | Attendre le nombre de secondes indiqué dans Retry-After. | Attendez le nombre de secondes dans Retry-After avant de réessayer. |
| 503 | upstream_unavailable | — | `Service Push temporairement injoignable.` | Non | Oui | Attendre le nombre de secondes indiqué dans Retry-After. | Attendez le nombre de secondes dans Retry-After avant de réessayer. |
| 503 | service_unavailable | — | `Service Push ou capacité d'adresses temporairement indisponible.` | Non | Oui | Attendre le nombre de secondes indiqué dans Retry-After. | Attendez le nombre de secondes dans Retry-After avant de réessayer. |

Pour les erreurs d'abonnement ou de rejeu Webhook, suivez le [guide de reprise de livraison Push](https://docs.blockvectra.com/fr/guides/webhook-push/#delivery-retries-and-replay). L'intégration côté récepteur commence par la [vérification de signature du corps brut](https://docs.blockvectra.com/fr/guides/webhook-push/#verify-signatures) ; l'[exemple de paiement en stablecoins](https://docs.blockvectra.com/fr/guides/stablecoin-payments/#receive-payments-with-webhooks) y ajoute la déduplication d'événements, le contrôle des reçus, le rattrapage des lacunes et la réconciliation en cas de réorganisation. Consultez les [règles de facturation](https://docs.blockvectra.com/fr/guides/billing-rules/#webhook-push-billing) pour la mesure et la [reconnexion WebSocket](https://docs.blockvectra.com/fr/guides/websocket-subscriptions/#reconnection-and-exponential-backoff) pour les abonnements basés sur des connexions.

Pour `logs_range_too_large`, consultez les [paramètres de la méthode eth\_getLogs](https://docs.blockvectra.com/fr/api/json-rpc/methods/eth_getLogs/) et suivez le [guide sur la limite de plage de blocs et requêtes découpées](https://docs.blockvectra.com/fr/guides/getlogs-block-range/).

Pour les réclamations sur le faucet de Robinhood Chain, consultez le [guide du faucet de testnet](https://docs.blockvectra.com/fr/guides/robinhood-testnet-faucet/) pour connaître les critères d'éligibilité et la gestion des codes d'erreur partagés.
