---
title: "Authorize intent"
method: POST
path: "/v1/intents/{intent_id}/authorize"
tags: ["Intents"]
---

# Authorize intent

`POST /v1/intents/{intent_id}/authorize`

Authorize a pending intent by providing a signature. Can be called by the wallet owner (via user token) or with the app secret.

## Path parameters

- `intent_id` string, required — ID of the intent.

## Headers

- `privy-app-id` string, required — ID of your Privy app.

## Request body

- IntentAuthorizeInput — Request body for authorizing an intent.
  - `signature` string, required — Signature authorizing the intent.
  - `timestamp` number, required — Unix timestamp (in milliseconds) when the signature was created. Used to verify the signature was created when the signing key was valid.

## Response `200`

Authorized intent.

- union — Response for an intent object
  - object — Response for an RPC intent
    - `authorization_details` IntentAuthorization[], required — Detailed authorization information including key quorum members, thresholds, and signature status
      - `display_name` string — Display name of the key quorum
      - `members` IntentAuthorizationMember[], required — Members in this authorization quorum
        - union — A member of an intent authorization quorum. Can be a user, key, or nested key quorum.
          - object — A user member of an intent authorization quorum.
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'user', required
            - `user_id` string, required — User ID of the key quorum member
          - object — A key member of an intent authorization quorum.
            - `public_key` string, required — Public key of the key quorum member
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'key', required
          - object — A nested key quorum member of an intent authorization quorum.
            - `display_name` string — Display name for the child key quorum (if any)
            - `key_quorum_id` string, required — ID of the child key quorum member
            - `members` IntentAuthorizationKeyQuorumMember[], required — Members of this child quorum
              - …
            - `threshold` number, required — Number of signatures required from this child quorum
            - `threshold_met` boolean, required — Whether this child key quorum has met its signature threshold
            - `type` 'key_quorum', required
      - `threshold` number, required — Number of signatures required to satisfy this quorum
    - `created_at` number, required — Unix timestamp when the intent was created
    - `created_by_display_name` string, required — Display name of the user who created the intent
    - `created_by_id` string — ID of the user who created the intent. If undefined, the intent was created using the app secret
    - `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.
    - `dismissal_reason` string — Human-readable reason for dismissal, present when status is 'dismissed'
    - `dismissed_at` number — Unix timestamp when the intent was dismissed, present when status is 'dismissed'
    - `expires_at` number, required — Unix timestamp when the intent expires
    - `intent_id` string, required — Unique ID for the intent
    - `rejected_at` number — Unix timestamp when the intent was rejected, present when status is 'rejected'
    - `resource_id` string, required — ID of the resource being modified (wallet_id, policy_id, etc)
    - `status` 'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed', required — Current status of an intent.
    - `action_result` object — Result of RPC execution (only present if status is 'executed' or 'failed')
      - `authorized_by_display_name` string — Display name of the key quorum that authorized execution
      - `authorized_by_id` string — ID of the key quorum that authorized execution
      - `executed_at` number, required — Unix timestamp when the action was executed
      - `status_code` number, required — HTTP status code from the action execution
      - `response_body` union, required — Response body for wallet RPC operations, discriminated by method.
        - object — Response to the EVM `personal_sign` RPC.
          - `data` EthereumPersonalSignRpcResponseData, required — Data returned by the EVM `personal_sign` RPC.
            - `encoding` 'hex', required
            - `signature` string, required
          - `method` 'personal_sign', required
        - object — Response to the EVM `eth_signTypedData_v4` RPC.
          - `data` EthereumSignTypedDataRpcResponseData, required — Data returned by the EVM `eth_signTypedData_v4` RPC.
            - `encoding` 'hex', required
            - `signature` string, required
          - `method` 'eth_signTypedData_v4', required
        - object — Response to the EVM `eth_signTransaction` RPC.
          - `data` EthereumSignTransactionRpcResponseData, required — Data returned by the EVM `eth_signTransaction` RPC.
            - `encoding` 'rlp', required
            - `signed_transaction` string, required
          - `method` 'eth_signTransaction', required
        - object — Response to the EVM `eth_sendTransaction` RPC.
          - `data` EthereumSendTransactionRpcResponseData, required — Data returned by the EVM `eth_sendTransaction` RPC.
            - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
            - `hash` string, required
            - `reference_id` string, nullable
            - `transaction_id` string
            - `transaction_request` union — An unsigned Ethereum transaction object. Supports standard EVM transaction types (0, 1, 2, 4) and Tempo transactions (type 118).
              - …
            - `user_operation_hash` string
          - `method` 'eth_sendTransaction', required
        - object — Response to the EVM `eth_signUserOperation` RPC.
          - `data` EthereumSignUserOperationRpcResponseData, required — Data returned by the EVM `eth_signUserOperation` RPC.
            - `encoding` 'hex', required
            - `signature` string, required
          - `method` 'eth_signUserOperation', required
        - object — Response to the EVM `eth_sign7702Authorization` RPC.
          - `data` EthereumSign7702AuthorizationRpcResponseData, required — Data returned by the EVM `eth_sign7702Authorization` RPC.
            - `authorization` EthereumSign7702Authorization, required — A signed EIP-7702 authorization that delegates code execution to a contract address.
              - …
          - `method` 'eth_sign7702Authorization', required
        - object — Response to the EVM `secp256k1_sign` RPC.
          - `data` EthereumSecp256k1SignRpcResponseData, required — Data returned by the EVM `secp256k1_sign` RPC.
            - `encoding` 'hex', required
            - `signature` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `method` 'secp256k1_sign', required
        - object — Response to the `wallet_sendCalls` RPC.
          - `data` EthereumSendCallsRpcResponseData, required — Data returned by the `wallet_sendCalls` RPC.
            - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
            - `transaction_id` string, required
          - `method` 'wallet_sendCalls', required
        - object — Response to the SVM `signMessage` RPC.
          - `data` SolanaSignMessageRpcResponseData, required — Data returned by the SVM `signMessage` RPC.
            - `encoding` 'base64', required
            - `signature` string, required
          - `method` 'signMessage', required
        - object — Response to the SVM `signTransaction` RPC.
          - `data` SolanaSignTransactionRpcResponseData, required — Data returned by the SVM `signTransaction` RPC.
            - `encoding` 'base64', required
            - `signed_transaction` string, required
          - `method` 'signTransaction', required
        - object — Response to the SVM `signAndSendTransaction` RPC.
          - `data` SolanaSignAndSendTransactionRpcResponseData, required — Data returned by the SVM `signAndSendTransaction` RPC.
            - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
            - `hash` string, required
            - `reference_id` string, nullable
            - `signed_transaction` string
            - `transaction_id` string
          - `method` 'signAndSendTransaction', required
        - object — Response to the Spark `transfer` RPC.
          - `data` SparkTransfer — A Spark transfer.
            - `created_time` string
            - `expiry_time` string
            - `id` string, required
            - `leaves` SparkTransferLeaf[], required
              - …
            - `receiver_identity_public_key` string, required
            - `sender_identity_public_key` string, required
            - `status` string, required
            - `total_value` number, required
            - `transfer_direction` string, required
            - `type` string, required
            - `updated_time` string
          - `method` 'transfer', required
        - object — Response to the Spark `getBalance` RPC.
          - `data` SparkBalance — The balance of a Spark wallet.
            - `balance` string, required
            - `token_balances` object, required
          - `method` 'getBalance', required
        - object — Response to the Spark `transferTokens` RPC.
          - `data` SparkTransferTokensRpcResponseData — Data returned by the Spark `transferTokens` RPC.
            - `id` string, required
          - `method` 'transferTokens', required
        - object — Response to the Spark `getStaticDepositAddress` RPC.
          - `data` SparkGetStaticDepositAddressRpcResponseData — Data returned by the Spark `getStaticDepositAddress` RPC.
            - `address` string, required
          - `method` 'getStaticDepositAddress', required
        - object — Response to the Spark `getClaimStaticDepositQuote` RPC.
          - `data` SparkGetClaimStaticDepositQuoteRpcResponseData — Data returned by the Spark `getClaimStaticDepositQuote` RPC.
            - `credit_amount_sats` number, required
            - `network` string, required
            - `output_index` number, required
            - `signature` string, required
            - `transaction_id` string, required
          - `method` 'getClaimStaticDepositQuote', required
        - object — Response to the Spark `claimStaticDeposit` RPC.
          - `data` SparkClaimStaticDepositRpcResponseData — Data returned by the Spark `claimStaticDeposit` RPC.
            - `transfer_id` string, required
          - `method` 'claimStaticDeposit', required
        - object — Response to the Spark `createLightningInvoice` RPC.
          - `data` SparkLightningReceiveRequest — A Spark Lightning receive request.
            - `created_at` string, required
            - `id` string, required
            - `invoice` unknown
            - `network` string, required
            - `payment_preimage` string
            - `receiver_identity_public_key` string
            - `status` string, required
            - `transfer` unknown
            - `typename` string, required
            - `updated_at` string, required
          - `method` 'createLightningInvoice', required
        - object — Response to the Spark `payLightningInvoice` RPC.
          - `data` union
            - SparkTransfer — A Spark transfer.
              - …
            - SparkLightningSendRequest — A Spark Lightning send request.
              - …
          - `method` 'payLightningInvoice', required
        - object — Response to the Spark `signMessageWithIdentityKey` RPC.
          - `data` SparkSignMessageWithIdentityKeyRpcResponseData — Data returned by the Spark `signMessageWithIdentityKey` RPC.
            - `signature` string, required
          - `method` 'signMessageWithIdentityKey', required
        - object — Response to the Spark `withdraw` RPC.
          - `data` SparkCoopExitRequest — A cooperative exit request from Spark to Bitcoin L1.
            - `coop_exit_txid` string, required
            - `created_at` string, required
            - `exit_speed` 'FAST' | 'MEDIUM' | 'SLOW' — The exit speed for a cooperative withdrawal from Spark to L1.
            - `expires_at` string, required
            - `fee` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `fee_quote_id` string
            - `id` string, required
            - `l1_broadcast_fee` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `network` string, required
            - `status` string, required
            - `updated_at` string, required
          - `method` 'withdraw', required
        - object — Response to the Spark `getWithdrawalFeeQuote` RPC.
          - `data` SparkCoopExitFeeQuote — A fee quote for a cooperative exit from Spark to Bitcoin L1.
            - `created_at` string, required
            - `expires_at` string, required
            - `id` string, required
            - `l1_broadcast_fee_fast` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `l1_broadcast_fee_medium` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `l1_broadcast_fee_slow` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `network` string, required
            - `total_amount` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `updated_at` string, required
            - `user_fee_fast` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `user_fee_medium` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
            - `user_fee_slow` SparkCurrencyAmount, required — A currency amount with its original value and unit.
              - …
          - `method` 'getWithdrawalFeeQuote', required
        - object — Response to the Tron `tron_signTransaction` RPC.
          - `data` TronSignTransactionRpcResponseData, required — Data returned by the Tron `tron_signTransaction` RPC.
            - `encoding` 'hex', required
            - `signed_transaction` string, required
          - `method` 'tron_signTransaction', required
        - object — Response to the Tron `tron_sendTransaction` RPC.
          - `data` TronSendTransactionRpcResponseData, required — Data returned by the Tron `tron_sendTransaction` RPC.
            - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
            - `hash` string, required
            - `reference_id` string
            - `transaction_id` string, required
          - `method` 'tron_sendTransaction', required
        - object — Response to the `exportPrivateKey` RPC.
          - `data` PrivateKeyExportInput, required — Input for exporting a wallet (private key or seed phrase) with HPKE encryption.
            - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
            - `export_seed_phrase` boolean
            - `export_type` 'display' | 'client' — The export type. 'display' is for showing the key to the user in the UI, 'client' is for exporting to the client application.
            - `recipient_public_key` union, required — The recipient public key for HPKE encryption, in PEM or DER (base64-encoded) format.
              - …
          - `method` 'exportPrivateKey', required
        - object — Response to the `exportSeedPhrase` RPC.
          - `data` SeedPhraseExportResponse, required — Response containing HPKE-encrypted wallet data (private key or seed phrase).
            - `ciphertext` string, required
            - `encapsulated_key` string, required
            - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
          - `method` 'exportSeedPhrase', required
    - `current_resource_data` object — Current state of the wallet before any changes. If undefined, the resource was deleted and no longer exists
      - `additional_signers` WalletAdditionalSignerItem[], required — Additional signers for the wallet.
        - `override_policy_ids` string[] — An optional list of up to one policy ID to enforce on the wallet.
        - `signer_id` string, cuid2, required — A unique identifier for a key quorum.
      - `address` string, required — Address of the wallet.
      - `archived_at` number, nullable — Unix timestamp of when the wallet was archived in milliseconds, or null if the wallet is active.
      - `authorization_threshold` number — The number of keys that must sign for an action to be valid.
      - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
      - `created_at` number, required — Unix timestamp of when the wallet was created in milliseconds.
      - `custody` WalletCustodian — Information about the custodian managing this wallet.
        - `provider` string, required — The custodian responsible for the wallet.
        - `provider_user_id` string, required — The resource ID of the beneficiary of the custodial wallet.
      - `display_name` string — A human-readable label for the wallet.
      - `exported_at` number, nullable, required — Unix timestamp of when the wallet was exported in milliseconds, if the wallet was exported.
      - `external_id` string — A customer-provided identifier for mapping to external systems. Write-once, set only at creation.
      - `id` string, required — Unique ID of the wallet. This will be the primary identifier when using the wallet in the future.
      - `imported_at` number, nullable, required — Unix timestamp of when the wallet was imported in milliseconds, if the wallet was imported.
      - `owner_id` string, cuid2, nullable, required — The key quorum ID of the owner of the wallet.
      - `policy_ids` string[], required — List of policy IDs for policies that are enforced on the wallet.
      - `public_key` string — The compressed, raw public key for the wallet along the chain cryptographic curve.
    - `intent_type` 'RPC', required
    - `request_details` object, required — The original RPC request that would be sent to the wallet endpoint
      - `body` union, required — Request body for wallet RPC operations, discriminated by method.
        - object — Executes the EVM `eth_signTransaction` RPC to sign a transaction.
          - `address` string
          - `chain_type` 'ethereum'
          - `method` 'eth_signTransaction', required
          - `params` EthereumSignTransactionRpcInputParams, required — Parameters for the EVM `eth_signTransaction` RPC.
            - `transaction` union, required — An unsigned Ethereum transaction object. Supports standard EVM transaction types (0, 1, 2, 4) and Tempo transactions (type 118).
              - …
          - `wallet_id` string
        - object — Executes the EVM `eth_sendTransaction` RPC to sign and broadcast a transaction.
          - `address` string
          - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
          - `chain_type` 'ethereum'
          - `experimental_data_suffix` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `method` 'eth_sendTransaction', required
          - `params` EthereumSendTransactionRpcInputParams, required — Parameters for the EVM `eth_sendTransaction` RPC.
            - `transaction` union, required — An unsigned Ethereum transaction object. Supports standard EVM transaction types (0, 1, 2, 4) and Tempo transactions (type 118).
              - …
          - `reference_id` string
          - `sponsor` boolean
          - `wallet_id` string
        - object — Executes the EVM `personal_sign` RPC (EIP-191) to sign a message.
          - `address` string
          - `caip2` string — A valid CAIP-2 chain ID (e.g. 'eip155:1').
          - `chain_type` 'ethereum'
          - `method` 'personal_sign', required
          - `params` EthereumPersonalSignRpcInputParams, required — Parameters for the EVM `personal_sign` RPC.
            - `encoding` union, required
              - …
            - `message` string, required
          - `signature_options` SignatureOptions — Options controlling signature production for personal_sign and eth_signTypedData_v4.
            - `type` 'ecdsa' | 'erc1271', required — The type of cryptographic signature to produce. Use "ecdsa" for standard ECDSA signatures, or "erc1271" for ERC-1271 compliant signatures for smart account wallets.
          - `wallet_id` string
        - object — Executes the EVM `eth_signTypedData_v4` RPC (EIP-712) to sign a typed data object.
          - `address` string
          - `caip2` string — A valid CAIP-2 chain ID (e.g. 'eip155:1').
          - `chain_type` 'ethereum'
          - `method` 'eth_signTypedData_v4', required
          - `params` EthereumSignTypedDataRpcInputParams, required — Parameters for the EVM `eth_signTypedData_v4` RPC.
            - `typed_data` EthereumTypedDataInput, required — EIP-712 typed data object.
              - …
          - `signature_options` SignatureOptions — Options controlling signature production for personal_sign and eth_signTypedData_v4.
            - `type` 'ecdsa' | 'erc1271', required — The type of cryptographic signature to produce. Use "ecdsa" for standard ECDSA signatures, or "erc1271" for ERC-1271 compliant signatures for smart account wallets.
          - `wallet_id` string
        - object — Signs a raw hash on the secp256k1 curve.
          - `address` string
          - `chain_type` 'ethereum'
          - `method` 'secp256k1_sign', required
          - `params` EthereumSecp256k1SignRpcInputParams, required — Parameters for the EVM `secp256k1_sign` RPC.
            - `hash` string, required — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `wallet_id` string
        - object — Signs an EIP-7702 authorization.
          - `address` string
          - `chain_type` 'ethereum'
          - `method` 'eth_sign7702Authorization', required
          - `params` EthereumSign7702AuthorizationRpcInputParams, required — Parameters for the EVM `eth_sign7702Authorization` RPC.
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `executor` 'self'
            - `nonce` union — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
          - `wallet_id` string
        - object — Executes an RPC method to hash and sign a UserOperation.
          - `address` string
          - `chain_type` 'ethereum'
          - `method` 'eth_signUserOperation', required
          - `params` EthereumSignUserOperationRpcInputParams, required — Parameters for the EVM `eth_signUserOperation` RPC.
            - `chain_id` union, required — A quantity value that can be either a hex string starting with '0x' or a non-negative integer.
              - …
            - `contract` string, required
            - `user_operation` UserOperationInput, required — An ERC-4337 user operation.
              - …
          - `wallet_id` string
        - object — Executes the `wallet_sendCalls` RPC (EIP-5792) to batch multiple calls into a single atomic transaction.
          - `address` string
          - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
          - `chain_type` 'ethereum'
          - `experimental_data_suffix` string — A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).
          - `method` 'wallet_sendCalls', required
          - `params` EthereumSendCallsRpcInputParams, required — Parameters for the `wallet_sendCalls` RPC.
            - `calls` EthereumSendCallsCall[], required
              - …
          - `sponsor` boolean
          - `wallet_id` string
        - object — Executes the SVM `signTransaction` RPC to sign a transaction.
          - `address` string
          - `chain_type` 'solana'
          - `method` 'signTransaction', required
          - `params` SolanaSignTransactionRpcInputParams, required — Parameters for the SVM `signTransaction` RPC.
            - `encoding` 'base64', required
            - `transaction` string, required
          - `wallet_id` string
        - object — Executes the SVM `signAndSendTransaction` RPC to sign and broadcast a transaction.
          - `address` string
          - `caip2` string, required — A valid CAIP-2 chain ID (e.g. 'eip155:1').
          - `chain_type` 'solana'
          - `method` 'signAndSendTransaction', required
          - `optimistic_broadcast` boolean
          - `params` SolanaSignAndSendTransactionRpcInputParams, required — Parameters for the SVM `signAndSendTransaction` RPC.
            - `encoding` 'base64', required
            - `transaction` string, required
          - `reference_id` string
          - `sponsor` boolean
          - `wallet_id` string
        - object — Executes the SVM `signMessage` RPC to sign a message.
          - `address` string
          - `chain_type` 'solana'
          - `method` 'signMessage', required
          - `params` SolanaSignMessageRpcInputParams, required — Parameters for the SVM `signMessage` RPC.
            - `encoding` 'base64', required
            - `message` string, required
          - `wallet_id` string
        - object — Transfers satoshis to a Spark address.
          - `method` 'transfer', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkTransferRpcInputParams, required — Parameters for the Spark `transfer` RPC.
            - `amount_sats` number, required
            - `receiver_spark_address` string, required
        - object — Gets the balance of the Spark wallet.
          - `method` 'getBalance', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
        - object — Transfers tokens to a Spark address.
          - `method` 'transferTokens', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkTransferTokensRpcInputParams, required — Parameters for the Spark `transferTokens` RPC.
            - `output_selection_strategy` 'SMALL_FIRST' | 'LARGE_FIRST' — Strategy for selecting outputs in a Spark token transfer.
            - `receiver_spark_address` string, required
            - `selected_outputs` OutputWithPreviousTransactionData[]
              - …
            - `token_amount` number, required
            - `token_identifier` string, required
        - object — Gets a static deposit address for the Spark wallet.
          - `method` 'getStaticDepositAddress', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
        - object — Gets a quote for claiming a static deposit.
          - `method` 'getClaimStaticDepositQuote', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkGetClaimStaticDepositQuoteRpcInputParams, required — Parameters for the Spark `getClaimStaticDepositQuote` RPC.
            - `output_index` number
            - `transaction_id` string, required
        - object — Claims a static deposit into the Spark wallet.
          - `method` 'claimStaticDeposit', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkClaimStaticDepositRpcInputParams, required — Parameters for the Spark `claimStaticDeposit` RPC.
            - `credit_amount_sats` number, required
            - `output_index` number
            - `signature` string, required
            - `transaction_id` string, required
        - object — Creates a Lightning invoice for the Spark wallet.
          - `method` 'createLightningInvoice', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkCreateLightningInvoiceRpcInputParams, required — Parameters for the Spark `createLightningInvoice` RPC.
            - `amount_sats` number, required
            - `description_hash` string
            - `expiry_seconds` number
            - `include_spark_address` boolean
            - `memo` string
            - `receiver_identity_pubkey` string
        - object — Pays a Lightning invoice from the Spark wallet.
          - `method` 'payLightningInvoice', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkPayLightningInvoiceRpcInputParams, required — Parameters for the Spark `payLightningInvoice` RPC.
            - `amount_sats_to_send` number
            - `invoice` string, required
            - `max_fee_sats` number, required
            - `prefer_spark` boolean
        - object — Signs a message with the Spark identity key.
          - `method` 'signMessageWithIdentityKey', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkSignMessageWithIdentityKeyRpcInputParams, required — Parameters for the Spark `signMessageWithIdentityKey` RPC.
            - `compact` boolean
            - `message` string, required
        - object — Withdraws from Spark to a Bitcoin L1 address (cooperative exit).
          - `method` 'withdraw', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkWithdrawRpcInputParams, required — Parameters for the Spark `withdraw` RPC.
            - `amount_sats` number
            - `deduct_fee_from_withdrawal_amount` boolean
            - `exit_speed` 'FAST' | 'MEDIUM' | 'SLOW', required — The exit speed for a cooperative withdrawal from Spark to L1.
            - `fee_amount_sats` number
            - `fee_quote_id` string
            - `onchain_address` string, required
        - object — Gets a fee quote for withdrawing from Spark to a Bitcoin L1 address.
          - `method` 'getWithdrawalFeeQuote', required
          - `network` 'MAINNET' | 'REGTEST' — The Spark network.
          - `params` SparkGetWithdrawalFeeQuoteRpcInputParams, required — Parameters for the Spark `getWithdrawalFeeQuote` RPC.
            - `amount_sats` number, required
            - `onchain_address` string, required
        - object — Executes the Tron `tron_signTransaction` RPC to sign a transaction. The caller is responsible for broadcasting.
          - `method` 'tron_signTransaction', required
          - `params` TronSignTransactionRpcInputParams, required — Parameters for the Tron `tron_signTransaction` RPC.
            - `raw_data` TronRawDataForSign, required — Tron raw_data for tron_signTransaction. Block reference fields are required; caller is responsible for fetching them.
              - …
        - object — Executes the Tron `tron_sendTransaction` RPC to sign and broadcast a transaction.
          - `caip2` string — A valid CAIP-2 chain ID (e.g. 'eip155:1').
          - `method` 'tron_sendTransaction', required
          - `params` TronSendTransactionRpcInputParams, required — Parameters for the Tron `tron_sendTransaction` RPC.
            - `raw_data` TronRawDataForSend, required — Tron raw_data for tron_sendTransaction. Block reference fields are optional; Privy fetches fresh values if omitted.
              - …
            - `reference_id` string
        - object — Exports the private key of the wallet.
          - `address` string, required
          - `method` 'exportPrivateKey', required
          - `params` PrivateKeyExportInput, required — Input for exporting a wallet (private key or seed phrase) with HPKE encryption.
            - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
            - `export_seed_phrase` boolean
            - `export_type` 'display' | 'client' — The export type. 'display' is for showing the key to the user in the UI, 'client' is for exporting to the client application.
            - `recipient_public_key` union, required — The recipient public key for HPKE encryption, in PEM or DER (base64-encoded) format.
              - …
        - object — Exports the seed phrase of the wallet.
          - `address` string, required
          - `method` 'exportSeedPhrase', required
          - `params` SeedPhraseExportInput, required — Input for exporting a wallet (private key or seed phrase) with HPKE encryption.
            - `encryption_type` 'HPKE', required — The encryption type of the wallet to import. Currently only supports `HPKE`.
            - `export_seed_phrase` boolean
            - `export_type` 'display' | 'client' — The export type. 'display' is for showing the key to the user in the UI, 'client' is for exporting to the client application.
            - `recipient_public_key` union, required — The recipient public key for HPKE encryption, in PEM or DER (base64-encoded) format.
              - …
      - `method` 'POST', required
      - `url` string, required
  - object — Response for a transfer intent
    - `authorization_details` IntentAuthorization[], required — Detailed authorization information including key quorum members, thresholds, and signature status
      - `display_name` string — Display name of the key quorum
      - `members` IntentAuthorizationMember[], required — Members in this authorization quorum
        - union — A member of an intent authorization quorum. Can be a user, key, or nested key quorum.
          - object — A user member of an intent authorization quorum.
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'user', required
            - `user_id` string, required — User ID of the key quorum member
          - object — A key member of an intent authorization quorum.
            - `public_key` string, required — Public key of the key quorum member
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'key', required
          - object — A nested key quorum member of an intent authorization quorum.
            - `display_name` string — Display name for the child key quorum (if any)
            - `key_quorum_id` string, required — ID of the child key quorum member
            - `members` IntentAuthorizationKeyQuorumMember[], required — Members of this child quorum
              - …
            - `threshold` number, required — Number of signatures required from this child quorum
            - `threshold_met` boolean, required — Whether this child key quorum has met its signature threshold
            - `type` 'key_quorum', required
      - `threshold` number, required — Number of signatures required to satisfy this quorum
    - `created_at` number, required — Unix timestamp when the intent was created
    - `created_by_display_name` string, required — Display name of the user who created the intent
    - `created_by_id` string — ID of the user who created the intent. If undefined, the intent was created using the app secret
    - `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.
    - `dismissal_reason` string — Human-readable reason for dismissal, present when status is 'dismissed'
    - `dismissed_at` number — Unix timestamp when the intent was dismissed, present when status is 'dismissed'
    - `expires_at` number, required — Unix timestamp when the intent expires
    - `intent_id` string, required — Unique ID for the intent
    - `rejected_at` number — Unix timestamp when the intent was rejected, present when status is 'rejected'
    - `resource_id` string, required — ID of the resource being modified (wallet_id, policy_id, etc)
    - `status` 'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed', required — Current status of an intent.
    - `action_result` object — Result of transfer execution (only present if intent status is 'executed' or 'failed')
      - `authorized_by_display_name` string — Display name of the key quorum that authorized execution
      - `authorized_by_id` string — ID of the key quorum that authorized execution
      - `executed_at` number, required — Unix timestamp when the action was executed
      - `status_code` number, required — HTTP status code from the action execution
      - `response_body` TransferActionResponse, required — Response for a transfer action.
        - `amount_type` 'exact_input' | 'exact_output' — Whether the amount refers to the input token or output token.
        - `created_at` string, date-time, required — ISO 8601 timestamp of when the wallet action was created.
        - `destination_address` string, required — Recipient address.
        - `destination_amount` string, nullable, required — Amount received on the destination chain. For exact_output cross-chain transfers, set at creation (the guaranteed exact amount). For exact_input cross-chain transfers, null until fill confirmation.
        - `destination_asset` string — Destination asset for cross-asset transfers. Omitted for same-asset transfers.
        - `destination_chain` string — Destination chain for cross-chain transfers. Omitted for same-chain transfers.
        - `estimated_fees` FeeLineItem[], nullable — Estimated fee breakdown from the provider quote. Only present for cross-chain or cross-asset transfers. Populated after on-chain confirmation.
          - union — An individual fee assessed on a transfer.
            - object — Estimated fee paid to the relayer.
              - …
            - object — Estimated fee paid to Privy.
              - …
            - object — Estimated fee paid to the developer.
              - …
        - `estimated_gas` Gas — Gas cost for a blockchain action. Includes both raw base-unit amount and a human-readable decimal string, plus the gas token symbol.
          - `amount` string, required — Gas cost in the gas token as a human-readable decimal string (e.g. "0.0001").
          - `base_amount` string, required — Gas cost in the gas token's base units (e.g. wei).
          - `gas_asset` string, required — Gas token symbol (e.g. "ETH", "USDC").
        - `failure_reason` object — Top-level failure context for the wallet action. Present on rejected or failed actions when available.
          - `details` unknown
          - `message` string, required — Human-readable failure message.
        - `fees` FeeLineItem[], nullable — Actual fees paid for the transfer. Populated after on-chain confirmation. Only present for cross-chain transfers.
          - union — An individual fee assessed on a transfer.
            - object — Estimated fee paid to the relayer.
              - …
            - object — Estimated fee paid to Privy.
              - …
            - object — Estimated fee paid to the developer.
              - …
        - `gas` Gas — Gas cost for a blockchain action. Includes both raw base-unit amount and a human-readable decimal string, plus the gas token symbol.
          - `amount` string, required — Gas cost in the gas token as a human-readable decimal string (e.g. "0.0001").
          - `base_amount` string, required — Gas cost in the gas token's base units (e.g. wei).
          - `gas_asset` string, required — Gas token symbol (e.g. "ETH", "USDC").
        - `id` string, required — The ID of the wallet action.
        - `source_amount` string — Decimal amount sent on the source chain (e.g. "1.5"). For exact_output cross-chain transfers, null until fill confirmation.
        - `source_asset` string — Asset identifier (e.g. "usdc", "eth"). Present when the transfer was initiated with a named asset; omitted for custom-token transfers.
        - `source_asset_address` string — Token contract address (EVM) or mint address (Solana). Present when the transfer was initiated with `asset_address`.
        - `source_asset_decimals` integer — Number of decimals for the transferred token. Present when the transfer was initiated with `asset_address` and the decimals were resolved on-chain.
        - `source_chain` string, required — Chain name (e.g. "base", "ethereum").
        - `status` 'pending' | 'succeeded' | 'rejected' | 'failed', required — The current status of the wallet action.
        - `steps` WalletActionStep[] — The steps of the wallet action. Only returned if `?include=steps` is provided.
          - union — A step within a wallet action, representing a single onchain action.
            - object — A wallet action step consisting of an EVM transaction.
              - …
            - object — A wallet action step consisting of an EVM user operation.
              - …
            - object — A wallet action step consisting of an SVM (Solana) transaction.
              - …
            - object — A wallet action step consisting of a TVM (Tron) transaction.
              - …
            - object — A wallet action step representing a cross-chain/cross-asset fill by an external provider.
              - …
            - object — A wallet action step representing a transaction executed by a custodian (e.g. Bridge).
              - …
        - `type` 'transfer', required
        - `wallet_id` string, required — The ID of the wallet involved in the action.
    - `current_resource_data` object — Current state of the wallet before any changes. If undefined, the resource was deleted and no longer exists
      - `additional_signers` WalletAdditionalSignerItem[], required — Additional signers for the wallet.
        - `override_policy_ids` string[] — An optional list of up to one policy ID to enforce on the wallet.
        - `signer_id` string, cuid2, required — A unique identifier for a key quorum.
      - `address` string, required — Address of the wallet.
      - `archived_at` number, nullable — Unix timestamp of when the wallet was archived in milliseconds, or null if the wallet is active.
      - `authorization_threshold` number — The number of keys that must sign for an action to be valid.
      - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
      - `created_at` number, required — Unix timestamp of when the wallet was created in milliseconds.
      - `custody` WalletCustodian — Information about the custodian managing this wallet.
        - `provider` string, required — The custodian responsible for the wallet.
        - `provider_user_id` string, required — The resource ID of the beneficiary of the custodial wallet.
      - `display_name` string — A human-readable label for the wallet.
      - `exported_at` number, nullable, required — Unix timestamp of when the wallet was exported in milliseconds, if the wallet was exported.
      - `external_id` string — A customer-provided identifier for mapping to external systems. Write-once, set only at creation.
      - `id` string, required — Unique ID of the wallet. This will be the primary identifier when using the wallet in the future.
      - `imported_at` number, nullable, required — Unix timestamp of when the wallet was imported in milliseconds, if the wallet was imported.
      - `owner_id` string, cuid2, nullable, required — The key quorum ID of the owner of the wallet.
      - `policy_ids` string[], required — List of policy IDs for policies that are enforced on the wallet.
      - `public_key` string — The compressed, raw public key for the wallet along the chain cryptographic curve.
    - `intent_type` 'TRANSFER', required
    - `request_details` object, required — The original transfer request that would be sent to the wallet transfer endpoint
      - `body` TransferRequestBody, required — Request body for initiating a sponsored token transfer from an embedded wallet.
        - `amount` string — Amount as a decimal string in the token's standard unit (e.g. "1.5" for 1.5 USDC). For exact_input, the amount to send. For exact_output, the exact amount to receive. Takes precedence over source.amount when both are provided.
        - `amount_type` 'exact_input' | 'exact_output' — Whether the amount refers to the input token or output token.
        - `destination` TokenTransferDestination, required — The destination address for a token transfer. Optionally specify a different asset or chain for cross-asset or cross-chain transfers.
          - `address` union, required — Recipient address (hex for EVM, base58 for Solana, base58check for Tron)
            - string
            - string
            - string — Tron address: base58check-encoded, starting with T, 34 characters.
          - `asset` string — The destination asset. Required for cross-asset transfers (e.g., source 'usdt' to destination 'usdc').
          - `chain` string — The destination blockchain network. Required for cross-chain transfers (e.g., source 'base' to destination 'arbitrum').
        - `fee_configuration` object — Optional fee configuration for the transfer. If omitted, cross-chain transfers will not charge additional fees.
          - `type` 'total_fee_bps', required — Discriminator: total fee specified in BPS.
          - `value` integer, required — Total fee in basis points (1 bps = 0.01%).
        - `slippage_bps` integer — Maximum allowed slippage in basis points (1 bps = 0.01%). Only applicable for cross-chain or cross-asset transfers; omit to use the provider default.
        - `source` union, required — The source asset, amount, and chain for a token transfer. Specify either `asset` (named) or `asset_address` (custom), not both.
          - object — Source for a transfer identified by a named asset (e.g. "usdc", "eth"). Use this variant for first-class assets maintained by Privy.
            - `amount` string — Amount as a decimal string in the token's standard unit (e.g. "1.5" for 1.5 USDC, "0.01" for 0.01 ETH). For exact_input, specifies the amount to send. Not in the smallest on-chain unit (wei, lamports, etc.). Maximum 100 characters. Deprecated: use the top-level `amount` field instead.
            - `asset` string, required — The asset to transfer. Supported: 'usdc', 'usdb', 'usdt' (stablecoins), 'eth' (native Ethereum), 'sol' (native Solana).
            - `chain` string, required — The blockchain network on which to perform the transfer. Supported chains include: 'ethereum', 'base', 'arbitrum', 'polygon', 'solana', and their respective testnets.
          - object — Source for a transfer identified by a token contract address (EVM) or mint address (Solana). Use this variant for tokens that are not first-class assets.
            - `amount` string — Amount as a decimal string in the token's standard unit (e.g. "1.5" for 1.5 USDC, "0.01" for 0.01 ETH). For exact_input, specifies the amount to send. Not in the smallest on-chain unit (wei, lamports, etc.). Maximum 100 characters. Deprecated: use the top-level `amount` field instead.
            - `asset_address` union, required — The token contract address (EVM) or mint address (Solana) of the asset to transfer.
              - …
            - `chain` string, required — The blockchain network on which to perform the transfer. Supported chains include: 'ethereum', 'base', 'arbitrum', 'polygon', 'solana', and their respective testnets.
      - `method` 'POST', required
      - `url` string, required
  - object — Response for a wallet intent
    - `authorization_details` IntentAuthorization[], required — Detailed authorization information including key quorum members, thresholds, and signature status
      - `display_name` string — Display name of the key quorum
      - `members` IntentAuthorizationMember[], required — Members in this authorization quorum
        - union — A member of an intent authorization quorum. Can be a user, key, or nested key quorum.
          - object — A user member of an intent authorization quorum.
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'user', required
            - `user_id` string, required — User ID of the key quorum member
          - object — A key member of an intent authorization quorum.
            - `public_key` string, required — Public key of the key quorum member
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'key', required
          - object — A nested key quorum member of an intent authorization quorum.
            - `display_name` string — Display name for the child key quorum (if any)
            - `key_quorum_id` string, required — ID of the child key quorum member
            - `members` IntentAuthorizationKeyQuorumMember[], required — Members of this child quorum
              - …
            - `threshold` number, required — Number of signatures required from this child quorum
            - `threshold_met` boolean, required — Whether this child key quorum has met its signature threshold
            - `type` 'key_quorum', required
      - `threshold` number, required — Number of signatures required to satisfy this quorum
    - `created_at` number, required — Unix timestamp when the intent was created
    - `created_by_display_name` string, required — Display name of the user who created the intent
    - `created_by_id` string — ID of the user who created the intent. If undefined, the intent was created using the app secret
    - `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.
    - `dismissal_reason` string — Human-readable reason for dismissal, present when status is 'dismissed'
    - `dismissed_at` number — Unix timestamp when the intent was dismissed, present when status is 'dismissed'
    - `expires_at` number, required — Unix timestamp when the intent expires
    - `intent_id` string, required — Unique ID for the intent
    - `rejected_at` number — Unix timestamp when the intent was rejected, present when status is 'rejected'
    - `resource_id` string, required — ID of the resource being modified (wallet_id, policy_id, etc)
    - `status` 'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed', required — Current status of an intent.
    - `action_result` object — Result of wallet update execution (only present if status is 'executed' or 'failed')
      - `authorized_by_display_name` string — Display name of the key quorum that authorized execution
      - `authorized_by_id` string — ID of the key quorum that authorized execution
      - `executed_at` number, required — Unix timestamp when the action was executed
      - `status_code` number, required — HTTP status code from the action execution
      - `prior_state` object, required — State of the wallet immediately before execution
        - `additional_signers` WalletAdditionalSignerItem[], required — Additional signers for the wallet.
          - `override_policy_ids` string[] — An optional list of up to one policy ID to enforce on the wallet.
          - `signer_id` string, cuid2, required — A unique identifier for a key quorum.
        - `address` string, required — Address of the wallet.
        - `archived_at` number, nullable — Unix timestamp of when the wallet was archived in milliseconds, or null if the wallet is active.
        - `authorization_threshold` number — The number of keys that must sign for an action to be valid.
        - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
        - `created_at` number, required — Unix timestamp of when the wallet was created in milliseconds.
        - `custody` WalletCustodian — Information about the custodian managing this wallet.
          - `provider` string, required — The custodian responsible for the wallet.
          - `provider_user_id` string, required — The resource ID of the beneficiary of the custodial wallet.
        - `display_name` string — A human-readable label for the wallet.
        - `exported_at` number, nullable, required — Unix timestamp of when the wallet was exported in milliseconds, if the wallet was exported.
        - `external_id` string — A customer-provided identifier for mapping to external systems. Write-once, set only at creation.
        - `id` string, required — Unique ID of the wallet. This will be the primary identifier when using the wallet in the future.
        - `imported_at` number, nullable, required — Unix timestamp of when the wallet was imported in milliseconds, if the wallet was imported.
        - `owner_id` string, cuid2, nullable, required — The key quorum ID of the owner of the wallet.
        - `policy_ids` string[], required — List of policy IDs for policies that are enforced on the wallet.
        - `public_key` string — The compressed, raw public key for the wallet along the chain cryptographic curve.
      - `response_body` Wallet, required — A wallet managed by Privy's wallet infrastructure.
        - `additional_signers` WalletAdditionalSignerItem[], required — Additional signers for the wallet.
          - `override_policy_ids` string[] — An optional list of up to one policy ID to enforce on the wallet.
          - `signer_id` string, cuid2, required — A unique identifier for a key quorum.
        - `address` string, required — Address of the wallet.
        - `archived_at` number, nullable — Unix timestamp of when the wallet was archived in milliseconds, or null if the wallet is active.
        - `authorization_threshold` number — The number of keys that must sign for an action to be valid.
        - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
        - `created_at` number, required — Unix timestamp of when the wallet was created in milliseconds.
        - `custody` WalletCustodian — Information about the custodian managing this wallet.
          - `provider` string, required — The custodian responsible for the wallet.
          - `provider_user_id` string, required — The resource ID of the beneficiary of the custodial wallet.
        - `display_name` string — A human-readable label for the wallet.
        - `exported_at` number, nullable, required — Unix timestamp of when the wallet was exported in milliseconds, if the wallet was exported.
        - `external_id` string — A customer-provided identifier for mapping to external systems. Write-once, set only at creation.
        - `id` string, required — Unique ID of the wallet. This will be the primary identifier when using the wallet in the future.
        - `imported_at` number, nullable, required — Unix timestamp of when the wallet was imported in milliseconds, if the wallet was imported.
        - `owner_id` string, cuid2, nullable, required — The key quorum ID of the owner of the wallet.
        - `policy_ids` string[], required — List of policy IDs for policies that are enforced on the wallet.
        - `public_key` string — The compressed, raw public key for the wallet along the chain cryptographic curve.
    - `current_resource_data` object — Current state of the wallet before any changes. If undefined, the resource was deleted and no longer exists
      - `additional_signers` WalletAdditionalSignerItem[], required — Additional signers for the wallet.
        - `override_policy_ids` string[] — An optional list of up to one policy ID to enforce on the wallet.
        - `signer_id` string, cuid2, required — A unique identifier for a key quorum.
      - `address` string, required — Address of the wallet.
      - `archived_at` number, nullable — Unix timestamp of when the wallet was archived in milliseconds, or null if the wallet is active.
      - `authorization_threshold` number — The number of keys that must sign for an action to be valid.
      - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
      - `created_at` number, required — Unix timestamp of when the wallet was created in milliseconds.
      - `custody` WalletCustodian — Information about the custodian managing this wallet.
        - `provider` string, required — The custodian responsible for the wallet.
        - `provider_user_id` string, required — The resource ID of the beneficiary of the custodial wallet.
      - `display_name` string — A human-readable label for the wallet.
      - `exported_at` number, nullable, required — Unix timestamp of when the wallet was exported in milliseconds, if the wallet was exported.
      - `external_id` string — A customer-provided identifier for mapping to external systems. Write-once, set only at creation.
      - `id` string, required — Unique ID of the wallet. This will be the primary identifier when using the wallet in the future.
      - `imported_at` number, nullable, required — Unix timestamp of when the wallet was imported in milliseconds, if the wallet was imported.
      - `owner_id` string, cuid2, nullable, required — The key quorum ID of the owner of the wallet.
      - `policy_ids` string[], required — List of policy IDs for policies that are enforced on the wallet.
      - `public_key` string — The compressed, raw public key for the wallet along the chain cryptographic curve.
    - `intent_type` 'WALLET', required
    - `request_details` object, required — The original wallet update request that would be sent to the wallet endpoint
      - `body` object, required
        - `additional_signers` AdditionalSignerItemInput[] — Additional signers for the wallet.
          - `override_policy_ids` string[] — An optional list of up to one policy ID to enforce on the wallet.
          - `signer_id` string, cuid2, required — A unique identifier for a key quorum.
        - `authorization_key_ids` string[]
        - `authorization_threshold` number
        - `display_name` string, nullable
        - `owner` union — The owner of the resource, specified as a Privy user ID, a P-256 public key, or null to remove the current owner.
          - object — Owner input specifying a Privy user ID.
            - `user_id` string, required
          - object — Owner input specifying a P-256 public key.
            - `public_key` string, required — A P-256 (secp256r1) public key.
        - `owner_id` string, cuid2, nullable — The key quorum ID to set as the owner of the resource. If you provide this, do not specify an owner.
        - `policy_ids` string[] — An optional list of up to one policy ID to enforce on the wallet.
      - `method` 'PATCH', required
      - `url` string, required
  - object — Response for a policy intent
    - `authorization_details` IntentAuthorization[], required — Detailed authorization information including key quorum members, thresholds, and signature status
      - `display_name` string — Display name of the key quorum
      - `members` IntentAuthorizationMember[], required — Members in this authorization quorum
        - union — A member of an intent authorization quorum. Can be a user, key, or nested key quorum.
          - object — A user member of an intent authorization quorum.
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'user', required
            - `user_id` string, required — User ID of the key quorum member
          - object — A key member of an intent authorization quorum.
            - `public_key` string, required — Public key of the key quorum member
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'key', required
          - object — A nested key quorum member of an intent authorization quorum.
            - `display_name` string — Display name for the child key quorum (if any)
            - `key_quorum_id` string, required — ID of the child key quorum member
            - `members` IntentAuthorizationKeyQuorumMember[], required — Members of this child quorum
              - …
            - `threshold` number, required — Number of signatures required from this child quorum
            - `threshold_met` boolean, required — Whether this child key quorum has met its signature threshold
            - `type` 'key_quorum', required
      - `threshold` number, required — Number of signatures required to satisfy this quorum
    - `created_at` number, required — Unix timestamp when the intent was created
    - `created_by_display_name` string, required — Display name of the user who created the intent
    - `created_by_id` string — ID of the user who created the intent. If undefined, the intent was created using the app secret
    - `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.
    - `dismissal_reason` string — Human-readable reason for dismissal, present when status is 'dismissed'
    - `dismissed_at` number — Unix timestamp when the intent was dismissed, present when status is 'dismissed'
    - `expires_at` number, required — Unix timestamp when the intent expires
    - `intent_id` string, required — Unique ID for the intent
    - `rejected_at` number — Unix timestamp when the intent was rejected, present when status is 'rejected'
    - `resource_id` string, required — ID of the resource being modified (wallet_id, policy_id, etc)
    - `status` 'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed', required — Current status of an intent.
    - `action_result` object — Result of policy update execution (only present if status is 'executed' or 'failed')
      - `authorized_by_display_name` string — Display name of the key quorum that authorized execution
      - `authorized_by_id` string — ID of the key quorum that authorized execution
      - `executed_at` number, required — Unix timestamp when the action was executed
      - `status_code` number, required — HTTP status code from the action execution
      - `prior_state` object, required — State of the policy immediately before execution
        - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
        - `created_at` number, required — Unix timestamp of when the policy was created in milliseconds.
        - `id` string, required — Unique ID of the created policy. This will be the primary identifier when using the policy in the future.
        - `name` string, required — Name to assign to policy.
        - `owner_id` string, cuid2, required — A unique identifier for a key quorum.
        - `rules` PolicyRuleResponse[], required
          - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
          - `conditions` PolicyCondition[], required
            - union — A condition that must be true for the rule action to be applied.
              - …
          - `id` string, required
          - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
          - `name` string, required
        - `version` '1.0', required — Version of the policy. Currently, 1.0 is the only version.
      - `response_body` Policy, required — A policy for controlling wallet operations.
        - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
        - `created_at` number, required — Unix timestamp of when the policy was created in milliseconds.
        - `id` string, required — Unique ID of the created policy. This will be the primary identifier when using the policy in the future.
        - `name` string, required — Name to assign to policy.
        - `owner_id` string, cuid2, required — A unique identifier for a key quorum.
        - `rules` PolicyRuleResponse[], required
          - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
          - `conditions` PolicyCondition[], required
            - union — A condition that must be true for the rule action to be applied.
              - …
          - `id` string, required
          - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
          - `name` string, required
        - `version` '1.0', required — Version of the policy. Currently, 1.0 is the only version.
    - `current_resource_data` object — Current state of the policy before any changes. If undefined, the resource was deleted and no longer exists
      - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
      - `created_at` number, required — Unix timestamp of when the policy was created in milliseconds.
      - `id` string, required — Unique ID of the created policy. This will be the primary identifier when using the policy in the future.
      - `name` string, required — Name to assign to policy.
      - `owner_id` string, cuid2, required — A unique identifier for a key quorum.
      - `rules` PolicyRuleResponse[], required
        - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
        - `conditions` PolicyCondition[], required
          - union — A condition that must be true for the rule action to be applied.
            - object — The verbatim Ethereum transaction object in an eth_signTransaction or eth_sendTransaction request.
              - …
            - object — The decoded calldata in a smart contract interaction as the smart contract method's parameters. Note that 'ethereum_calldata' conditions must contain an abi parameter with the JSON ABI of the smart contract.
              - …
            - object — Attributes from the signing domain that will verify the signature.
              - …
            - object — 'types' and 'primary_type' attributes of the TypedData JSON object defined in EIP-712.
              - …
            - object — Allowed contract addresses for eth_sign7702Authorization requests.
              - …
            - object — A Tempo (type 118) transaction-level field. Evaluated once per transaction (not per call).
              - …
            - object — Solana Program attributes, enables allowlisting Solana Programs.
              - …
            - object — Solana System Program attributes, including more granular Transfer instruction fields.
              - …
            - object — Solana Token Program attributes, including more granular TransferChecked instruction fields.
              - …
            - object — System attributes, including current unix timestamp (in seconds).
              - …
            - object — TRON transaction fields for TransferContract and TriggerSmartContract transaction types.
              - …
            - object — Decoded calldata from a TRON TriggerSmartContract interaction.
              - …
            - object — SUI transaction command attributes, enables allowlisting specific command types. Allowed commands: 'TransferObjects', 'SplitCoins', 'MergeCoins'. Only 'eq' and 'in' operators are supported.
              - …
            - object — SUI TransferObjects command attributes, including recipient and amount fields.
              - …
            - object — Condition on the original wallet action API request body fields.
              - …
            - object — Condition referencing an aggregation value. The field must start with "aggregation." followed by the aggregation ID.
              - …
            - object — Condition on the message being signed (e.g. in personal_sign).
              - …
        - `id` string, required
        - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
        - `name` string, required
      - `version` '1.0', required — Version of the policy. Currently, 1.0 is the only version.
    - `intent_type` 'POLICY', required
    - `request_details` object, required — The original policy update request that would be sent to the policy endpoint
      - `body` object, required
        - `name` string — Name to assign to policy.
        - `owner` union — The owner of the resource, specified as a Privy user ID, a P-256 public key, or null to remove the current owner.
          - object — Owner input specifying a Privy user ID.
            - `user_id` string, required
          - object — Owner input specifying a P-256 public key.
            - `public_key` string, required — A P-256 (secp256r1) public key.
        - `owner_id` string, cuid2, nullable — The key quorum ID to set as the owner of the resource. If you provide this, do not specify an owner.
        - `rules` PolicyRuleRequestBody[]
          - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
          - `conditions` PolicyCondition[], required
            - union — A condition that must be true for the rule action to be applied.
              - …
          - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
          - `name` string, required
      - `method` 'PATCH', required
      - `url` string, required
  - object — Response for a rule intent
    - `authorization_details` IntentAuthorization[], required — Detailed authorization information including key quorum members, thresholds, and signature status
      - `display_name` string — Display name of the key quorum
      - `members` IntentAuthorizationMember[], required — Members in this authorization quorum
        - union — A member of an intent authorization quorum. Can be a user, key, or nested key quorum.
          - object — A user member of an intent authorization quorum.
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'user', required
            - `user_id` string, required — User ID of the key quorum member
          - object — A key member of an intent authorization quorum.
            - `public_key` string, required — Public key of the key quorum member
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'key', required
          - object — A nested key quorum member of an intent authorization quorum.
            - `display_name` string — Display name for the child key quorum (if any)
            - `key_quorum_id` string, required — ID of the child key quorum member
            - `members` IntentAuthorizationKeyQuorumMember[], required — Members of this child quorum
              - …
            - `threshold` number, required — Number of signatures required from this child quorum
            - `threshold_met` boolean, required — Whether this child key quorum has met its signature threshold
            - `type` 'key_quorum', required
      - `threshold` number, required — Number of signatures required to satisfy this quorum
    - `created_at` number, required — Unix timestamp when the intent was created
    - `created_by_display_name` string, required — Display name of the user who created the intent
    - `created_by_id` string — ID of the user who created the intent. If undefined, the intent was created using the app secret
    - `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.
    - `dismissal_reason` string — Human-readable reason for dismissal, present when status is 'dismissed'
    - `dismissed_at` number — Unix timestamp when the intent was dismissed, present when status is 'dismissed'
    - `expires_at` number, required — Unix timestamp when the intent expires
    - `intent_id` string, required — Unique ID for the intent
    - `rejected_at` number — Unix timestamp when the intent was rejected, present when status is 'rejected'
    - `resource_id` string, required — ID of the resource being modified (wallet_id, policy_id, etc)
    - `status` 'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed', required — Current status of an intent.
    - `action_result` object — Result of rule execution (only present if status is 'executed' or 'failed')
      - `authorized_by_display_name` string — Display name of the key quorum that authorized execution
      - `authorized_by_id` string — ID of the key quorum that authorized execution
      - `executed_at` number, required — Unix timestamp when the action was executed
      - `status_code` number, required — HTTP status code from the action execution
      - `prior_state` object — State of the rule immediately before execution. Undefined for create intents
        - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
        - `conditions` PolicyCondition[], required
          - union — A condition that must be true for the rule action to be applied.
            - object — The verbatim Ethereum transaction object in an eth_signTransaction or eth_sendTransaction request.
              - …
            - object — The decoded calldata in a smart contract interaction as the smart contract method's parameters. Note that 'ethereum_calldata' conditions must contain an abi parameter with the JSON ABI of the smart contract.
              - …
            - object — Attributes from the signing domain that will verify the signature.
              - …
            - object — 'types' and 'primary_type' attributes of the TypedData JSON object defined in EIP-712.
              - …
            - object — Allowed contract addresses for eth_sign7702Authorization requests.
              - …
            - object — A Tempo (type 118) transaction-level field. Evaluated once per transaction (not per call).
              - …
            - object — Solana Program attributes, enables allowlisting Solana Programs.
              - …
            - object — Solana System Program attributes, including more granular Transfer instruction fields.
              - …
            - object — Solana Token Program attributes, including more granular TransferChecked instruction fields.
              - …
            - object — System attributes, including current unix timestamp (in seconds).
              - …
            - object — TRON transaction fields for TransferContract and TriggerSmartContract transaction types.
              - …
            - object — Decoded calldata from a TRON TriggerSmartContract interaction.
              - …
            - object — SUI transaction command attributes, enables allowlisting specific command types. Allowed commands: 'TransferObjects', 'SplitCoins', 'MergeCoins'. Only 'eq' and 'in' operators are supported.
              - …
            - object — SUI TransferObjects command attributes, including recipient and amount fields.
              - …
            - object — Condition on the original wallet action API request body fields.
              - …
            - object — Condition referencing an aggregation value. The field must start with "aggregation." followed by the aggregation ID.
              - …
            - object — Condition on the message being signed (e.g. in personal_sign).
              - …
        - `id` string, required
        - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
        - `name` string, required
      - `response_body` union
        - PolicyRuleResponse — A rule that defines the conditions and action to take if the conditions are true.
          - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
          - `conditions` PolicyCondition[], required
            - union — A condition that must be true for the rule action to be applied.
              - …
          - `id` string, required
          - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
          - `name` string, required
        - SuccessResponse — A simple success response.
          - `success` boolean, required
    - `current_resource_data` object — Current state of the rule before any changes. Undefined for create intents or if the rule was deleted
      - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
      - `conditions` PolicyCondition[], required
        - union — A condition that must be true for the rule action to be applied.
          - object — The verbatim Ethereum transaction object in an eth_signTransaction or eth_sendTransaction request.
            - `field` 'to' | 'value' | 'chain_id', required — Ethereum transaction-level fields that can be referenced in a policy condition.
            - `field_source` 'ethereum_transaction', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — The decoded calldata in a smart contract interaction as the smart contract method's parameters. Note that 'ethereum_calldata' conditions must contain an abi parameter with the JSON ABI of the smart contract.
            - `abi` object[], required — A Solidity ABI definition for decoding smart contract calldata.
              - …
            - `field` string, required
            - `field_source` 'ethereum_calldata', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Attributes from the signing domain that will verify the signature.
            - `field` 'chainId' | 'verifyingContract' | 'chain_id' | 'verifying_contract', required — Supported fields for Ethereum typed data domain conditions.
            - `field_source` 'ethereum_typed_data_domain', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — 'types' and 'primary_type' attributes of the TypedData JSON object defined in EIP-712.
            - `field` string, required
            - `field_source` 'ethereum_typed_data_message', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `typed_data` TypedDataInput, required — The typed data structure containing EIP-712 types and the primary type for typed data message policy conditions.
              - …
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Allowed contract addresses for eth_sign7702Authorization requests.
            - `field` 'contract', required
            - `field_source` 'ethereum_7702_authorization', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — A Tempo (type 118) transaction-level field. Evaluated once per transaction (not per call).
            - `field` 'fee_token' | 'fee_payer_signature' | 'nonce_key' | 'valid_before' | 'valid_after', required — Tempo (type 118) transaction-level fields that can be referenced in a policy condition.
            - `field_source` 'tempo_transaction', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Solana Program attributes, enables allowlisting Solana Programs.
            - `field` 'programId', required
            - `field_source` 'solana_program_instruction', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Solana System Program attributes, including more granular Transfer instruction fields.
            - `field` 'instructionName' | 'Transfer.from' | 'Transfer.to' | 'Transfer.lamports', required — Supported fields for Solana System Program conditions including Transfer instruction fields.
            - `field_source` 'solana_system_program_instruction', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Solana Token Program attributes, including more granular TransferChecked instruction fields.
            - `field` 'instructionName' | 'Transfer.source' | 'Transfer.destination' | 'Transfer.authority' | 'Transfer.amount' | 'TransferChecked.source' | 'TransferChecked.destination' | 'TransferChecked.authority' | 'TransferChecked.amount' | 'TransferChecked.mint' | 'Burn.account' | 'Burn.mint' | 'Burn.authority' | 'Burn.amount' | 'MintTo.mint' | 'MintTo.account' | 'MintTo.authority' | 'MintTo.amount' | 'CloseAccount.account' | 'CloseAccount.destination' | 'CloseAccount.authority' | 'InitializeAccount3.account' | 'InitializeAccount3.mint' | 'InitializeAccount3.owner', required — Supported fields for Solana Token Program conditions including Transfer, TransferChecked, Burn, MintTo, CloseAccount, and InitializeAccount3 instruction fields.
            - `field_source` 'solana_token_program_instruction', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — System attributes, including current unix timestamp (in seconds).
            - `field` 'current_unix_timestamp', required
            - `field_source` 'system', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — TRON transaction fields for TransferContract and TriggerSmartContract transaction types.
            - `field` 'TransferContract.to_address' | 'TransferContract.amount' | 'TriggerSmartContract.contract_address' | 'TriggerSmartContract.call_value' | 'TriggerSmartContract.token_id' | 'TriggerSmartContract.call_token_value', required — Supported TRON transaction fields for TransferContract and TriggerSmartContract in format "TransactionType.field_name".
            - `field_source` 'tron_transaction', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Decoded calldata from a TRON TriggerSmartContract interaction.
            - `abi` object[], required — A Solidity ABI definition for decoding smart contract calldata.
              - …
            - `field` string, required
            - `field_source` 'tron_trigger_smart_contract_data', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — SUI transaction command attributes, enables allowlisting specific command types. Allowed commands: 'TransferObjects', 'SplitCoins', 'MergeCoins'. Only 'eq' and 'in' operators are supported.
            - `field` 'commandName', required
            - `field_source` 'sui_transaction_command', required
            - `operator` union, required — Operator to use for SUI transaction command conditions. Only 'eq' and 'in' are supported for command names.
              - …
            - `value` union, required — Command name(s) to match. Must be one of: 'TransferObjects', 'SplitCoins', 'MergeCoins'
              - …
          - object — SUI TransferObjects command attributes, including recipient and amount fields.
            - `field` 'recipient' | 'amount', required — Supported fields for SUI TransferObjects command conditions. Only 'recipient' and 'amount' are supported.
            - `field_source` 'sui_transfer_objects_command', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Condition on the original wallet action API request body fields.
            - `field` string, required
            - `field_source` 'action_request_body', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Condition referencing an aggregation value. The field must start with "aggregation." followed by the aggregation ID.
            - `field` string, required
            - `field_source` 'reference', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
          - object — Condition on the message being signed (e.g. in personal_sign).
            - `field` 'content' | 'byte_length', required — Supported fields for message signing conditions.
            - `field_source` 'message', required
            - `operator` 'eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'in_condition_set' | 'contains' | 'starts_with' | 'ends_with', required — Operator to use for policy conditions.
            - `value` union, required — Value to compare against in a policy condition. Can be a single string or an array of strings.
              - …
      - `id` string, required
      - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
      - `name` string, required
    - `intent_type` 'RULE', required
    - `policy` object — Parent policy containing this rule, including sibling rules for contextual display
      - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
      - `created_at` number, required — Unix timestamp of when the policy was created in milliseconds.
      - `id` string, required — Unique ID of the created policy. This will be the primary identifier when using the policy in the future.
      - `name` string, required — Name to assign to policy.
      - `owner_id` string, cuid2, required — A unique identifier for a key quorum.
      - `rules` PolicyRuleResponse[], required
        - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
        - `conditions` PolicyCondition[], required
          - union — A condition that must be true for the rule action to be applied.
            - object — The verbatim Ethereum transaction object in an eth_signTransaction or eth_sendTransaction request.
              - …
            - object — The decoded calldata in a smart contract interaction as the smart contract method's parameters. Note that 'ethereum_calldata' conditions must contain an abi parameter with the JSON ABI of the smart contract.
              - …
            - object — Attributes from the signing domain that will verify the signature.
              - …
            - object — 'types' and 'primary_type' attributes of the TypedData JSON object defined in EIP-712.
              - …
            - object — Allowed contract addresses for eth_sign7702Authorization requests.
              - …
            - object — A Tempo (type 118) transaction-level field. Evaluated once per transaction (not per call).
              - …
            - object — Solana Program attributes, enables allowlisting Solana Programs.
              - …
            - object — Solana System Program attributes, including more granular Transfer instruction fields.
              - …
            - object — Solana Token Program attributes, including more granular TransferChecked instruction fields.
              - …
            - object — System attributes, including current unix timestamp (in seconds).
              - …
            - object — TRON transaction fields for TransferContract and TriggerSmartContract transaction types.
              - …
            - object — Decoded calldata from a TRON TriggerSmartContract interaction.
              - …
            - object — SUI transaction command attributes, enables allowlisting specific command types. Allowed commands: 'TransferObjects', 'SplitCoins', 'MergeCoins'. Only 'eq' and 'in' operators are supported.
              - …
            - object — SUI TransferObjects command attributes, including recipient and amount fields.
              - …
            - object — Condition on the original wallet action API request body fields.
              - …
            - object — Condition referencing an aggregation value. The field must start with "aggregation." followed by the aggregation ID.
              - …
            - object — Condition on the message being signed (e.g. in personal_sign).
              - …
        - `id` string, required
        - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
        - `name` string, required
      - `version` '1.0', required — Version of the policy. Currently, 1.0 is the only version.
    - `request_details` union, required — The original rule request. Method is POST (create), PATCH (update), or DELETE (delete)
      - object — Request details for creating a rule via intent.
        - `body` PolicyRuleRequestBody, required — The rules that apply to each method the policy covers.
          - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
          - `conditions` PolicyCondition[], required
            - union — A condition that must be true for the rule action to be applied.
              - …
          - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
          - `name` string, required
        - `method` 'POST', required
        - `url` string, required
      - object — Request details for updating a rule via intent.
        - `body` PolicyRuleRequestBody, required — The rules that apply to each method the policy covers.
          - `action` 'ALLOW' | 'DENY', required — The action to take when a policy rule matches.
          - `conditions` PolicyCondition[], required
            - union — A condition that must be true for the rule action to be applied.
              - …
          - `method` 'eth_sendTransaction' | 'eth_signTransaction' | 'eth_signUserOperation' | 'eth_signTypedData_v4' | 'personal_sign' | 'eth_sign7702Authorization' | 'wallet_sendCalls' | 'signTransaction' | 'signAndSendTransaction' | 'signMessage' | 'exportPrivateKey' | 'exportSeedPhrase' | 'signTransactionBytes' | 'signRawMessageBytes' | 'tron_sendTransaction' | 'tron_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'transfer' | '*', required — Method the rule applies to.
          - `name` string, required
        - `method` 'PATCH', required
        - `url` string, required
      - object — Request details for deleting a rule via intent.
        - `body` object — Empty request body for a rule delete intent.
        - `method` 'DELETE', required
        - `url` string, required
  - object — Response for a key quorum intent
    - `authorization_details` IntentAuthorization[], required — Detailed authorization information including key quorum members, thresholds, and signature status
      - `display_name` string — Display name of the key quorum
      - `members` IntentAuthorizationMember[], required — Members in this authorization quorum
        - union — A member of an intent authorization quorum. Can be a user, key, or nested key quorum.
          - object — A user member of an intent authorization quorum.
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'user', required
            - `user_id` string, required — User ID of the key quorum member
          - object — A key member of an intent authorization quorum.
            - `public_key` string, required — Public key of the key quorum member
            - `signed_at` number, nullable, required — Unix timestamp when this member signed, or null if not yet signed.
            - `type` 'key', required
          - object — A nested key quorum member of an intent authorization quorum.
            - `display_name` string — Display name for the child key quorum (if any)
            - `key_quorum_id` string, required — ID of the child key quorum member
            - `members` IntentAuthorizationKeyQuorumMember[], required — Members of this child quorum
              - …
            - `threshold` number, required — Number of signatures required from this child quorum
            - `threshold_met` boolean, required — Whether this child key quorum has met its signature threshold
            - `type` 'key_quorum', required
      - `threshold` number, required — Number of signatures required to satisfy this quorum
    - `created_at` number, required — Unix timestamp when the intent was created
    - `created_by_display_name` string, required — Display name of the user who created the intent
    - `created_by_id` string — ID of the user who created the intent. If undefined, the intent was created using the app secret
    - `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.
    - `dismissal_reason` string — Human-readable reason for dismissal, present when status is 'dismissed'
    - `dismissed_at` number — Unix timestamp when the intent was dismissed, present when status is 'dismissed'
    - `expires_at` number, required — Unix timestamp when the intent expires
    - `intent_id` string, required — Unique ID for the intent
    - `rejected_at` number — Unix timestamp when the intent was rejected, present when status is 'rejected'
    - `resource_id` string, required — ID of the resource being modified (wallet_id, policy_id, etc)
    - `status` 'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed', required — Current status of an intent.
    - `action_result` object — Result of key quorum update execution (only present if status is 'executed' or 'failed')
      - `authorized_by_display_name` string — Display name of the key quorum that authorized execution
      - `authorized_by_id` string — ID of the key quorum that authorized execution
      - `executed_at` number, required — Unix timestamp when the action was executed
      - `status_code` number, required — HTTP status code from the action execution
      - `prior_state` object, required — State of the key quorum immediately before execution
        - `authorization_keys` AuthorizationKey[], required
          - `display_name` string, nullable, required
          - `public_key` string, required
        - `authorization_threshold` number, nullable, required
        - `display_name` string, nullable, required
        - `id` string, cuid2, required
        - `key_quorum_ids` string[] — List of nested key quorum IDs that are members of this key quorum.
        - `user_ids` string[], nullable, required
      - `response_body` KeyQuorum, required — A key quorum for authorizing wallet operations.
        - `authorization_keys` AuthorizationKey[], required
          - `display_name` string, nullable, required
          - `public_key` string, required
        - `authorization_threshold` number, nullable, required
        - `display_name` string, nullable, required
        - `id` string, cuid2, required
        - `key_quorum_ids` string[] — List of nested key quorum IDs that are members of this key quorum.
        - `user_ids` string[], nullable, required
    - `current_resource_data` object — Current state of the key quorum before any changes. If undefined, the resource was deleted and no longer exists
      - `authorization_keys` AuthorizationKey[], required
        - `display_name` string, nullable, required
        - `public_key` string, required
      - `authorization_threshold` number, nullable, required
      - `display_name` string, nullable, required
      - `id` string, cuid2, required
      - `key_quorum_ids` string[] — List of nested key quorum IDs that are members of this key quorum.
      - `user_ids` string[], nullable, required
    - `intent_type` 'KEY_QUORUM', required
    - `request_details` object, required — The original key quorum update request that would be sent to the key quorum endpoint
      - `body` object, required — Request input for updating an existing key quorum. At least one field must be provided.
        - `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
        - `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.
        - `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.
        - `user_ids` string[] — List of user IDs of the users that should be authorized to sign on the key quorum.
      - `method` 'PATCH', required
      - `url` string, required

---

[API](https://skmtc.net/privy-io/apis/privy-api.md) · [All operations](https://skmtc.net/privy-io/apis/privy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/privy-io/privy-api/revisions/bb2eb34156cc/schema)
