> ## Documentation Index
> Fetch the complete documentation index at: https://docs.silvana.one/llms.txt
> Use this file to discover all available pages before exploring further.

# ExecuteMultiCall

> Atomically execute a batch of operations via Execute_MultiCall

Atomically execute a batch of operations through Canton's `Execute_MultiCall` DAR choice. Each sub-operation is individually gated against its own functional group — a disabled group will cause the whole batch to be rejected.

Invoked through the two-phase [transaction flow](/agentic-api/transaction-flow) with:

* `operation = TRANSACTION_OPERATION_EXECUTE_MULTICALL`
* `params.execute_multicall = ExecuteMultiCallParams { … }`

## Params

<ParamField path="operations" type="MultiCallOp[]" required>
  Ordered list of sub-operations to execute atomically.
</ParamField>

<ParamField path="amulet_cids" type="string[]">
  Canton Coin amulets to be consumed by the batch.
</ParamField>

<ParamField path="holding_cids" type="string[]">
  CIP-56 holding contract IDs to be consumed by the batch.
</ParamField>

```proto theme={null}
message ExecuteMultiCallParams {
  repeated MultiCallOp operations   = 1;
  repeated string      amulet_cids  = 2;
  repeated string      holding_cids = 3;
}
```

<Warning>
  All sub-operations succeed or the entire batch is rolled back. MultiCall is the right tool when two or more actions must be strictly atomic (e.g. split + transfer in the same commit).
</Warning>

<Tip>
  Call [`GetAmulets`](/agentic-api/core/get-amulets) and [`GetActiveContracts`](/agentic-api/core/get-active-contracts) to pre-select the `amulet_cids` and `holding_cids` the batch should consume.
</Tip>

## See also

* [`TransferCc`](/agentic-api/transfer/transfer-cc), [`SplitCc`](/agentic-api/transfer/split-cc) — common Canton Coin sub-operations.
* [`TransferCip56`](/agentic-api/cip56/transfer-cip56), [`AcceptCip56`](/agentic-api/cip56/accept-cip56) — common CIP-56 sub-operations.
* [`Allocate`](/agentic-api/dvp/allocate) — DvP allocation that is often combined with other steps via MultiCall.
* [`GetServiceInfo`](/agentic-api/core/get-service-info) — confirm each sub-operation's group is enabled before batching.
