debug_traceCall
Polygon / https://triport.io/polygon
Minimum tier: Free
Last updated:
debug_traceCall executes a transaction-shaped call object against the EVM at a
chosen block, exactly like eth_call, but instead of returning only the
final return data it returns the complete tree of execution frames the call
produced. Because nothing is signed or broadcast, you can use it to dry-run a
swap, simulate a potential MEV opportunity, or reproduce a revert and inspect
every internal call along the way.
This is the Geth-style tracer. It is the lighter, faster counterpart to the
Parity-style trace_call: it returns a single nested call
object ({type, from, to, gas, gasUsed, value, input, output, calls[], error?})
rather than a flat array of trace/stateDiff/vmTrace records. The output
schemas differ — if you index Polygon execution with both, your decoder must
handle each shape separately.
Typical uses:
- Pre-confirmation analysis — simulate a candidate transaction and read the full execution path (including internal token transfers) before deciding to send it.
- Revert debugging — when an
eth_callfails opaquely, trace it to see which sub-call reverted and with whaterror. - Forensics — re-run a call against a past block to reconstruct behavior.
Both debug_* trace methods on Polygon belong to the premium polygon_trace
category and require Pro tier. debug_traceCall is the cheapest of them —
single-call traces are small and fast, unlike full-block traces such as
debug_traceBlockByNumber.
Parameters
This method takes no parameters.
Returns
| Field | Type |
|---|---|
| result | object |
Examples
curl https://triport.io/polygon \
-X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer <api-key>' \
-d '{"jsonrpc":"2.0","id":1,"method":"debug_traceCall","params":[]}'const res = await fetch("https://triport.io/polygon", {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: "Bearer <api-key>" },
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "debug_traceCall",
"params": []
}),
});
const data = await res.json();import requests
resp = requests.post(
"https://triport.io/polygon",
headers={"Authorization": "Bearer <api-key>"},
json={"jsonrpc":"2.0","id":1,"method":"debug_traceCall","params":[]},
)
print(resp.json())Usage
- Transport: HTTP (JSON-RPC).
- Chain: Polygon.
- Clusters: mainnet.
- Credit cost: 5 per call.
FAQ
- What does debug_traceCall do?
- Simulate a single Polygon call against a historical or pending state and return its full Geth-style execution trace — without broadcasting anything to the network.
- How many credits does debug_traceCall cost?
- debug_traceCall costs 5 credit(s) per call on Triport by default.
- Is debug_traceCall available over WebSocket?
- debug_traceCall is an HTTP JSON-RPC method.