Skip to main content
After an intent is proposed, it must be authorized before Privy executes it. Each eligible owner or signer authorizes the intent by adding an authorization signature. Signatures can be added independently, over time, until the resource’s authorization threshold is met.

Authorize an intent

To authorize an intent, submit an authorization signature to the authorize endpoint:
The endpoint can be called with your app secret or with a wallet owner’s user token, and accepts an object with the following fields:
string
required
An authorization signature over the intent’s action.
number
required
Unix timestamp, in milliseconds, when the signature was created. Privy uses it to verify the signing key was valid at signing time.
The signature is an authorization signature over the intent’s underlying request. Generate it with the resource owner’s authorization key, following the signing guides.
The authorize endpoint accepts a single signature per call. To satisfy a threshold greater than one, each owner or signer calls the endpoint with their own signature.

Execution

When authorizations meet the resource’s authorization threshold, Privy executes the action automatically. The intent moves from Pending to Processing for asynchronous actions such as transfers, and then to Executed or Failed. Retrieve the outcome by fetching the intent or by listening to the intent.executed webhook. For transaction intents, the action_result field contains the transaction hash. See intent status for details on each status.

Idempotency

Privy records one authorization per signer. Re-submitting the same signer’s authorization is safe: it does not add a duplicate approval or advance the intent past its threshold more than once, and the action executes only once when the threshold is met.

Errors

Authorizing an intent returns an error in the following cases:

Next steps

Propose intents

Propose an intent to transfer funds, run a transaction, or update a resource.

Intent status

Track an intent from proposal to execution.