Ejecutar una dApp de Ethereum en producción sin un proveedor de nodos fiable es un camino corto hacia la sobrecarga. Los nodos Geth autoalojados se retrasan, pierden las reorganizaciones y se bloquean en el momento en que tu aplicación gana tracción. La API de Alchemy soluciona esto proporcionándote una capa de nodos robusta y un conjunto de APIs mejoradas que la especificación JSON-RPC original nunca definió, como obtener cada NFT en una billetera con una sola llamada en lugar de escanear cada bloque desde el génesis.
Esta guía recorre toda la superficie de la API de Alchemy: creando una aplicación, autenticándose, llamando a métodos JSON-RPC estándar, utilizando endpoints mejorados, suscribiéndose a transacciones pendientes a través de WebSocket y lanzando cuentas inteligentes con patrocinio de gas a través de Account Kit. Verás ejemplos con curl y Node para cada flujo principal, y entenderás cómo las unidades de cómputo (CU) se relacionan con tu factura mensual antes de implementar.
Si estás evaluando la infraestructura de billeteras y web3 de manera más amplia, Apidog te ayuda a probar cada endpoint en un solo lugar. Consulta también nuestra guía sobre la mejor API de billetera de criptomonedas para tener una visión de mercado más amplia antes de comprometerte con un proveedor.
En resumen
- Alchemy cubre Ethereum, Polygon, Arbitrum, Optimism, Base, Solana, zkSync, Starknet y más desde un único panel.
- Cada aplicación obtiene endpoints HTTPS y WebSocket para JSON-RPC estándar, además de APIs mejoradas como
alchemy_getAssetTransfers,alchemy_getTokenBalancesygetNFTs. - El SDK de Alchemy para JavaScript (
alchemy-sdk) envuelve ethers.js y añade ayudantes tipados para cada endpoint mejorado. - Account Kit implementa cuentas inteligentes ERC-4337 con patrocinio de gas, claves de sesión y autenticación con passkey a través de Gas Manager.
- El uso se mide en unidades de cómputo; el nivel gratuito te da 300M CU por mes, Growth es 400M CU más excedente, Scale es personalizado.
- Los límites de velocidad son por aplicación y por método; las solicitudes por lotes y la retirada incorporada del SDK te mantienen por debajo de los límites de aceleración.
¿Qué es la API de Alchemy?
Alchemy es una plataforma para desarrolladores web3 que opera nodos de blockchain gestionados y superpone un motor de indexación de datos. Obtienes tres cosas que no puedes construir fácilmente por ti mismo: nodos JSON-RPC de alta disponibilidad en más de 40 cadenas, APIs mejoradas que preindexan transferencias y metadatos NFT, y una pila de abstracción de cuentas (Account Kit) para una experiencia de usuario sin gas.
Mientras Infura te da acceso mayormente a nodos brutos, Alchemy añade la capa de indexación. Obtener cada transferencia ERC-20 para una dirección requiere una sola llamada a alchemy_getAssetTransfers; la misma consulta en un nodo simple significa iterar a través de cada bloque. Es por eso que la mayoría de las billeteras de producción, los paneles de DeFi y los mercados de NFT usan Alchemy para rutas con mucha lectura.
Autenticación y configuración
Crea una cuenta en el panel de control de Alchemy, luego haz clic en Crear nueva aplicación. Elige una cadena (Ethereum Mainnet, Polygon, Base, etc.) y una red (mainnet o una red de prueba como Sepolia). Cada aplicación obtiene una clave API única que forma el último segmento de ruta de tu URL.
Tu endpoint HTTPS se ve así:
https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
Tu endpoint WebSocket:
wss://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
Trata la clave API como un secreto. Ponla en una variable de entorno, nunca en código del lado del cliente. Para dApps de navegador, usa listas blancas (restricciones de referer) en el panel de control de Alchemy para que una clave filtrada no pueda agotar tu cuota desde el dominio de un atacante.
Instala el SDK:
npm install alchemy-sdk
Luego inicializa un cliente:
import { Alchemy, Network } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
const block = await alchemy.core.getBlockNumber();
console.log("Latest block:", block);
Endpoints principales
JSON-RPC estándar sobre HTTPS
Cualquier método estándar de JSON-RPC de Ethereum funciona. Aquí tienes eth_getBalance con curl:
curl https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"method":"eth_getBalance",
"params":["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","latest"],
"id":1
}'
La respuesta devuelve el saldo en wei como una cadena hexadecimal. El mismo patrón funciona para eth_call, eth_sendRawTransaction, eth_getLogs y cualquier otro método estándar.
API mejorada: getAssetTransfers
alchemy_getAssetTransfers devuelve cada transferencia de ETH, ERC-20, ERC-721, ERC-1155, internas y externas para una dirección en un rango de bloques. Una sola llamada reemplaza miles de consultas eth_getLogs.
import { Alchemy, Network, AssetTransfersCategory } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
const transfers = await alchemy.core.getAssetTransfers({
fromBlock: "0x0",
toAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
category: [
AssetTransfersCategory.EXTERNAL,
AssetTransfersCategory.ERC20,
AssetTransfersCategory.ERC721,
],
maxCount: 100,
});
for (const t of transfers.transfers) {
console.log(`${t.asset} ${t.value} from ${t.from} to ${t.to}`);
}
API mejorada: getTokenBalances y getNFTs
Obtener cada token que tiene una billetera, sin conocer de antemano las direcciones de los contratos, requiere una sola llamada:
const balances = await alchemy.core.getTokenBalances(
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
);
for (const token of balances.tokenBalances) {
const meta = await alchemy.core.getTokenMetadata(token.contractAddress);
console.log(`${meta.symbol}: ${token.tokenBalance}`);
}
Para los NFT, utiliza el espacio de nombres NFT:
const nfts = await alchemy.nft.getNftsForOwner(
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
);
console.log(`Owns ${nfts.totalCount} NFTs`);
API de suscripción sobre WebSocket
La API de Suscripción envía actualizaciones en lugar de que tengas que hacer polling. Suscríbete a transacciones pendientes o a la actividad de una dirección:
import { Alchemy, Network, AlchemySubscription } from "alchemy-sdk";
const alchemy = new Alchemy({
apiKey: process.env.ALCHEMY_API_KEY,
network: Network.ETH_MAINNET,
});
alchemy.ws.on(
{
method: AlchemySubscription.PENDING_TRANSACTIONS,
toAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
},
(tx) => console.log("Pending USDC tx:", tx.hash)
);
Así es como los bots de mempool, los observadores de MEV y las interfaces de usuario de carteras en tiempo real se mantienen actualizados sin quemar CU en encuestas de eth_blockNumber.
Account Kit y Gas Manager
Account Kit es la pila de cuentas inteligentes de Alchemy. Incluye un SDK de React, una implementación de cuenta de contrato inteligente (Light Account y Modular Account) y Gas Manager para patrocinar operaciones de usuario. Los usuarios se registran con una passkey o correo electrónico, obtienen una billetera inteligente y nunca tocan una frase semilla o un token de gas.
import { createLightAccountClient } from "@account-kit/smart-contracts";
import { alchemy, sepolia } from "@account-kit/infra";
const client = createLightAccountClient({
transport: alchemy({ apiKey: process.env.ALCHEMY_API_KEY }),
chain: sepolia,
signer: yourSigner,
});
const { hash } = await client.sendUserOperation({
uo: { target: "0x...", data: "0x", value: 0n },
});
Para flujos de incorporación que emparejan cuentas inteligentes con billeteras embebidas, consulta nuestra guía sobre la API de Privy, que complementa muy bien a Account Kit para dApps de consumo.
Errores comunes y límites de velocidad
Alchemy mide el uso en unidades de cómputo (CU). Cada método tiene un costo de CU: eth_call es 26 CU, eth_getLogs es 75, alchemy_getAssetTransfers es 150 y eth_getBlockByNumber es 16. El nivel gratuito te da 300M CU por mes y un límite de rendimiento por segundo.
Los errores que verás con más frecuencia:
- 429 Demasiadas solicitudes: alcanzaste el límite de CU por segundo. Retrocede y reintenta; el SDK maneja esto automáticamente.
- 403 Prohibido: la lista blanca de tu clave API no coincide con el referer, o la clave está deshabilitada.
- -32600 Solicitud inválida: cuerpo JSON-RPC malformado. Verifica el nombre del método y el array de parámetros.
- -32000 ejecución revertida: la llamada al contrato fue revertida. Decodifica la razón de la reversión con
eth_cally una herramienta de simulación.
Las solicitudes por lotes son tus amigas. Envía hasta 1000 llamadas JSON-RPC en una sola solicitud HTTP POST, lo que amortiza la sobrecarga de red y a menudo cuesta menos CU totales. Para flujos de trabajo de pruebas más amplios, pruebas de API sin Postman en 2026 cubre cómo gestionar llamadas JSON-RPC por lotes en una colección.
Precios de Alchemy
Alchemy tiene cuatro niveles públicos:
- Gratuito: 300M CU por mes, 1 aplicación, soporte de la comunidad. Bueno para prototipos y pequeños proyectos personales.
- Crecimiento: Base de $49/mes, 400M CU incluidos, excedente facturado por CU, análisis avanzados.
- Escala: $289/mes, 1.5B CU, rendimiento dedicado, soporte prioritario.
- Empresarial: precios personalizados, SLAs, nodos privados, ingeniería de soluciones dedicada.
Las CU se restablecen mensualmente. Si superas el límite en Growth o Scale, pagas el excedente; en Free, las solicitudes comienzan a fallar con un 429 hasta el siguiente ciclo. Monitorea el uso diariamente en el panel de control durante tu primer mes para que puedas dimensionar el nivel correcto.
Probando la API de Alchemy con Apidog
Depurar JSON-RPC manualmente es doloroso. Cada solicitud es un POST con un array de parámetros anidados, las respuestas están codificadas en hexadecimal y las suscripciones WebSocket son difíciles de inspeccionar en una terminal sencilla. Apidog te ofrece un espacio de trabajo unificado para tráfico REST, GraphQL y WebSocket, para que puedas acceder a los endpoints HTTPS de Alchemy, abrir un WebSocket a wss://eth-mainnet.g.alchemy.com/v2/..., y ver las suscripciones de transacciones pendientes en tiempo real.
Guarda tu clave API como una variable de entorno en Apidog y reutilízala en colecciones para mainnet, Sepolia, Polygon y Base. Programa aserciones en los campos de respuesta para detectar regresiones cuando Alchemy lance nuevos endpoints mejorados. Descarga Apidog e importa la especificación OpenAPI de Alchemy para configurar tu colección en menos de un minuto.
Preguntas frecuentes
¿Alchemy es gratuito para uso en producción?Sí, dentro de los 300M CU por mes. Muchas dApps pequeñas se mantienen en el nivel Gratuito indefinidamente. Una vez que superas ese límite o necesitas un mayor rendimiento, el nivel Growth a $49 es el siguiente paso habitual.
¿Alchemy es compatible con Solana?Sí. Alchemy es compatible con la mainnet y devnet de Solana con métodos RPC estándar de Solana, además de endpoints mejorados para datos de tokens y NFT. Crea una aplicación de Solana en el panel de control para obtener un endpoint dedicado.
¿Puedo usar la API de Alchemy sin el SDK?Absolutamente. Cada endpoint se puede llamar a través de HTTPS con curl, fetch o cualquier cliente HTTP. El SDK es un envoltorio de conveniencia; añade ayudantes tipados, reintentos automáticos y reconexión de WebSocket, pero es opcional.
¿Cuál es la diferencia entre Alchemy y las APIs para desarrolladores de MetaMask?MetaMask se centra en la experiencia de usuario de la billetera y la firma; Alchemy se centra en la infraestructura de nodos y los datos. Resuelven problemas diferentes. Consulta nuestra guía sobre la API de MetaMask para el lado de la billetera.
¿Cómo roto una clave API de Alchemy?Crea una nueva aplicación en el panel de control, actualiza tu entorno, despliega y luego elimina la aplicación antigua. No hay rotación en el mismo lugar, así que planifica una breve ventana de solapamiento.
¿Account Kit funciona en cualquier cadena EVM?Account Kit es compatible con Ethereum, Optimism, Arbitrum, Base, Polygon y sus redes de prueba. Las políticas de patrocinio de Gas Manager son específicas de cada cadena, así que configúralas por red.
