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

# Intents

Intents are Privy's asynchronous signing mechanism. They let your app propose an action on a wallet or resource, then collect the authorization signatures needed to execute it separately -- over time and, if needed, from multiple parties.

<Info>
  Intents are an Enterprise feature. Reach out to [sales@privy.io](mailto:sales@privy.io) to request
  access for your app.
</Info>

## Asynchronous signing

Privy's wallet API was originally synchronous: a request to use a wallet had to include every authorization signature in that same request. Intents split this into distinct steps, so signatures can be added independently:

1. **Propose an intent** that describes the action to perform, such as a transfer, a transaction, or a resource update.
2. **Sign the intent** by adding authorization signatures one at a time from the resource's owners or signers.
3. **Privy executes** the action automatically once the signatures satisfy the resource's authorization threshold.

<Tabs>
  <Tab title="Without intents (synchronous)">
    The action and all of its authorization signatures are sent together in a single request.

    ```mermaid theme={"system"}
    flowchart LR
      subgraph one["One request - time n"]
        action["Send 100 USDC"]
        sig1["Approval signature 1"]
        sig2["Approval signature 2"]
        sig3["Approval signature 3"]
      end
      one --> api["Privy API"]
      api --> exec["Action executes"]
    ```
  </Tab>

  <Tab title="With intents (asynchronous)">
    The action is proposed first, then each authorization signature is added over time. Privy executes once the threshold is met.

    ```mermaid theme={"system"}
    flowchart LR
      propose["Propose intent: Send 100 USDC - time n"] --> api["Privy API"]
      sig1["Authorization signature 1 - time n+1"] --> api
      sig2["Authorization signature 2 - time n+2"] --> api
      sig3["Authorization signature 3 - time n+3"] --> api
      api --> exec["Action executes once the quorum is met"]
    ```
  </Tab>
</Tabs>

<Info>
  For the synchronous flow, where signatures accompany the request, see [Signing and
  RPC](/wallets/using-wallets/rpc).
</Info>

## Supported actions

An intent can propose any of the following actions:

| Action                | Description                                                      | API reference                                                 |
| --------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------- |
| **Transfer**          | Transfer funds from a wallet to a destination address.           | [Create transfer](/api-reference/intents/transfer)            |
| **RPC**               | Execute a signature or transaction with a wallet.                | [Create RPC transaction](/api-reference/intents/rpc)          |
| **Update wallet**     | Change a wallet's owner, additional signers, or policies.        | [Update wallet](/api-reference/intents/update-wallet)         |
| **Update policy**     | Update a policy or add, edit, or remove its rules.               | [Update policy](/api-reference/intents/update-policy)         |
| **Update key quorum** | Change a key quorum's name, members, or authorization threshold. | [Update key quorum](/api-reference/intents/update-key-quorum) |

## Use cases

### Queuing user actions

Intents create a window between proposing an action and executing it. Your app can use that window to run additional steps -- compliance or risk screening, funding or onramping, or a user confirmation -- before the action executes.

For example, an app lets a user buy a token with their fiat balance. The app proposes an intent to execute the swap, runs compliance screening while the intent is pending, onramps funds into the user's wallet, and only then adds the authorization signature to execute. Intents provide a generic way to introduce additional steps into an authorization flow without blocking on a single synchronous request.

### Organization wallets and approval orchestration

Because signatures can be added asynchronously by different parties, intents are a natural fit for multi-party approvals. Your app can provision wallets for organizations and collect authorization signatures from multiple members of the organization at their convenience. and Privy orchestrates the collected signatures and executes once the threshold is met.

This lets your app offer its own white-labeled approval experience--for example, an internal dashboard for a treasury team--without building signature collection or execution orchestration itself.

## Relationship to manual approvals

[Manual approvals](/controls/dashboard/overview) is Privy's Dashboard-native implementation of intents. Team members review and approve intents directly in the Privy Dashboard, secured by biometric or TOTP MFA. Use manual approvals for a ready-made, Dashboard-based approval flow, or use the Intents API to build your own asynchronous signing flow.

## Next steps

<Columns cols={2}>
  <Card title="Propose intents" icon="paper-plane" href="/transaction-management/intents/create/execute-transfer">
    Propose an intent to transfer funds, run a transaction, or update a resource.
  </Card>

  <Card title="Sign intents" icon="signature" href="/transaction-management/intents/sign-intents">
    Add authorization signatures to execute a proposed intent.
  </Card>

  <Card title="Intent status" icon="arrows-spin" href="/transaction-management/intents/lifecycle">
    Track an intent from proposal to execution.
  </Card>

  <Card title="API reference" icon="code" href="/api-reference/intents/get">
    Explore the full Intents REST API.
  </Card>
</Columns>
