Simulation
Simulation lets you preview the outcome and cost of an intent without executing it on-chain. You can trigger simulation in two ways.
Trigger Methods
1. Dedicated Simulate Endpoint
Send a POST request to the resource-specific /simulate sub-resource:
POST /transfers/simulate
This returns a full simulation response with fee estimates, warnings, and an optional transaction preview.
2. Inline simulate Flag
Some endpoints accept a simulate: true flag in the request body. When present, the server runs the simulation logic but does not submit the intent on-chain.
Simulation Response
| Field | Type | Description |
|---|---|---|
simulationId | string | Unique identifier for this simulation result. |
valid | boolean | Whether the intent would succeed as submitted. |
resolvedPath | string[] | Ordered list of primitive operations (e.g. ["transfer"]). |
estimatedFees | object | Breakdown of gas, protocol, and solver fees in USD and bps. |
estimatedTimeS | number | Expected settlement time in seconds. |
warnings | string[] | Non-fatal issues (e.g. high slippage). |
errors | string[] | Fatal validation errors if valid is false. |
expiresAt | string | ISO 8601 timestamp after which quoted fees may no longer be accurate. |
tx | object | Optional transaction payload ready for submission. |
Why simulate first?
Before committing any funds, dry-run the operation through Mure's simulation pipeline. It returns the resolved execution path and the full fee breakdown without writing to chain, so you can show users the cost and failure modes before they sign. This works the same whether you transfer, swap, or bridge.