---
title: "Deny a pending intent"
method: POST
path: "/approvals/{id}/deny"
tags: ["Approvals"]
---

# Deny a pending intent

`POST /approvals/{id}/deny`

A single deny resolves the intent even when partial approvals exist.

## Path parameters

- `id` string, required

## Request body

- object
  - `notes` string

## Response `200`

The denied intent

- object
  - `success` boolean, required
  - `intent` object, required
    - `id` string, required
    - `agentId` string, nullable, required
    - `agentName` string, nullable, required
    - `actorType` 'agent' | 'operator', required
    - `actorUserId` string
    - `accountId` string
    - `action` 'send' | 'transfer' | 'create_counterparty' | 'request_counterparty_details' | 'x402' | 'mpp' | 'policy_override', required
    - `actionData` union
      - object
        - `kind` 'send'
        - `method` 'ach' | 'wire' | 'on-chain', required
        - `memo` string
        - `description` string
      - object
        - `kind` 'x402', required
        - `paymentRequirements` object, required
        - `rawPaymentRequirements` object
        - `resource` object
        - `authorization` object
          - `from` string, required
          - `to` string, required
          - `value` string, required
          - `validAfter` string, required
          - `validBefore` string, required
          - `nonce` string, required
        - `authorizationSource` 'caller' | 'server'
        - `callerAuthorization` object
          - `from` string, required
          - `to` string, required
          - `value` string, required
          - `validAfter` string, required
          - `validBefore` string, required
          - `nonce` string, required
        - `preparedBodyHash` string
        - `prepareExpiresAt` string
        - `submitClaimedAt` string
        - `providerActivityId` string
        - `turnkeyFingerprint` string
        - `transactionId` string
        - `approveAttemptedAt` string
        - `paymentSignatureHeader` string
        - `signedOffer` object
        - `signedOfferVerification` object
          - `status` 'verified' | 'signer_unverified' | 'failed' | 'unsupported', required
          - `signer` string
          - `reason` string
          - `verifiedAt` string, required
          - `resourceUrl` string
          - `transaction` string
          - `transactionSource` 'chain' | 'reported'
        - `signedReceipt` object
        - `signedReceiptVerification` object
          - `status` 'verified' | 'signer_unverified' | 'failed' | 'unsupported', required
          - `signer` string
          - `reason` string
          - `verifiedAt` string, required
          - `resourceUrl` string
          - `transaction` string
          - `transactionSource` 'chain' | 'reported'
      - object
        - `kind` 'mpp', required
        - `approvalChallenge` object, required
          - `id` string, required
          - `realm` string, required
          - `method` 'evm' | 'usdc', required
          - `intent` 'charge', required
          - `request` string, required
          - `description` string
          - `digest` string
          - `expires` string, required
          - `header` 'Payment-Authorization'
          - `opaque` string
        - `approvalResource` object, required
          - `url` string, required
          - `serviceName` string
        - `approvalPayment` object, required
          - `amount` string, required
          - `chainId` number, required
          - `currency` unknown, required
          - `externalId` string
          - `method` 'evm' | 'usdc', required
          - `network` 'base' | 'base-sepolia', required
          - `recipient` unknown, required
        - `executionChallenge` object
          - `id` string, required
          - `realm` string, required
          - `method` 'evm' | 'usdc', required
          - `intent` 'charge', required
          - `request` string, required
          - `description` string
          - `digest` string
          - `expires` string, required
          - `header` 'Payment-Authorization'
          - `opaque` string
        - `executionResource` object
          - `url` string, required
          - `serviceName` string
        - `executionPayment` object
          - `amount` string, required
          - `chainId` number, required
          - `currency` unknown, required
          - `externalId` string
          - `method` 'evm' | 'usdc', required
          - `network` 'base' | 'base-sepolia', required
          - `recipient` unknown, required
        - `authorization` object
          - `from` string, required
          - `to` string, required
          - `value` string, required
          - `validAfter` string, required
          - `validBefore` string, required
          - `nonce` string, required
        - `preparedBodyHash` string
        - `prepareExpiresAt` string
        - `submitClaimedAt` string
        - `providerActivityId` string
        - `turnkeyFingerprint` string
        - `transactionId` string
        - `approveAttemptedAt` string
        - `paymentCredential` string
      - object
        - `kind` 'policy_override', required
        - `schemaVersion` unknown, required
        - `operations` union[], required
          - union
            - object
              - …
            - object
              - …
        - `durationSeconds` number, required
        - `reason` string, required
        - `approvedBasePolicyId` string
        - `approvedBaseVersion` number
        - `approvedOverrideSlot` object
          - `activeGrantId` string, nullable, required
          - `grantCount` integer, required
        - `resultPolicyId` string
        - `resultGrantId` string
      - object
        - `kind` 'policy_override', required
        - `schemaVersion` unknown, required
        - `operations` union[], required
          - union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
        - `durationSeconds` number, required
        - `reason` string, required
        - `resultPolicyId` string
        - `resultGrantId` string
      - object
        - `kind` 'policy_override', required
        - `schemaVersion` integer, required
      - object
        - `kind` 'transfer'
        - `memo` string
        - `description` string
      - object
        - `kind` 'create_counterparty', required
        - `name` string, required
        - `email` string
        - `rail` unknown
        - `resultCounterpartyId` string
      - object
        - `kind` 'request_counterparty_details', required
        - `methods` object, required
          - `bank` boolean, required
          - `wallet` boolean, required
    - `amount` object
      - `amount` string, required
      - `asset_id` string, required
    - `counterpartyName` string
    - `state` 'created' | 'evaluating' | 'approved' | 'pending_approval' | 'blocked' | 'denied' | 'expired' | 'executing' | 'completed' | 'failed', required
    - `decision` 'approved' | 'pending_approval' | 'blocked', nullable, required
    - `reasons` string[], required
    - `createdAt` string, date-time, required
    - `resolvedAt` string, date-time, nullable, required
    - `expiresAt` string, date-time, nullable
    - `approvals` object[]
      - `email` string, required
      - `at` string, required
      - `notes` string
      - `userId` string
      - `name` string
    - `requiredApprovals` number
    - `deniedBy` string
    - `deniedByName` string
    - `stateHistory` object[]
      - `state` string, required
      - `enteredAt` string, required
      - `dwellMs` number, nullable, required
    - `idempotencyKey` string
    - `requestHash` string
    - `policyId` string
    - `counterpartyId` string
    - `counterpartyRailId` string
    - `failureReason` string

---

[API](https://skmtc.dev/catena/apis/catena-api.md) · [All operations](https://skmtc.dev/catena/apis/catena-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/catena/catena-api/revisions/f0a9c99d458d/schema)
