Execution flow
Relationship to wallet actions
The execution’swallet_action_id identifies the action created by the automation. The wallet action contains the detailed onchain lifecycle, including steps and transaction identifiers.
The wallet_automation.submitted webhook is emitted when the execution reaches submitted. It does not indicate that the generated wallet action completed.
To observe the final outcome:
- Read
action_idfrom the submitted webhook orwallet_action_idfrom the execution. - Fetch the wallet action status.
- Subscribe to the corresponding
wallet_action.*events.
List executions
UseGET /v1/wallet_automations/executions to list executions across the app. Pass wallet_id to restrict results to one source wallet.
- cURL
- Node SDK
- Python
next_cursor. With cURL, pass the returned next_cursor as cursor in the next request until it is null.
Each execution includes:
- The source
wallet_idand matchedautomation_attachment_id. - The triggering information (e.g. transaction, block, chain, and asset).
- The linked
wallet_action_idafter submission. - Status timestamps and an optional
failure_reason.
automation_id. Store submitted webhook payloads when the app must retain a direct association between an execution and automation after deletion.
Recover a missed or failed deposit
UsePOST /v1/wallet_automations/reindex to recheck a wallet’s current balance for one asset. This can recover a deposit that did not create an execution or whose execution failed before creating a wallet action.
wallet_id or deposit_address. Identify the chain with caip2 or a human-readable chain name. For a native asset, pass native as asset_address.
Reindexing does not replay the original deposit amount. Privy reads the asset’s current wallet balance and submits a new execution only when the balance is greater than zero and an enabled attachment matches. An existing pending or submitted execution blocks reindexing for the same wallet and asset.
Each result has one of the following statuses:
The endpoint can return HTTP
200 with a failed result. Inspect every result rather than treating the HTTP status as the recovery outcome.
See the reindex API reference for the complete request and response schemas.
Delivery and concurrency
Privy deduplicates detected deposits by wallet, block, chain, and asset. Multiple deposits of the same asset to one wallet in the same block can produce one full-balance execution. Apps should also process webhook deliveries idempotently bytrigger_id.
Privy serializes automation matching and wallet-action creation for each wallet. The generated wallet action continues asynchronously after creation, so another automation execution can be submitted before the previous action completes.
Each execution reads the current balance. A later execution can become skipped if an earlier wallet action already consumed that balance.
Privy retries transient errors during action preparation. If an execution remains pending and does not advance, reindexing cannot replace it. Contact Privy support with the execution and wallet IDs.

