---
title: "Update pending approval"
method: PUT
path: "/api/v2/pendingapprovals/{approvalId}"
tags: ["Pending approval"]
---

# Update pending approval

`PUT /api/v2/pendingapprovals/{approvalId}`

Updates the state of a pending approval to `approved` or `rejected`.
You can manage pending approvals programmatically by API or with the
BigGo web UI. Ensure your authentication token has the proper scope.
When creating an access token in the web UI, check the permission,
"Update Pending Approvals" (under "Account Settings" &gt; "Developer
Options" &gt; "Access Tokens").

BitGo recommends that you create a webhook policy so that you can
automate approving and rejecting transactions.

## Path parameters

- `approvalId` string, required

## Request body

- object
  - `otp` string
  - `state` string

## Response `200`

OK

- PlatformPendingApproval
  - `id` string
  - `coin` string — A cryptocurrency or token ticker symbol.
  - `wallet` string
  - `enterprise` string
  - `organization` string
  - `creator` string
  - `createDate` string, date-time
  - `info` union
    - PendingApprovalTransactionRequest
      - `transactionRequest` object
        - `buildParams` object
        - `coinSpecific` object
        - `comment` string
        - `fee` union
          - string
          - integer
        - `isUnsigned` boolean
        - `recipients` object[]
          - `address` string
          - `amount` union
            - string
            - integer
          - `data` string
        - `requestedAmount` union
          - string
          - integer
        - `sourceWallet` string
        - `triggeredPolicy` string
        - `validTransaction` string
        - `validTransactionHash` string
      - `type` 'transactionRequest'
    - PendingApprovalTransactionRequestFull
      - `transactionRequestFull` object
        - `txRequestId` string, required
        - `policyUniqueId` string
        - `verificationItems` string[]
        - `verificationRuleId` string
        - `videoApprovers` Id[]
        - `walletRebalanceEventId` string
        - `txRequest` union
          - object
            - `txRequestId` string, required — A unique ID for the TxRequest document across all wallets. The combination of the txRequestId and version will always be unique.
            - `version` number, required — The version of the document. Data changes are done only with inserts and incrementing the version.
            - `latest` boolean, required — A boolean flag that indicates whether the document is the latest version of the TxRequest.
            - `walletId` string, required — The id of the Wallet the TxRequest is for.
            - `walletType` 'cold' | 'custodial' | 'custodialPaired' | 'hot' | 'trading' | 'distributedCustody' | 'advanced' — The type describes who owns the keys to the wallet and how they are stored. `cold` wallets are wallets where the private key of the user key is stored exclusively outside of BitGo's system. `custodial` means that this wallet is a cold wallet where BitGo owns the keys. Only customers of the BitGo Trust can create this kind of wallet. `custodialPaired` means that this is a hot wallet that is owned by the customer but it will be linked to a cold (custodial) wallet where BitGo owns the keys. This option is only available to customers of BitGo Inc. BitGo stores an encrypted private key for the user key of `hot` wallets. `trading` wallets are trading accounts where the coin is `ofc`. `distributedCustody` means You manage one key and another key agent manages the second key. BitGo manages the third key
            - `enterpriseId` string — If the wallet that owns the TxRequest is owned by an enterprise then this is the Id of said enterprise.
            - `state` 'initialized' | 'pendingApproval' | 'pendingUserCommitment' | 'pendingUserRShare' | 'pendingUserGShare' | 'readyToSend' | 'pendingUserSignature' | 'pendingDelivery' | 'signed' | 'delivered' | 'canceled' | 'rejected' | 'failed', required
            - `date` string, date-time, required
            - `createdDate` string, date-time, required
            - `userId` string, required — The Id of the User that produced this version of the TxRequest document. Could have created a new document or updated an existing document.
            - `initiatedBy` string, required — The Id of the User that originally created the TxRequest document (initiated the TxRequest).
            - `updatedBy` string, required — The Id of the User that last updated the TxRequest document. This is an alias for the userId field.
            - `intent` union, required
              - …
            - `intents` TransactionRequestIntent[], required
              - …
            - `pendingApprovalId` string — The id of the Pending Approval that was created for the TxRequest if one was required.
            - `isCanceled` boolean — True, if the transaction request is canceled.
            - `unsignedTxs` TransactionRequestUnsignedTransaction[] — Holds all unsigned transactions that will be used to fulfill the TxRequest for MPC wallets.
              - …
            - `signatureShares` PlatformSignatureShare[] — Only used for MPC coins. This is used to collect signature shares from and exchange them with the user.
              - …
            - `commitmentShares` PlatformCommitmentShare[] — Only used for MPC coins on EdDSA curve. This is used to collect commitment shares from and exchange them with the user.
              - …
            - `txHashes` string[]
          - object
            - `txRequestId` string, required — A unique ID for the TxRequest document across all wallets. The combination of the txRequestId and version will always be unique.
            - `version` number, required — The version of the document. Data changes are done only with inserts and incrementing the version.
            - `latest` boolean, required — A boolean flag that indicates whether the document is the latest version of the TxRequest.
            - `walletId` string, required — The id of the Wallet the TxRequest is for.
            - `walletType` 'cold' | 'custodial' | 'custodialPaired' | 'hot' | 'trading' | 'distributedCustody' | 'advanced' — The type describes who owns the keys to the wallet and how they are stored. `cold` wallets are wallets where the private key of the user key is stored exclusively outside of BitGo's system. `custodial` means that this wallet is a cold wallet where BitGo owns the keys. Only customers of the BitGo Trust can create this kind of wallet. `custodialPaired` means that this is a hot wallet that is owned by the customer but it will be linked to a cold (custodial) wallet where BitGo owns the keys. This option is only available to customers of BitGo Inc. BitGo stores an encrypted private key for the user key of `hot` wallets. `trading` wallets are trading accounts where the coin is `ofc`. `distributedCustody` means You manage one key and another key agent manages the second key. BitGo manages the third key
            - `enterpriseId` string — If the wallet that owns the TxRequest is owned by an enterprise then this is the Id of said enterprise.
            - `state` 'initialized' | 'pendingApproval' | 'pendingUserCommitment' | 'pendingUserRShare' | 'pendingUserGShare' | 'readyToSend' | 'pendingUserSignature' | 'pendingDelivery' | 'signed' | 'delivered' | 'canceled' | 'rejected' | 'failed', required
            - `date` string, date-time, required
            - `createdDate` string, date-time, required
            - `userId` string, required — The Id of the User that produced this version of the TxRequest document. Could have created a new document or updated an existing document.
            - `initiatedBy` string, required — The Id of the User that originally created the TxRequest document (initiated the TxRequest).
            - `updatedBy` string, required — The Id of the User that last updated the TxRequest document. This is an alias for the userId field.
            - `intent` union, required
              - …
            - `intents` TransactionRequestIntent[], required
              - …
            - `pendingApprovalId` string — The id of the Pending Approval that was created for the TxRequest if one was required.
            - `isCanceled` boolean — True, if the transaction request is canceled.
            - `transactions` PlatformTransaction[], required — Transaction information.
              - …
            - `messages` Message[] — Messages for the transaction request.
              - …
      - `type` 'transactionRequestFull'
    - PendingApprovalUserChangeRequest
      - `type` 'userChangeRequest'
      - `userChangeRequest` object
        - `action` string
        - `permissions` string
        - `userChanged` string
    - PendingApprovalPolicyRuleRequest
      - `policyRuleRequest` object
        - `action` string
        - `update` object
          - `action` PolicyRuleActions — What happens when this rule is triggered
            - `type` 'deny' | 'getApproval' | 'getFinalApproval' | 'getCustodianApproval' | 'getIdVerification', required
            - `userIds` Id[] — For a final approver action, who can approve
          - `coin` string — A cryptocurrency or token ticker symbol.
          - `condition` object
            - `excludeTags` Id[]
            - `groupTags` Id[]
          - `id` string — the id of the rule that is being updated
          - `type` 'advancedWhitelist' | 'allTx' | 'bitcoinAddressWhitelist' | 'coinAddressWhitelist' | 'coinAddressBlacklist' | 'transactionLimit' | 'velocityLimit' | 'webhook' — What causes this rule to trigger
      - `type` 'policyRuleRequest'
    - PendingApprovalUpdateApprovalsRequiredRequest
      - `type` 'updateApprovalsRequiredRequest'
      - `updateApprovalsRequiredRequest` object
        - `requestedApprovalsRequired` number
    - PendingApprovalEnterpriseModificationResponse
      - `policyRuleRequest` object
        - `action` string
        - `updateEnterpriseRequest` object
          - `type` 'updateEnterpriseRequest'
          - `action` 'add' | 'remove'
          - `permission` 'admin'
          - `userId` string
          - `email` string, email
      - `type` 'policyRuleRequest'
    - PendingApprovalEnterpriseInviteRequest
      - `type` 'enterpriseInviteRequest'
      - `enterpriseInviteRequest` object
        - `action` 'add'
        - `email` string — The email address of the user being invited
        - `userId` string
        - `isVideoIdUser` boolean
        - `enterpriseInfo` object
          - `id` string
          - `name` string — The name of the enterprise the user is being invited to
          - `requiredVerificationStep` string — The required verification step needed (if any) before the user can join the enterprise
          - `invitedBy` object
            - `id` string
            - `fullName` string — The full name of the user who invited the user
            - `email` string — The email address of the user who invited the user
  - `state` union
    - 'pending' | 'awaitingSignature' | 'pendingFinalApproval' | 'pendingCustodianApproval' | 'pendingVideoApproval' | 'pendingIdVerification'
    - 'approved' | 'processing' | 'rejected'
  - `scope` 'enterprise' | 'wallet' — What kind of entity the Pending Approval is tied to
  - `userIds` Id[] — All the Users who should see this Pending Approval
  - `approvalsRequired` integer
  - `walletLabel` string
  - `resolvers` object[]
    - `user` string, required
    - `date` string, required
    - `resolutionType` 'approved' | 'awaitingSignature' | 'pending' | 'pendingBitGoAdminApproval' | 'pendingCryptographicApproval' | 'pendingCustodianApproval' | 'pendingFinalApproval' | 'pendingIdVerification' | 'pendingVideoApproval' | 'processing' | 'rejected', required
    - `signatures` string[], required
    - `videoApprover` string
    - `videoLink` string
    - `videoException` string
  - `addressLabels` PendingApprovalAddressLabel[]
    - `address` string, required
    - `label` string, nullable, required — A human-readable label for the address.
    - `walletLabel` string

## Other responses

- `202` — Accepted

---

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