Create Approval Decision

Approves or rejects an approval request.

HTTP request
POST/v2/policy-approvals/{approvalId}/decisions
Authentication
Authentication Type Supported
Organization User (CustomerEmployee) Yes
Delegated User (EndUser) No
Service Account No
Required permissions
Policies:Approvals:Approve (always required)
Authorization requirements
Header Type Required Description
Authorization string Yes Bearer token used to authenticate the request. See Authentication flows for details.
X-DFNS-USERACTION string Yes User Action Signature used to sign change‑inducing requests. See User Action Signing flows for details.
Path parameters
Parameter Type Required Description
approvalId string Yes Unique identifier of the approval request. Minimum length is 1.
Request body
Field Type Required Description
value enum string Yes Decision value. Allowed values: Approved, Denied.
reason string No Optional reason for the decision. Maximum length is 1000 characters.
curl --request POST \
  --url https://api.digitalassets.ibm.com/v2/policy-approvals/{approvalId}/decisions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'X-DFNS-USERACTION: <api-key>' \
  --data '
{
  "value": "Approved",
  "reason": "<string>"
}
'
Response
200: Success

Example response:

{
  "id": "<string>",
  "initiatorId": "<string>",
  "activity": {
    "kind": "Wallets:Sign",
    "transferRequest": {
      "id": "xfr-20g4k-nsdpo-mg6arrifgvid4orn",
      "walletId": "wa-5pfuu-9euek-h0odgb6snva8ph3k",
      "network": "Algorand",
      "requester": {
        "userId": "us-6b58p-r53sr-rlrd3l5cj3uc4ome",
        "tokenId": "to-202a0-cdo33-o65mbt6q758lvvnt"
      },
      "requestBody": {
        "kind": "Native",
        "to": "<string>",
        "amount": "<string>",
        "memo": "<string>",
        "priority": "Slow",
        "createDestinationAccount": true,
        "offer": true,
        "expiresAt": "2023-11-07T05:31:56Z",
        "externalId": "<string>",
        "travelRule": {
          "kind": "Notabene",
          "originator": {},
          "beneficiary": {},
          "beneficiaryVASPdid": "<string>",
          "beneficiaryProof": {}
        },
        "feeSponsorId": "fs-5vqdl-gliqk-b4rfukqauov1sp7j"
      },
      "metadata": {
        "asset": {
          "symbol": "<string>",
          "decimals": 123,
          "verified": true,
          "quotes": {
            "EUR": 123,
            "USD": 123
          }
        }
      },
      "status": "Pending",
      "dateRequested": "2023-04-14T20:41:28.715Z",
      "reason": "<string>",
      "txHash": "<string>",
      "fee": "<string>",
      "datePolicyResolved": "2023-04-14T20:41:28.715Z",
      "dateBroadcasted": "2023-04-14T20:41:28.715Z",
      "dateConfirmed": "2023-04-14T20:41:28.715Z",
      "approvalId": "ap-2a9in-tt2a1-983lho480p35ejd0",
      "externalId": "<string>",
      "feeSponsorId": "fs-5vqdl-gliqk-b4rfukqauov1sp7j"
    },
    "transactionRequest": {
      "id": "tx-583hu-sp2p7-slvb9nqpa3hd8bus",
      "walletId": "wa-5pfuu-9euek-h0odgb6snva8ph3k",
      "network": "Algorand",
      "requester": {
        "userId": "us-6b58p-r53sr-rlrd3l5cj3uc4ome",
        "tokenId": "to-202a0-cdo33-o65mbt6q758lvvnt"
      },
      "requestBody": {
        "kind": "Transaction",
        "transaction": "<string>",
        "externalId": "<string>"
      },
      "status": "Pending",
      "dateRequested": "2023-04-14T20:41:28.715Z",
      "reason": "<string>",
      "txHash": "<string>",
      "fee": "<string>",
      "approvalId": "ap-2a9in-tt2a1-983lho480p35ejd0",
      "datePolicyResolved": "2023-04-14T20:41:28.715Z",
      "dateBroadcasted": "2023-04-14T20:41:28.715Z",
      "dateConfirmed": "2023-04-14T20:41:28.715Z",
      "externalId": "<string>"
    },
    "signatureRequest": {
      "id": "sig-4sfvl-f4iha-umighfi3hk4t54dr",
      "keyId": "key-01snl-t56gb-j8tsok0vn802p80i",
      "requester": {
        "userId": "us-6b58p-r53sr-rlrd3l5cj3uc4ome",
        "tokenId": "to-202a0-cdo33-o65mbt6q758lvvnt"
      },
      "requestBody": {
        "kind": "Hash",
        "hash": "<string>",
        "taprootMerkleRoot": "<string>",
        "network": "Algorand",
        "blockchainKind": "Algorand",
        "externalId": "<string>"
      },
      "status": "Pending",
      "dateRequested": "2023-04-14T20:41:28.715Z",
      "reason": "<string>",
      "signature": {
        "r": "<string>",
        "s": "<string>",
        "recid": 123,
        "encoded": "<string>"
      },
      "signatures": [
        {
          "r": "<string>",
          "s": "<string>",
          "recid": 123,
          "encoded": "<string>"
        }
      ],
      "signedData": "<string>",
      "network": "Algorand",
      "txHash": "<string>",
      "fee": "<string>",
      "approvalId": "ap-2a9in-tt2a1-983lho480p35ejd0",
      "datePolicyResolved": "2023-04-14T20:41:28.715Z",
      "dateSigned": "2023-04-14T20:41:28.715Z",
      "dateConfirmed": "2023-04-14T20:41:28.715Z",
      "externalId": "<string>"
    },
    "swapRequest": {
      "id": "swap-6a3ku-bn8d7-8u5rs1oukojms7k8",
      "quoteId": "swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t",
      "reference": null,
      "walletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv",
      "targetWalletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv",
      "status": "PendingPolicyApproval",
      "provider": "UniswapClassic",
      "quotedSourceAsset": {
        "kind": "Native",
        "amount": "10000000000",
        "metadata": {
          "network": "EthereumSepolia",
          "name": "Ethereum",
          "symbol": "SepoliaETH",
          "decimals": 18,
          "tid": "native:eth"
        }
      },
      "quotedTargetAsset": {
        "kind": "Erc20",
        "contract": "0xda0be7efd234295395d4204d0df4358339b57b27",
        "amount": "6467571553831928182",
        "metadata": {
          "network": "EthereumSepolia",
          "name": "Test",
          "symbol": "Test",
          "decimals": 18,
          "tid": "erc20:0xda0be7efd234295395d4204d0df4358339b57b27"
        }
      },
      "slippageBps": 100,
      "dateCreated": "2025-09-11T10:57:55.758Z",
      "requestBody": {
        "quoteId": "swapQuote-3hgv4-q8tbf-8v2ajmrbmg6m4i9t",
        "walletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv",
        "targetWalletId": "wa-3l3cj-l8mq7-8q78f9nopq7f1qjv",
        "provider": "UniswapClassic",
        "slippageBps": 100,
        "sourceAsset": {
          "kind": "Native",
          "amount": "10000000000"
        },
        "targetAsset": {
          "kind": "Erc20",
          "contract": "0xda0be7efd234295395d4204d0df4358339b57b27",
          "amount": "653003161"
        }
      },
      "requester": {
        "userId": "us-48r5q-eshfg-9pmr2lo6bmpr4i4i",
        "tokenId": "to-4etah-smoal-9n3rmhul4dpaueg5"
      }
    }
  },
  "status": "Pending",
  "dateUpdated": "<string>",
  "policyEvaluations": [
    {
      "policyId": "<string>",
      "triggered": true,
      "reason": "<string>",
      "context": "<unknown>"
    }
  ],
  "decisions": [
    {
      "userId": "<string>",
      "date": "<string>",
      "reason": "<string>",
      "value": "Approved"
    }
  ],
  "expirationDate": "<string>",
  "dateCreated": "<string>",
  "dateResolved": "<string>"
}