Simulate EVM transactions against the current chain state without broadcasting them. The API executes your calls in a sandbox and returns predicted balance changes, emitted events, gas estimates and revert errors - so you can validate a transaction before a user ever signs it.
Sandboxed execution Nothing hits the chain Canonical events out EVM chains only
Check for execution failures before asking a user to sign.
Estimate gas for complex contract interactions.
Preview which tokens a call is expected to move, and by how much.
Test multiple calls in a single block to catch ordering issues.
Send one or more calls to POST /evm/simulations - simulate EVM calls with the target chain named in the request body. The chain_gid is a CAIP-2 identifier such as eip155:1 (Ethereum) or eip155:56 (BNB Smart Chain). Each call needs from and to; value and data are optional (default 0 and 0x). Address and data fields are hex; value is in wei, given as a decimal or 0x hex string. block_state_calls holds up to 256 entries, and each entry's calls holds up to 100.
By default the simulation fills missing parameters with permissive defaults and does not check the sender's balance. Set validation: true to check the sender's balance, nonce sequence and fee consistency the way a real submission would, to catch these submission errors in the preview.
Pass the user's real from address. With validation: true, the simulation reads that account's live balance and nonce, to check the account state used by the preview.
Include multiple calls in a single block_state_calls entry to simulate them sequentially within the same block - useful for testing approval-then-transfer flows before either call is signed.
The response contains an items array with one simulated transaction per input call, plus a references map with token and blockchain metadata. Inspect each result before deciding whether to request a signature.
Check details.is_success for each call. If it is false, inspect error.code, error.message and hex error.data; details stays populated on a revert. An HTTP success alone does not mean every call executed successfully.
Use activity for balance previews: its in/out direction and signed delta describe the change per address and asset. Token transfers use entry_kind: token_transfer. Events in details.events describe transfers, approvals and interactions in event_index order. details.fee is denominated in the chain's native asset, while details.gas_used reports gas consumed.
Resolve symbols and decimals through references. Keep base for exact amounts and use formatted when available. A synthetic txid correlates results; it cannot identify a real chain transaction. created_at is the simulation time, and details.block describes a hypothetical block position.
A simulation reflects state at the current block. The real outcome can differ if balances, allowances or contract state change between the preview and the broadcast. EVM chains only - Solana, Tron and Bitcoin are not supported. Nothing from a simulation is stored, and the block position in the response is invented for the request.
This endpoint needs the api:simulate:call scope on your API key. Manage scopes from the dashboard.