Privy enables you to update the policies, owners, and signers for a wallet.

To update an existing wallet, make a PATCH request to:

https://api.privy.io/v1/wallets/<wallet_id>

Wallets with owner_id present must provide an authorization signature as a request header. Privy SDKs offer utility functions such as generateAuthorizationSignature to generate the authorization signature.

Body

In the request body, include the following fields:

policy_ids
string[]

New policy IDs to enforce on the wallet. Currently, only one policy is supported per wallet.

owner
{user_id: string} | {public_key: string} | null

The user ID or P-256 public key of the owner of the wallet. If you provide this, do not specify an owner_id as it will be generated automatically.

View this guide to learn more about owners.

owner_id
string | null

The key quorum ID of the owner of the wallet. If you provide this, do not specify an owner.

View this guide to learn more about owners.

additional_signers
{signer_id: string}[]

The key quorum IDs to add as additional signers for the wallet.

View this guide to learn more about key quorums.

Any fields not included in the PATCH request body will remain unchanged from the original wallet.

Response

If the wallet is updated successfully, the response will include the updated wallet.

id
string

Unique ID for the wallet.

address
string

Address of the wallet.

chain_type
'ethereum'

Chain type for the wallet.

policy_ids
MethodRule

Updated policy IDs to enforce on the wallet.

owner_id
string | null

The key quorum ID of the owner of the wallet.

additional_signers
{signer_id: string}[]

The key quorum IDs of the additional signers for the wallet.

Example

A sample request might look like the following:

$ curl --request PATCH https://api.privy.io/v1/wallets/rbokq6mmq5f8j1cgyr6a5g4n \
-u "<your-privy-app-id>:<your-privy-app-secret>" \
-H "privy-app-id: <your-privy-app-id>" \
-H "privy-authorization-signature: <authorization-signature-for-request>" \
-H 'Content-Type: application/json' \
--data '{
    "policy_ids": ["fmfdj6yqly31huorjqzq38zc"],
    "owner_id": "yhu8t1fjns9rtc2o702ub3vt",
    "additional_signers": [{"signer_id": "trt9syg5k19jvxwbnt6t8rd0"}]
}'

A successful response will look like the following:

{
  "id": "rbokq6mmq5f8j1cgyr6a5g4n",
  "address": "0xE315ce0854CcbdB0E33e71af1190F48Eb5d4f5a4",
  "chain_type": "ethereum",
  "policy_ids": ["fmfdj6yqly31huorjqzq38zc"],
  "owner_id": "yhu8t1fjns9rtc2o702ub3vt",
  "additional_signers": [
    {
      "signer_id": "trt9syg5k19jvxwbnt6t8rd0"
    }
  ],
  "created_at": 1737492220389
}