Skip to main content
PATCH
/
v1
/
intents
/
key_quorums
/
{key_quorum_id}
Create key quorum update intent
curl --request PATCH \
  --url https://api.privy.io/v1/intents/key_quorums/{key_quorum_id} \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'privy-app-id: <privy-app-id>' \
  --data '
{
  "public_keys": [
    "<string>"
  ],
  "authorization_threshold": 123,
  "display_name": "<string>",
  "user_ids": [
    "<string>"
  ],
  "key_quorum_ids": [
    "<string>"
  ]
}
'
{
  "intent_id": "<string>",
  "created_by_display_name": "<string>",
  "created_at": 123,
  "resource_id": "<string>",
  "authorization_details": [
    {
      "members": [
        {
          "type": "user",
          "user_id": "<string>",
          "signed_at": 123
        }
      ],
      "threshold": 123,
      "display_name": "<string>"
    }
  ],
  "status": "pending",
  "custom_expiry": true,
  "expires_at": 123,
  "intent_type": "KEY_QUORUM",
  "request_details": {
    "method": "PATCH",
    "url": "<string>",
    "body": {
      "public_keys": [
        "<string>"
      ],
      "authorization_threshold": 123,
      "display_name": "<string>",
      "user_ids": [
        "<string>"
      ],
      "key_quorum_ids": [
        "<string>"
      ]
    }
  },
  "created_by_id": "<string>",
  "rejected_at": 123,
  "dismissed_at": 123,
  "dismissal_reason": "<string>",
  "current_resource_data": {
    "id": "tb54eps4z44ed0jepousxi4n",
    "display_name": "Prod key quorum",
    "authorization_threshold": 1,
    "authorization_keys": [
      {
        "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4aoeD72yykviK+f/ckqE2CItVIG\n1rCnvC3/XZ1HgpOcMEMialRmTrqIK4oZlYd1RfxU3za/C9yjhboIuoPD3g==",
        "display_name": null
      },
      {
        "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErzZtQr/bMIh3Y8f9ZqseB9i/AfjQ\nhu+agbNqXcJy/TfoNqvc/Y3Mh7gIZ8ZLXQEykycx4mYSpqrxp1lBKqsZDQ==",
        "display_name": null
      }
    ],
    "user_ids": null
  },
  "action_result": {
    "status_code": 123,
    "executed_at": 123,
    "response_body": {
      "id": "tb54eps4z44ed0jepousxi4n",
      "display_name": "Prod key quorum",
      "authorization_threshold": 1,
      "authorization_keys": [
        {
          "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4aoeD72yykviK+f/ckqE2CItVIG\n1rCnvC3/XZ1HgpOcMEMialRmTrqIK4oZlYd1RfxU3za/C9yjhboIuoPD3g==",
          "display_name": null
        },
        {
          "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErzZtQr/bMIh3Y8f9ZqseB9i/AfjQ\nhu+agbNqXcJy/TfoNqvc/Y3Mh7gIZ8ZLXQEykycx4mYSpqrxp1lBKqsZDQ==",
          "display_name": null
        }
      ],
      "user_ids": null
    },
    "prior_state": {
      "id": "tb54eps4z44ed0jepousxi4n",
      "display_name": "Prod key quorum",
      "authorization_threshold": 1,
      "authorization_keys": [
        {
          "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4aoeD72yykviK+f/ckqE2CItVIG\n1rCnvC3/XZ1HgpOcMEMialRmTrqIK4oZlYd1RfxU3za/C9yjhboIuoPD3g==",
          "display_name": null
        },
        {
          "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErzZtQr/bMIh3Y8f9ZqseB9i/AfjQ\nhu+agbNqXcJy/TfoNqvc/Y3Mh7gIZ8ZLXQEykycx4mYSpqrxp1lBKqsZDQ==",
          "display_name": null
        }
      ],
      "user_ids": null
    },
    "authorized_by_display_name": "<string>",
    "authorized_by_id": "<string>"
  }
}

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.

Authorizations

Authorization
string
header
required

Basic Auth header with your app ID as the username and your app secret as the password.

Headers

privy-app-id
string
required

ID of your Privy app.

privy-request-expiry
string

Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the request must be processed.

Path Parameters

key_quorum_id
string
required

ID of the key quorum.

Body

application/json

Request input for updating an existing key quorum.

public_keys
string[]

List of P-256 public keys of the keys that should be authorized to sign on the key quorum, in base64-encoded DER format.

authorization_threshold
number

The number of keys that must sign for an action to be valid. Must be less than or equal to total number of key quorum members.

display_name
string
Maximum string length: 50
user_ids
string[]

List of user IDs of the users that should be authorized to sign on the key quorum.

key_quorum_ids
string[]

List of key quorum IDs that should be members of this key quorum. Key quorums can only be nested 1 level deep.

Maximum array length: 5

Response

200 - application/json

Created key quorum update intent.

Response for a key quorum intent

intent_id
string
required

Unique ID for the intent

created_by_display_name
string
required

Display name of the user who created the intent

created_at
number
required

Unix timestamp when the intent was created

resource_id
string
required

ID of the resource being modified (wallet_id, policy_id, etc)

authorization_details
IntentAuthorization · object[]
required

Detailed authorization information including key quorum members, thresholds, and signature status

status
enum<string>
required

Current status of an intent.

Available options:
pending,
executed,
failed,
expired,
rejected,
dismissed
custom_expiry
boolean
required

Whether this intent has a custom expiry time set by the client. If false, the intent expires after a default duration.

expires_at
number
required

Unix timestamp when the intent expires

intent_type
enum<string>
required
Available options:
KEY_QUORUM
request_details
object
required

The original key quorum update request that would be sent to the key quorum endpoint

created_by_id
string

ID of the user who created the intent. If undefined, the intent was created using the app secret

rejected_at
number

Unix timestamp when the intent was rejected, present when status is 'rejected'

dismissed_at
number

Unix timestamp when the intent was dismissed, present when status is 'dismissed'

dismissal_reason
string

Human-readable reason for dismissal, present when status is 'dismissed'

current_resource_data
KeyQuorum · object

Current state of the key quorum before any changes. If undefined, the resource was deleted and no longer exists

Example:
{
  "id": "tb54eps4z44ed0jepousxi4n",
  "display_name": "Prod key quorum",
  "authorization_threshold": 1,
  "authorization_keys": [
    {
      "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4aoeD72yykviK+f/ckqE2CItVIG\n1rCnvC3/XZ1HgpOcMEMialRmTrqIK4oZlYd1RfxU3za/C9yjhboIuoPD3g==",
      "display_name": null
    },
    {
      "public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErzZtQr/bMIh3Y8f9ZqseB9i/AfjQ\nhu+agbNqXcJy/TfoNqvc/Y3Mh7gIZ8ZLXQEykycx4mYSpqrxp1lBKqsZDQ==",
      "display_name": null
    }
  ],
  "user_ids": null
}
action_result
BaseActionResult · object

Result of key quorum update execution (only present if status is 'executed' or 'failed')