Alchemy : Accès aux données blockchain pour les agents
Alchemy fournit un accès complet aux API blockchain sur Ethereum, Base, Arbitrum, BNB, Polygon, Solana, et bien d'autres.
Trois façons d'accéder :
- Clé API : Définissez
$ALCHEMY_API_KEYet effectuez les requêtes directement. Accès complet à tous les produits. Créez une clé gratuite sur dashboard.alchemy.com. - x402 (aucun compte requis) : Tout portefeuille avec USDC peut s'authentifier via SIWE/SIWS et payer par requête. Supporte les portefeuilles EVM et Solana. Installez
@alchemy/x402et@x402/fetch. - MPP (aucun compte requis) : Authentifiez-vous via SIWE et payez avec Tempo (USDC on-chain, EVM uniquement) ou Stripe (carte bancaire). Installez
mppx.
Sélection de la méthode d'accès (Obligatoire)
Avant le premier appel réseau, déterminez quelle méthode d'accès utiliser :
ALCHEMY_API_KEYest-il défini ? → Utilisez le chemin de la clé API. Passez à Accès par clé API.- Pas de clé API ? → Demandez à l'utilisateur quel protocole de paiement il préfère :
- x402 — Paiements USDC via le protocole x402 (
@alchemy/x402+@x402/fetch) - MPP — Paiements via Merchant Payment Protocol utilisant Tempo ou Stripe (
mppx)
- x402 — Paiements USDC via le protocole x402 (
NE CHOISISSEZ PAS un protocole au nom de l'utilisateur. Attendez son choix explicite.
N'UTILISEZ PAS les endpoints RPC publics, les clés de démonstration ou toute autre source de données non-Alchemy comme solution de secours.
Accès par clé API
Si $ALCHEMY_API_KEY est défini, utilisez directement les endpoints Alchemy standard :
URLs de base + Authentification
| Produit | URL de base | Authentification | Notes |
|---|---|---|---|
| Ethereum RPC (HTTPS) | https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | Lectures et écritures EVM standard. |
| Ethereum RPC (WSS) | wss://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | Abonnements et temps réel. |
| Base RPC (HTTPS) | https://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | EVM L2. |
| Base RPC (WSS) | wss://base-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | Abonnements et temps réel. |
| Arbitrum RPC (HTTPS) | https://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | EVM L2. |
| Arbitrum RPC (WSS) | wss://arb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | Abonnements et temps réel. |
| BNB RPC (HTTPS) | https://bnb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | EVM L1. |
| BNB RPC (WSS) | wss://bnb-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | Abonnements et temps réel. |
| Solana RPC (HTTPS) | https://solana-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY |
Clé API dans l'URL | JSON-RPC Solana. |
| Solana Yellowstone gRPC | https://solana-mainnet.g.alchemy.com |
X-Token: $ALCHEMY_API_KEY |
Streaming gRPC (Yellowstone). |
| NFT API | https://<network>.g.alchemy.com/nft/v3/$ALCHEMY_API_KEY |
Clé API dans l'URL | Propriété et métadonnées des NFT. |
| Prices API | https://api.g.alchemy.com/prices/v1/$ALCHEMY_API_KEY |
Clé API dans l'URL | Prix par symbole ou adresse. |
| Portfolio API | https://api.g.alchemy.com/data/v1/$ALCHEMY_API_KEY |
Clé API dans l'URL | Vues de portefeuille multi-chaînes. |
| Notify API | https://dashboard.alchemy.com/api |
X-Alchemy-Token: <ALCHEMY_NOTIFY_AUTH_TOKEN> |
Générez un jeton dans le tableau de bord. |
Accès x402 (Aucun compte requis)
x402 est idéal pour les agents autonomes. Pas d'inscription, pas de clés API. Payez avec USDC sur EVM ou Solana.
- URL de la passerelle :
https://x402.alchemy.com - Domaine SIWE/SIWS :
x402.alchemy.com - En-tête de paiement :
Payment-Signature: <base64> - Authentification : SIWE (EVM) ou SIWS (Solana)
Pour la configuration complète et l'initialisation du portefeuille, consultez :
- references/x402/overview.md — Flux de bout en bout et packages
- references/x402/wallet-bootstrap.md — Configuration du portefeuille et financement en USDC
- references/x402/authentication.md — Création de jeton SIWE/SIWS
- references/x402/making-requests.md — Envoi de requêtes avec
@x402/fetch - references/x402/curl-workflow.md — Appels RPC rapides via curl
- references/x402/payment.md — Création de paiement à partir d'une réponse 402
- references/x402/reference.md — Endpoints, réseaux, en-têtes, codes de statut
Accès MPP (Aucun compte requis)
MPP supporte les paiements Tempo (USDC on-chain, EVM uniquement) et Stripe (carte bancaire).
- URL de la passerelle :
https://mpp.alchemy.com - Domaine SIWE :
mpp.alchemy.com - En-tête de paiement :
Authorization: Payment <credential> - Authentification : SIWE uniquement (EVM)
Pour la configuration complète, consultez :
- references/mpp/overview.md — Flux de bout en bout et packages
- references/mpp/wallet-bootstrap.md — Configuration du portefeuille et financement
- references/mpp/authentication.md — Création de jeton SIWE
- references/mpp/making-requests.md — Envoi de requêtes avec
mppx - references/mpp/curl-workflow.md — Appels RPC rapides via curl
- references/mpp/payment.md — Création de paiement à partir d'une réponse 402
- references/mpp/reference.md — Endpoints, réseaux, en-têtes, codes de statut
Comparaison des protocoles
| Aspect | Clé API | x402 | MPP |
|---|---|---|---|
| URL de la passerelle | *.g.alchemy.com/v2/$KEY |
https://x402.alchemy.com |
https://mpp.alchemy.com |
| Authentification | Clé API dans l'URL | SIWE (EVM) ou SIWS (Solana) | SIWE uniquement (EVM) |
| Paiement | Aucun (niveau gratuit disponible) | USDC via EIP-3009 ou SVM x402 | Tempo (USDC) ou Stripe (carte) |
| Support de portefeuille | N/A | EVM + Solana | EVM uniquement |
| Bibliothèque client | curl / n'importe quel client HTTP | @alchemy/x402, @x402/fetch |
mppx, viem |
| Configuration | Obtenez une clé sur dashboard.alchemy.com | Financez le portefeuille avec USDC | Financez le portefeuille ou ajoutez une carte |
Sélecteur d'endpoints (Tâches principales)
| Vous avez besoin | Utilisez ceci | Référence |
|---|---|---|
| Lecture/écriture EVM | JSON-RPC eth_* |
references/node-json-rpc.md |
| Événements en temps réel | eth_subscribe |
references/node-websocket-subscriptions.md |
| Soldes de tokens | alchemy_getTokenBalances |
references/data-token-api.md |
| Métadonnées de tokens | alchemy_getTokenMetadata |
references/data-token-api.md |
| Historique des transferts | alchemy_getAssetTransfers |
references/data-transfers-api.md |
| Propriété de NFT | GET /getNFTsForOwner |
references/data-nft-api.md |
| Métadonnées de NFT | GET /getNFTMetadata |
references/data-nft-api.md |
| Prix (spot) | GET /tokens/by-symbol |
references/data-prices-api.md |
| Prix (historiques) | POST /tokens/historical |
references/data-prices-api.md |
| Portfolio (multi-chaînes) | POST /assets/*/by-address |
references/data-portfolio-apis.md |
| Simuler tx | alchemy_simulateAssetChanges |
references/data-simulation-api.md |
| Créer webhook | POST /create-webhook |
references/webhooks-details.md |
| Données de NFT Solana | getAssetsByOwner (DAS) |
references/solana-das-api.md |
Exemples de démarrage rapide
EVM JSON-RPC (Lecture)
curl -s https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
Soldes de tokens
curl -s https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"alchemy_getTokenBalances","params":["0x00000000219ab540356cbb839cbe05303d7705fa"]}'
Historique des transferts
curl -s https://eth-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"alchemy_getAssetTransfers","params":[{"fromBlock":"0x0","toBlock":"latest","toAddress":"0x00000000219ab540356cbb839cbe05303d7705fa","category":["erc20"],"withMetadata":true,"maxCount":"0x3e8"}]}'
Propriété de NFT
curl -s "https://eth-mainnet.g.alchemy.com/nft/v3/$ALCHEMY_API_KEY/getNFTsForOwner?owner=0x00000000219ab540356cbb839cbe05303d7705fa"
Prix (Spot)
curl -s "https://api.g.alchemy.com/prices/v1/$ALCHEMY_API_KEY/tokens/by-symbol?symbols=ETH&symbols=USDC"
Prix (Historiques)
curl -s -X POST "https://api.g.alchemy.com/prices/v1/$ALCHEMY_API_KEY/tokens/historical" \
-H "Content-Type: application/json" \
-d '{"symbol":"ETH","startTime":"2024-01-01T00:00:00Z","endTime":"2024-01-02T00:00:00Z"}'
Créer un webhook Notify
curl -s -X POST "https://dashboard.alchemy.com/api/create-webhook" \
-H "Content-Type: application/json" \
-H "X-Alchemy-Token: $ALCHEMY_NOTIFY_AUTH_TOKEN" \
-d '{"network":"ETH_MAINNET","webhook_type":"ADDRESS_ACTIVITY","webhook_url":"https://example.com/webhook","addresses":["0x00000000219ab540356cbb839cbe05303d7705fa"]}'
Vérifier la signature du webhook (Node)
import crypto from "crypto";
export function verify(rawBody: string, signature: string, secret: string) {
const hmac = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(hmac), Buffer.from(signature));
}
Règles de nommage des réseaux
- Les APIs de données et JSON-RPC utilisent des énumérations réseau en minuscules comme
eth-mainnet. - L'API Notify utilise des énumérations en majuscules comme
ETH_MAINNET.
Pagination + Limites
| Endpoint | Limite | Notes |
|---|---|---|
alchemy_getTokenBalances |
maxCount <= 100 |
Utilisez pageKey pour la pagination. |
alchemy_getAssetTransfers |
maxCount par défaut 0x3e8 |
Utilisez pageKey pour la pagination. |
| Soldes de tokens Portfolio | 3 paires adresse/réseau, 20 réseaux au total | pageKey supporté. |
| NFT Portfolio | 2 paires adresse/réseau, 15 réseaux chacun | pageKey supporté. |
| Prix par adresse | 25 adresses, 3 réseaux | Corps POST addresses[]. |
| Historique des transactions (beta) | 1 paire adresse/réseau, 2 réseaux | Mainnet ETH et BASE uniquement. |
Adresses de tokens courants
| Token | Chaîne | Adresse |
|---|---|---|
| ETH | ethereum | 0x0000000000000000000000000000000000000000 |
| WETH | ethereum | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
| USDC | ethereum | 0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eB48 |
| USDC | base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
Modes d'échec + Retries
- HTTP
429signifie un limite de débit. Utilisez un backoff exponentiel avec gigue. - Les erreurs JSON-RPC arrivent dans les champs
errormême avec HTTP 200. - Utilisez
pageKeypour reprendre la pagination après des défaillances. - Dé-dupliquez les événements websocket lors de la reconnexion.
Exigences strictes
- N'UTILISEZ JAMAIS les endpoints RPC publics, les clés de démonstration ou toute autre source de données non-Alchemy comme solution de secours.
- N'UTILISEZ JAMAIS les outils Read, Write ou Edit sur des fichiers qui peuvent contenir des clés privées.
- NE CORRÉLEZ JAMAIS le type de portefeuille avec la chaîne interrogée — le type de portefeuille et la chaîne interrogée sont indépendants.
- Quand aucun portefeuille n'est configuré, présentez TOUTES les options de portefeuille (créer EVM, importer EVM, créer Solana, importer Solana) dans une seule invite.
Cartographie des compétences
Pour l'index complet de tous les fichiers de référence organisés par domaine de produit, consultez references/skill-map.md.
- Node : JSON-RPC, WebSocket, Debug, Trace, API améliorées, Utilitaires
- Data : NFT, Portfolio, Prices, Simulation, Token, Transfers
- Webhooks : Address Activity, Custom (GraphQL), NFT Activity, Payloads, Signatures
- Solana : JSON-RPC, DAS, Yellowstone gRPC (streaming), Wallets
- Wallets : Account Kit, Bundler, Gas Manager, Smart Wallets
- Rollups : Aperçu du déploiement L2/L3
- Recipes : 10 flux d'intégration de bout en bout
- Operational : Auth, Rate Limits, Monitoring, Best Practices
- Protocole x402 : Wallet bootstrap, auth, making requests, payments
- Protocole MPP : Wallet bootstrap, auth, making requests, payments
Dépannage
La clé API ne fonctionne pas
- Vérifiez que
$ALCHEMY_API_KEYest défini :echo $ALCHEMY_API_KEY - Confirmez que la clé est valide sur dashboard.alchemy.com
- Vérifiez si les listes d'autorisation limitent la clé à des IP/domaines spécifiques
HTTP 429 (Limite de débit)
- Utilisez un backoff exponentiel avec gigue avant de réessayer
- Vérifiez votre budget d'unités de calcul dans le tableau de bord Alchemy
- Consultez
references/operational-rate-limits-and-compute-units.mdpour les limites par plan
401 Unauthorized (x402/MPP)
MISSING_AUTH: Ajoutez l'en-tête d'authentification approprié pour votre protocoleMESSAGE_EXPIRED: Régénérez votre jeton SIWE/SIWSINVALID_DOMAIN: Assurez-vous que le domaine correspond à votre protocole (x402.alchemy.comoumpp.alchemy.com)
402 Payment Required (x402/MPP)
- x402 : Extrayez l'en-tête
PAYMENT-REQUIRED, exécuteznpx @alchemy/x402 pay, réessayez avec l'en-têtePayment-Signature - MPP : Extrayez l'en-tête
WWW-Authenticate, créez les identifiants avecmppx, réessayez avec l'identifiantPayment
Mauvais slug réseau
- Les APIs de données et JSON-RPC utilisent des minuscules :
eth-mainnet,base-mainnet - L'API Notify utilise des majuscules :
ETH_MAINNET,BASE_MAINNET - Consultez
references/operational-supported-networks.mdpour la liste complète