Saltar al contenido principal
POST
/
crypto
/
rpc
/
{network}
curl --request POST \
  --url https://api.venice.ai/api/v1/crypto/rpc/{network} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "jsonrpc": "2.0",
  "method": "eth_chainId",
  "params": [],
  "id": 1
}
'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x1"
}
Reenvía una solicitud JSON-RPC 2.0 (individual o por lote) a un nodo blockchain compatible. Admite autenticación tanto con API key como con monedero x402. La facturación es por crédito y se denomina en tu saldo de Venice: una credencial, una factura y todas las cadenas que se indican a continuación.

Autenticación

Este endpoint admite dos métodos de autenticación:
  • API Key: autenticación estándar con token Bearer mediante la cabecera Authorization: Bearer <key>.
  • Monedero x402: pago por uso con créditos USDC desde un monedero en Base o Solana. No se requiere cuenta de Venice. Consulta la guía x402 para la configuración.
Ambos métodos comparten los mismos límites de velocidad y facturación (créditos de Venice).

Redes admitidas

Consulta GET /crypto/rpc/networks para ver la lista autoritativa en vivo. Cobertura actual:
FamiliaMainnetTestnets
Ethereumethereum-mainnetethereum-sepolia, ethereum-holesky
Polygonpolygon-mainnetpolygon-amoy
Arbitrumarbitrum-mainnetarbitrum-sepolia
Optimismoptimism-mainnetoptimism-sepolia
Basebase-mainnetbase-sepolia
Linealinea-mainnetlinea-sepolia
Avalanche C-Chainavalanche-mainnetavalanche-fuji
BNB Smart Chainbsc-mainnetbsc-testnet
Blastblast-mainnetblast-sepolia
zkSync Erazksync-mainnetzksync-sepolia
Starknetstarknet-mainnetstarknet-sepolia

Formas de la solicitud

Solicitud individual

{
  "jsonrpc": "2.0",
  "method": "eth_chainId",
  "params": [],
  "id": 1
}

Solicitud por lote

Un array de hasta 100 objetos JSON-RPC 2.0. Cada elemento se valida de forma independiente; si algún método no es compatible, todo el lote se rechaza con 400 y todos los nombres de método infractores se listan en el mensaje de error.
[
  { "jsonrpc": "2.0", "method": "eth_chainId", "params": [], "id": 1 },
  { "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 2 }
]

Métodos compatibles y niveles de precios

Los métodos se clasifican en tres niveles de créditos. Los créditos consumidos por llamada = baseCredits[chain] × methodTier.
NivelMultiplicadorMétodos de ejemplo
Standardeth_call, eth_getBalance, eth_blockNumber, eth_sendRawTransaction, eth_getLogs, eth_getTransactionReceipt, eth_estimateGas, net_version, web3_clientVersion, métodos de bundler ERC-4337 (eth_sendUserOperation, eth_estimateUserOperationGas, etc.), extensiones específicas de cada familia (zks_*, linea_*, bor_*, starknet_*)
Advancedtrace_block, trace_call, trace_transaction, debug_traceCall, debug_traceTransaction, debug_traceBlockByHash, txpool_inspect, txpool_status, arbtrace_*
Largetrace_replayBlockTransactions, trace_replayTransaction, txpool_content, arbtrace_replayTransaction, arbtrace_replayBlockTransactions

Créditos base por cadena

baseCreditsCadenas
20Ethereum + todas las L2 EVM anteriores (Base, Optimism, Arbitrum, Polygon, Linea, Avalanche, BSC, Blast) y Starknet
30zkSync Era

Ejemplos de coste

Al precio de Venice de ~$6.25 × 10⁻⁷ por crédito:
LlamadaCréditosCoste en USD
eth_call en Ethereum (20 × 1×)20$0.0000125
trace_transaction en Ethereum (20 × 2×)40$0.0000250
trace_replayTransaction en Ethereum (20 × 4×)80$0.0000500
eth_call en zkSync (30 × 1×)30$0.0000188

No compatible

  • Métodos solo por WebSocket (eth_subscribe, eth_unsubscribe): este proxy es solo HTTP. Usa polling en su lugar, o cambia a un proveedor de WebSocket directo.
  • Métodos de filtro con estado (eth_newFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter, eth_newBlockFilter, eth_newPendingTransactionFilter): el estado del filtro está vinculado a un único backend upstream y falla silenciosamente en un proxy HTTP con balanceo de carga. Usa eth_getLogs (sin estado) en su lugar.
  • Métodos de minero / con claves (eth_sign, eth_accounts, eth_mining, eth_hashrate, eth_getWork, eth_submitWork): los endpoints de proveedores alojados no guardan claves privadas de usuarios, por lo que estos siempre dan error. Firma las transacciones en el cliente y envíalas mediante eth_sendRawTransaction.
  • Métodos no mapeados: cualquier cosa no permitida explícitamente devuelve 400. Contacta con soporte para solicitar adiciones.

Facturación por elemento en lote

Aunque la respuesta HTTP sea 200, los elementos individuales del lote pueden devolver un campo error JSON-RPC (por ejemplo, un error de parámetros incorrectos o un método no admitido en la cadena de destino). Venice factura estos elementos a 5 créditos cada uno en lugar del nivel completo del método: una pequeña concesión para los errores normales de “explorar la API”.
// Solicitud por lote:
[
  { "jsonrpc": "2.0", "method": "eth_chainId",   "params": [],         "id": 1 },
  { "jsonrpc": "2.0", "method": "eth_getBalance","params": ["bad"],    "id": 2 }
]

// Respuesta (HTTP 200, X-Venice-RPC-Credits: 25):
[
  { "jsonrpc": "2.0", "id": 1, "result": "0x1" },
  { "jsonrpc": "2.0", "id": 2, "error": { "code": -32602, "message": "invalid params" } }
]
El primer elemento (éxito) factura 20 créditos, el segundo (error a nivel de RPC) factura 5, suma = 25.

Límites de velocidad

Tope de solicitudes por minuto por llamador autenticado:
NivelSolicitudes/minuto
Standard100
Staff1.000
Cuando se supera el tope, el endpoint devuelve 429 con un customMessage y las cabeceras de respuesta estándar X-RateLimit-*.

Idempotencia

Establece la cabecera de solicitud Idempotency-Key a cualquier cadena que coincida con [A-Za-z0-9_-]{1,255} para habilitar reintentos seguros. La respuesta se almacena en caché durante 24 horas con clave (user, idempotency-key):
  • Reproducir la misma clave con el mismo cuerpo devuelve la respuesta en caché y una cabecera de respuesta Idempotent-Replayed: true. El upstream no se toca y no se cobran créditos nuevos.
  • Reproducir la misma clave con un cuerpo diferente devuelve 400 para evitar corrupción silenciosa de estado. Elige una clave nueva para solicitudes distintas.

Cabeceras de respuesta

CabeceraDescripción
X-Venice-RPC-CreditsCréditos cobrados por esta solicitud. En solicitudes por lote, es la suma de todos los elementos.
X-Venice-RPC-Cost-USDCoste en dólares con 8 decimales. Igual a X-Venice-RPC-Credits × precio por crédito.
X-Request-IDID de correlación de 32 caracteres. Inclúyelo en cualquier comunicación con soporte.
Idempotent-ReplayedPresente con el valor "true" cuando la respuesta provino de la caché de idempotencia.
X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-ResetSolo se establecen en respuestas 429.

Registro forense para retransmisión de transacciones

Cada llamada a eth_sendRawTransaction se registra en el servidor con el hash de la transacción (keccak256 de los bytes en bruto), el slug de la red, el ID de la solicitud y el ID del usuario que llama. No conservamos la carga útil firmada en sí: el hash se puede recuperar del recibo en cadena. Este registro de auditoría existe para que, si la API key de un cliente se ve comprometida y se usa para retransmitir transacciones ilícitas a través de nuestra infraestructura, podamos correlacionar la actividad en cadena con la cuenta responsable.

Ejemplo

curl https://api.venice.ai/api/v1/crypto/rpc/ethereum-mainnet \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_chainId",
    "params": [],
    "id": 1
  }'
{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }
Cabeceras de respuesta: X-Venice-RPC-Credits: 20, X-Venice-RPC-Cost-USD: 0.00001250, X-Request-ID: <nanoid>.

Colección de Postman

Una colección de Postman lista para importar con 27 solicitudes de ejemplo (descubrimiento, llamadas standard/advanced/large, multi-cadena, lotes, idempotencia, casos de error) está disponible en nuestro workspace público: Venice Crypto RPC — Colección de Postman Establece la variable de colección apiKey con tu API key de Venice y empieza a enviar solicitudes inmediatamente.

Autorizaciones

Authorization
string
header
requerido

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Encabezados

Idempotency-Key
string

Optional idempotency key for safe retries. Pattern: [A-Za-z0-9_-]{1,255}. Retrying within 24 hours with the same key + same body replays the cached response with Idempotent-Replayed: true. Same key + different body returns 400.

Pattern: ^[A-Za-z0-9_-]{1,255}$
Ejemplo:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

Parámetros de ruta

network
string
requerido

Venice-side network slug. Call GET /api/v1/crypto/rpc/networks for the current list.

Ejemplo:

"ethereum-mainnet"

Cuerpo

application/json
method
string
requerido

JSON-RPC method name. See the "Supported methods" section of the endpoint description for the classification into 1×/2×/4× pricing tiers.

Ejemplo:

"eth_chainId"

jsonrpc
enum<string>
Opciones disponibles:
2.0
Ejemplo:

"2.0"

params
any[]

Method parameters. Shape depends on the method; see the upstream chain documentation.

Ejemplo:
[]
id

Caller-supplied request ID echoed back in the response. Required for batch request correlation.

Ejemplo:

1

Respuesta

JSON-RPC response forwarded from the upstream node. Content-Type is forced to application/json regardless of upstream headers.

jsonrpc
string
Ejemplo:

"2.0"

id
result
any

Method-dependent result. Present on success.

error
object

JSON-RPC error object. Present on per-request failure (HTTP status is still 200 in that case).