Transaction Simulation
Simulate one or more transactions before they are broadcast. Returns balance changes, approvals, the internal call graph, emitted logs, and HashDit risk levels for every address involved. Covers EVM chains and TRON.
camelCase and snake_case. See Request Field Names.chain_id is set on each transaction, not at the top level. Send an integer or a string — 56 and "56" are both valid.
value, gas, gas_price, and block_height each accept several encodings of the same number:
requested_items is required in practice. Omitting the key is rejected with 400 invalid request. Any object works — {"balance_changes": true} is the normal minimum, and even {} is accepted.nonce, type, maxFeePerGas, maxPriorityFeePerGas, accessList, v, r, s, hash, blockNumber — are accepted and ignored. You can POST a wallet’s fully populated transaction object as-is.invocation_tree. That field does not exist — use call_graph.Chain Coverage
Chain coverage for this endpoint is broader than the list used by the analysis endpoints and expands over time. Commonly used values:1 (Ethereum), 56 (BSC), 137 (Polygon), 42161 (Arbitrum), 728126428 (TRON). An unsupported chain is rejected with 400 invalid request. Contact support to confirm a chain not listed here.
risk_level Scale
Used in involved_addresses_risks.
code: "0", status: "ok". Read exec_summary.result_code and results[i].revert to detect the revert. Only infrastructure failures produce non-"0" codes.Headers
Your HashDit API key
Body
Transactions to simulate and which result sections to return
Transactions to simulate, executed in order. Minimum 1. Alias transactions also accepted.
1Selects which sections appear in each result. Effectively required: omitting the key is rejected with 400 invalid request. Any object is accepted, including {}. {"balance_changes": true} is the normal minimum. Unset flags are off.
Response
Successful API call. A reverted transaction still returns code: "0" and status: "ok" — read exec_summary.result_code and results[i].revert.