---
title: "Create policy delete intent"
method: DELETE
path: "/v1/intents/policies/{policy_id}"
tags: ["Intents"]
---

# Create policy delete intent

`DELETE /v1/intents/policies/{policy_id}`

## Request

- Base URL: `https://api.privy.io`
- URL: `https://api.privy.io/v1/intents/policies/{policy_id}`
- Auth: HTTP basic

Create an intent to delete a policy. The intent must be authorized by the policy owner before it can be executed.

## Path parameters

- `policy_id` string, required: ID of the policy.

## Headers

- `privy-app-id` string, required: ID of your Privy app.
- `privy-request-expiry` string: Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the request must be processed.

## Response `200`

Created policy delete intent.

- PolicyDeleteIntentResponse: Response for a policy delete intent
  - `intent_id` string, required: Unique ID for the intent
  - `created_by_display_name` string, required: Display name of the user who created the intent
  - `created_by_id` string: ID of the user who created the intent. If undefined, the intent was created using the app secret
  - `created_at` number, required: Unix timestamp when the intent was created
  - `resource_id` string, required: ID of the resource being modified (wallet_id, policy_id, etc)
  - `authorization_details` IntentAuthorization[], required: Detailed authorization information including key quorum members, thresholds, and signature status
    - `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.
          - `type` 'user', required
          - `user_id` string, required: User ID of the key quorum member
          - `signed_at` number, nullable, required: Unix timestamp when this member signed, or null if not yet signed.
        - object: A key member of an intent authorization quorum.
          - `type` 'key', required
          - `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.
        - object: A nested key quorum member of an intent authorization quorum.
          - `type` 'key_quorum', required
          - `key_quorum_id` string, required: ID of the child key quorum member
          - `display_name` string: Display name for the child key quorum (if any)
          - `threshold_met` boolean, required: Whether this child key quorum has met its signature threshold
          - `threshold` number, required: Number of signatures required from this child quorum
          - `members` IntentAuthorizationKeyQuorumMember[], required: Members of this child quorum
            - union: A leaf member (user or key) of a nested key quorum in an intent authorization.
              - …
    - `threshold` number, required: Number of signatures required to satisfy this quorum
    - `display_name` string: Display name of the key quorum
  - `status` 'pending' | 'processing' | 'executed' | 'failed' | 'expired' | 'rejected' | 'dismissed', required: Current status of an intent.
  - `custom_expiry` boolean, required: Whether this intent has a custom expiry time set by the client. If false, the intent expires after a default duration.
  - `expires_at` number, required: Unix timestamp when the intent expires
  - `rejected_at` number: Unix timestamp when the intent was rejected, present when status is 'rejected'
  - `dismissed_at` number: Unix timestamp when the intent was dismissed, present when status is 'dismissed'
  - `dismissal_reason` string: Human-readable reason for dismissal, present when status is 'dismissed'
  - `intent_type` 'POLICY', required
  - `current_resource_data` object: Current state of the policy before any changes. If undefined, the resource was deleted and no longer exists
    - `version` '1.0', required: Version of the policy. Currently, 1.0 is the only version.
    - `name` string, required: Name to assign to the policy, up to 100 characters.
    - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'xrpl' | 'spark', required: The wallet chain types.
    - `id` string, required: Unique ID of the created policy. This will be the primary identifier when using the policy in the future.
    - `owner_id` string, cuid2, required: A unique identifier for a key quorum.
    - `created_at` number, required: Unix timestamp of when the policy was created in milliseconds.
    - `rules` PolicyRuleResponse[], required
      - `name` 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' | 'xrpl_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'earn_incentive_claim' | 'transfer' | '*', required: Method the rule applies to.
      - `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_source` 'ethereum_transaction', required
            - `field` 'to' | 'value' | 'chain_id' | 'data_byte_length', required: Ethereum transaction-level fields that can be referenced in a policy condition.
            - `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.
            - `field_source` 'ethereum_calldata', required
            - `field` string, required
            - `abi` object[], required: A Solidity ABI definition for decoding smart contract calldata.
              - …
            - `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_source` 'ethereum_typed_data_domain', required
            - `field` 'chainId' | 'verifyingContract' | 'chain_id' | 'verifying_contract', required: Supported fields for Ethereum typed data domain conditions.
            - `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_source` 'ethereum_typed_data_message', required
            - `field` string, required
            - `typed_data` TypedDataInput, required: The typed data structure containing EIP-712 types and the primary type for typed data message policy conditions.
              - …
            - `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: Allowed contract addresses for eth_sign7702Authorization requests.
            - `field_source` 'ethereum_7702_authorization', required
            - `field` 'contract', 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_source` 'tempo_transaction', required
            - `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.
            - `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_source` 'solana_program_instruction', required
            - `field` 'programId', 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 instruction arguments and named accounts interpreted using an inline Anchor IDL.
            - `field_source` 'solana_instruction_data', required
            - `field` string, required
            - `idl` SolanaIdl, required: A modern Anchor IDL containing selected instructions and their complete type dependencies.
            - `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_source` 'solana_system_program_instruction', required
            - `field` 'instructionName' | 'Transfer.from' | 'Transfer.to' | 'Transfer.lamports', required: Supported fields for Solana System Program conditions including Transfer instruction fields.
            - `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_source` 'solana_token_program_instruction', required
            - `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.
            - `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_source` 'system', required
            - `field` 'current_unix_timestamp', 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_source` 'tron_transaction', required
            - `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".
            - `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.
            - `field_source` 'tron_trigger_smart_contract_data', required
            - `field` string, required
            - `abi` object[], required: A Solidity ABI definition for decoding smart contract calldata.
              - …
            - `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: Policy condition evaluated against decoded XRPL transaction fields.
            - `field_source` 'xrpl_transaction', required
            - `field` 'TransactionType' | 'Payment.Destination' | 'Payment.DestinationTag' | 'Payment.Amount.drops' | 'Payment.Amount.value' | 'Payment.Amount.currency' | 'Payment.Amount.issuer' | 'Payment.SendMax.drops' | 'Payment.SendMax.value' | 'Payment.SendMax.currency' | 'Payment.SendMax.issuer' | 'Payment.DeliverMin.drops' | 'Payment.DeliverMin.value' | 'Payment.DeliverMin.currency' | 'Payment.DeliverMin.issuer' | 'OfferCreate.TakerPays.drops' | 'OfferCreate.TakerPays.value' | 'OfferCreate.TakerPays.currency' | 'OfferCreate.TakerPays.issuer' | 'OfferCreate.TakerGets.drops' | 'OfferCreate.TakerGets.value' | 'OfferCreate.TakerGets.currency' | 'OfferCreate.TakerGets.issuer' | 'OfferCreate.Expiration' | 'TrustSet.LimitAmount.value' | 'TrustSet.LimitAmount.currency' | 'TrustSet.LimitAmount.issuer' | 'TrustSet.QualityIn' | 'TrustSet.QualityOut', required: Supported XRPL transaction field paths for policy conditions.
            - `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_source` 'sui_transaction_command', required
            - `field` 'commandName', 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_source` 'sui_transfer_objects_command', required
            - `field` 'recipient' | 'amount', required: Supported fields for SUI TransferObjects command conditions. Only 'recipient' and 'amount' are supported.
            - `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_source` 'action_request_body', required
            - `field` string, 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_source` 'reference', required
            - `field` string, 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_source` 'message', required
            - `field` 'content' | 'byte_length', required: Supported fields for message signing conditions.
            - `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.
              - …
      - `action` 'ALLOW' | 'DENY', required: The action to take when a policy rule matches.
      - `id` string, required
  - `request_details` PolicyIntentDeleteRequestDetails, required: Request details for deleting a policy via intent.
    - `method` 'DELETE', required
    - `url` string, required
    - `body` object: Empty request body for a policy delete intent.
  - `action_result` object: Result of policy delete execution (only present if status is 'executed' or 'failed')
    - `status_code` number, required: HTTP status code from the action execution
    - `executed_at` number, required: Unix timestamp when the action was executed
    - `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
    - `response_body` SuccessResponse, required: A simple success response.
      - `success` boolean, required
    - `prior_state` object, required: State of the policy immediately before execution
      - `version` '1.0', required: Version of the policy. Currently, 1.0 is the only version.
      - `name` string, required: Name to assign to the policy, up to 100 characters.
      - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'xrpl' | 'spark', required: The wallet chain types.
      - `id` string, required: Unique ID of the created policy. This will be the primary identifier when using the policy in the future.
      - `owner_id` string, cuid2, required: A unique identifier for a key quorum.
      - `created_at` number, required: Unix timestamp of when the policy was created in milliseconds.
      - `rules` PolicyRuleResponse[], required
        - `name` 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' | 'xrpl_signTransaction' | 'earn_deposit' | 'earn_withdraw' | 'earn_incentive_claim' | 'transfer' | '*', required: Method the rule applies to.
        - `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 instruction arguments and named accounts interpreted using an inline Anchor IDL.
              - …
            - 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: Policy condition evaluated against decoded XRPL transaction fields.
              - …
            - 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).
              - …
        - `action` 'ALLOW' | 'DENY', required: The action to take when a policy rule matches.
        - `id` string, required

## Changes

- **2026-10-27** `3a2288470053`: 2 warning
  - added the new `earn_incentive_claim` enum value to the `allOf[subschema #2]/action_result/allOf[subschema #2]/prior_state/allOf[subschema #1: Policy]/rules/items/method` response property for the response status `200`
  - added the new `earn_incentive_claim` enum value to the `allOf[subschema #2]/current_resource_data/allOf[subschema #1: Policy]/rules/items/method` response property for the response status `200`
- **2026-10-26** `bc6468dfd728`: 2 breaking
  - the `allOf[subschema #2]/action_result/allOf[subschema #2]/prior_state/allOf[subschema #1: Policy]/name` response property's maxLength was increased from `50` to `100` for the response status `200`
  - the `allOf[subschema #2]/current_resource_data/allOf[subschema #1: Policy]/name` response property's maxLength was increased from `50` to `100` for the response status `200`
- **2026-10-20** `527110c2c2f4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/privy-io/apis/privy-api/changes/v1/intents/policies/:policy_id/delete.md)

---

[API](https://skmtc.dev/privy-io/apis/privy-api.md) - [All operations](https://skmtc.dev/privy-io/apis/privy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/privy-io/apis/privy-api/revisions/6a80d4be53a8?raw)
