RPC crypto
Proxy a JSON-RPC request to a supported blockchain node and bill per credit.
Request shapes
- Single request: a JSON-RPC 2.0 object (
{ "jsonrpc":"2.0", "method":"…", "params":[…], "id":1 }). - Batch: an array of up to 100 JSON-RPC 2.0 objects. If any item references an unsupported method, the entire batch is rejected with 400 and the offending methods are listed.
Supported methods
Methods are classified into three pricing tiers:
- Standard (1×):
eth_call,eth_getBalance,eth_blockNumber,eth_sendRawTransaction,eth_getLogs,net_version,web3_clientVersion, ERC-4337 bundler methods (eth_sendUserOperation, etc.), and chain-family extensions (zks_*,linea_*,bor_*,starknet_*). - Advanced (2×):
trace_*,debug_*,txpool_inspect,txpool_status,arbtrace_*. - Large (4×):
trace_replayBlockTransactions,trace_replayTransaction,txpool_content,arbtrace_replay*.
Stateful filter methods (eth_newFilter, eth_getFilterChanges, eth_uninstallFilter, etc.) are not supported — they break on a load-balanced HTTP proxy because filter state is pinned to a single upstream backend. Use eth_getLogs instead.
WebSocket-only methods (eth_subscribe, eth_unsubscribe) return 400 because this proxy is HTTP-only.
Pricing
Credits consumed per call = baseCredits[chain] × methodTier. baseCredits is 20 for most EVM chains (Ethereum, Base, Optimism, Arbitrum, Polygon, Linea, Avalanche, BSC, Blast) and Starknet; 30 for zkSync Era. The USD price per credit is ~7e-7 — a single standard EVM call costs ≈ 0.000056.
Per-request errors at the JSON-RPC layer (HTTP 200 with an error field in a response item) are billed at 5 credits instead of the full method tier — a small concession for methods not supported on a given chain or bad-parameter responses.
Rate limits
Two caps apply per caller:
- Requests per minute: 100 on the paid tier, 1000 on the staff tier.
- Credits per rolling 24 hours: 10,000,000 on the paid tier, 100,000,000 on the staff tier.
When either cap is exceeded, the request returns 429 with a
customMessageidentifying which cap tripped. The per-minute cap also sets theX-RateLimit-*response headers.
Idempotency
Set the Idempotency-Key request header to any string matching [A-Za-z0-9_-]{1,255} to enable safe retries. The response is cached for 24 hours keyed on (user, idempotency-key); replaying the same key with the same body returns the cached response with Idempotent-Replayed: true. Reusing the same key with a different body returns 400 to prevent silent corruption.
Authentication: This endpoint accepts either a Bearer API key or a SIGN-IN-WITH-X header for x402 wallet-based authentication. The legacy X-Sign-In-With-X header is also accepted during migration. When using x402, a 402 Payment Required response indicates insufficient balance and includes top-up instructions.
Authentification
Cet endpoint prend en charge deux méthodes d’authentification :- Clé API : Authentification Bearer token standard via l’en-tête
Authorization: Bearer <key>. - Portefeuille x402 : Paiement à l’utilisation avec des crédits USDC depuis un portefeuille sur Base ou Solana. Aucun compte Venice requis. Voir le guide x402 pour la configuration.
Réseaux pris en charge
VoirGET /crypto/rpc/networks pour la liste actuelle qui fait autorité. Couverture actuelle :
| Famille | Mainnet | Testnets |
|---|---|---|
| Ethereum | ethereum-mainnet | ethereum-sepolia, ethereum-holesky |
| Polygon | polygon-mainnet | polygon-amoy |
| Arbitrum | arbitrum-mainnet | arbitrum-sepolia |
| Optimism | optimism-mainnet | optimism-sepolia |
| Base | base-mainnet | base-sepolia |
| Linea | linea-mainnet | linea-sepolia |
| Avalanche C-Chain | avalanche-mainnet | avalanche-fuji |
| BNB Smart Chain | bsc-mainnet | bsc-testnet |
| Blast | blast-mainnet | blast-sepolia |
| zkSync Era | zksync-mainnet | zksync-sepolia |
| Starknet | starknet-mainnet | starknet-sepolia |
Format des requêtes
Requête simple
Requête en batch
Un tableau de jusqu’à 100 objets JSON-RPC 2.0. Chaque élément est validé indépendamment ; si une méthode n’est pas prise en charge, l’ensemble du batch est rejeté avec un400 et chaque nom de méthode fautive est listé dans le message d’erreur.
Méthodes prises en charge et niveaux de tarification
Les méthodes sont classées en trois niveaux de crédit. Crédits consommés par appel =baseCredits[chain] × methodTier.
| Niveau | Multiplicateur | Exemples de méthodes |
|---|---|---|
| Standard | 1× | eth_call, eth_getBalance, eth_blockNumber, eth_sendRawTransaction, eth_getLogs, eth_getTransactionReceipt, eth_estimateGas, net_version, web3_clientVersion, méthodes bundler ERC-4337 (eth_sendUserOperation, eth_estimateUserOperationGas, etc.), extensions spécifiques aux chaînes (zks_*, linea_*, bor_*, starknet_*) |
| Avancé | 2× | trace_block, trace_call, trace_transaction, debug_traceCall, debug_traceTransaction, debug_traceBlockByHash, txpool_inspect, txpool_status, arbtrace_* |
| Large | 4× | trace_replayBlockTransactions, trace_replayTransaction, txpool_content, arbtrace_replayTransaction, arbtrace_replayBlockTransactions |
Crédits de base par chaîne
| baseCredits | Chaînes |
|---|---|
| 20 | Ethereum + tous les L2 EVM ci-dessus (Base, Optimism, Arbitrum, Polygon, Linea, Avalanche, BSC, Blast) et Starknet |
| 30 | zkSync Era |
Exemples de coût
Au tarif Venice de~6,25 × 10⁻⁷ $ par crédit :
| Appel | Crédits | Coût USD |
|---|---|---|
eth_call sur Ethereum (20 × 1×) | 20 | 0,0000125 $ |
trace_transaction sur Ethereum (20 × 2×) | 40 | 0,0000250 $ |
trace_replayTransaction sur Ethereum (20 × 4×) | 80 | 0,0000500 $ |
eth_call sur zkSync (30 × 1×) | 30 | 0,0000188 $ |
Non pris en charge
- Méthodes WebSocket uniquement (
eth_subscribe,eth_unsubscribe) — ce proxy est HTTP uniquement. Faites du polling à la place, ou passez à un fournisseur WebSocket direct. - Méthodes de filtre avec état (
eth_newFilter,eth_getFilterChanges,eth_getFilterLogs,eth_uninstallFilter,eth_newBlockFilter,eth_newPendingTransactionFilter) — l’état du filtre est attaché à un seul backend en amont et se brise silencieusement sur un proxy HTTP à équilibrage de charge. Utilisezeth_getLogs(sans état) à la place. - Méthodes de minage / détention de clés (
eth_sign,eth_accounts,eth_mining,eth_hashrate,eth_getWork,eth_submitWork) — les endpoints de fournisseurs hébergés ne détiennent pas les clés privées des utilisateurs, donc ces appels échouent toujours. Signez les transactions côté client et soumettez viaeth_sendRawTransaction. - Méthodes non mappées — tout ce qui n’est pas explicitement sur la liste autorisée renvoie
400. Contactez le support pour demander des ajouts.
Facturation par élément de batch
Même lorsque la réponse HTTP est200, des éléments individuels du batch peuvent renvoyer un champ error JSON-RPC (par exemple, une erreur de paramètres ou une méthode non prise en charge sur la chaîne cible). Venice facture ces éléments à 5 crédits chacun plutôt qu’au niveau complet de la méthode — une petite concession pour les erreurs normales d’« exploration de l’API ».
= 25.
Limites de débit
Plafond de requêtes par minute par appelant authentifié :| Niveau | Requêtes/minute |
|---|---|
| Standard | 100 |
| Staff | 1 000 |
429 avec un customMessage et les en-têtes de réponse standard X-RateLimit-*.
Idempotence
Définissez l’en-tête de requêteIdempotency-Key à toute chaîne correspondant à [A-Za-z0-9_-]{1,255} pour permettre des relances sécurisées. La réponse est mise en cache pendant 24 heures avec la clé (user, idempotency-key) :
- Rejouer la même clé avec le même corps renvoie la réponse mise en cache et un en-tête de réponse
Idempotent-Replayed: true. L’amont n’est pas sollicité et aucun nouveau crédit n’est facturé. - Rejouer la même clé avec un corps différent renvoie
400pour empêcher la corruption silencieuse d’état. Choisissez une nouvelle clé pour des requêtes distinctes.
En-têtes de réponse
| En-tête | Description |
|---|---|
X-Venice-RPC-Credits | Crédits facturés pour cette requête. Sur les requêtes en batch, c’est la somme sur tous les éléments. |
X-Venice-RPC-Cost-USD | Coût en dollars à 8 décimales. Égal à X-Venice-RPC-Credits × prix par crédit. |
X-Request-ID | ID de corrélation de 32 caractères. À inclure dans toute correspondance avec le support. |
Idempotent-Replayed | Présent avec la valeur "true" lorsque la réponse provient du cache d’idempotence. |
X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset | Définis uniquement sur les réponses 429. |
Journalisation forensique des relais de transactions
Chaque appel àeth_sendRawTransaction est journalisé côté serveur avec le hash de la transaction (keccak256 des octets bruts), le slug de réseau, l’ID de requête et l’ID de l’utilisateur appelant. Nous ne conservons pas la charge utile signée elle-même — le hash est récupérable depuis le reçu on-chain. Cette piste d’audit existe pour que, si la clé API d’un client est compromise et utilisée pour relayer des transactions illicites via notre infrastructure, nous puissions corréler l’activité on-chain avec le compte responsable.
Exemple
X-Venice-RPC-Credits: 20, X-Venice-RPC-Cost-USD: 0.00001250, X-Request-ID: <nanoid>.
Collection Postman
Une collection Postman prête à importer avec 27 exemples de requêtes (découverte, appels standard/avancé/large, multi-chaîne, batching, idempotence, cas d’erreur) est disponible dans notre workspace public : Venice Crypto RPC — Collection Postman Définissez la variable de collectionapiKey sur votre clé API Venice et commencez à envoyer des requêtes immédiatement.Autorisations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
En-têtes
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.
^[A-Za-z0-9_-]{1,255}$"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Paramètres de chemin
Venice-side network slug. Call GET /api/v1/crypto/rpc/networks for the current list.
"ethereum-mainnet"
Corps
- object
- object[]
JSON-RPC method name. See the "Supported methods" section of the endpoint description for the classification into 1×/2×/4× pricing tiers.
"eth_chainId"
2.0 "2.0"
Method parameters. Shape depends on the method; see the upstream chain documentation.
[]Caller-supplied request ID echoed back in the response. Required for batch request correlation.
1
Réponse
JSON-RPC response forwarded from the upstream node. Content-Type is forced to application/json regardless of upstream headers.