---
title: "Reject wallet approval request"
method: POST
path: "/v1/wallets/approval-requests/{approvalRequestId}/reject"
tags: ["Wallets"]
---

# Reject wallet approval request

`POST /v1/wallets/approval-requests/{approvalRequestId}/reject`

Rejects a pending wallet operation approval request. The resolver must differ from the requester, including across a user session and API keys created by that user, and be an active member of the assigned approval group, or an organization/API admin when no group is assigned.

## Path parameters

- `approvalRequestId` string, required — Approval request ID.

## Headers

- `x-project-id` string — Selects the active project for this request. Required for session/dashboard callers. Ignored when authenticating with an API key, whose scope is fixed to the key's project.

## Response `200`

Wallet approval request

- object — Standard success response envelope.
  - `data` object, required — Wallet approval request response payload.
    - `approvalRequest` object, required — Wallet approval request summary.
      - `id` string, required — Approval request ID.
      - `organizationId` string, required — Owning organization ID.
      - `projectId` string, nullable, required — Project scope for this approval request.
      - `walletOperationId` string, required — Associated wallet operation ID.
      - `approvalGroupId` string, nullable, required — Approval group used for this request, when configured.
      - `status` 'pending' | 'approved' | 'rejected' | 'canceled' | 'expired' | 'failed', required — Approval request status.
      - `provider` string, nullable, required — External approval provider, when applicable.
      - `providerReference` string, nullable, required — External provider reference, when applicable.
      - `requestedBy` string, nullable, required — Requester user or API key ID.
      - `resolvedBy` string, nullable, required — Resolver user or API key ID.
      - `expiresAt` string, date-time, nullable, required — ISO 8601 timestamp.
      - `resolvedAt` string, date-time, nullable, required — ISO 8601 timestamp.
      - `createdAt` string, date-time, required — ISO 8601 timestamp.
      - `updatedAt` string, date-time, required — ISO 8601 timestamp.
      - `wallet` object, nullable, required — Wallet metadata when the custody wallet still exists.
        - `custodyWalletId` string, required — Internal custody wallet row ID.
        - `walletId` string, required — Provider wallet ID — the `walletId` field returned by GET /v1/wallets.
        - `publicKey` string, required — Base58-encoded Solana address.
        - `label` string, nullable, required — Wallet label.
      - `operation` object, required — Wallet operation awaiting approval.
        - `id` string, required — Wallet operation ID.
        - `custodyWalletId` string, nullable, required — Internal custody wallet row ID used by the operation.
        - `walletId` string, required — Provider wallet ID — the `walletId` field returned by GET /v1/wallets.
        - `apiKeyId` string, nullable, required — API key that requested it.
        - `source` string, required — Operation source.
        - `operationFamily` string, required — Normalized wallet operation family. Historical rows may carry retired families.
        - `operationType` string, required — Normalized wallet operation type. Historical rows may carry retired types.
        - `asset` string, nullable, required — Asset symbol or mint.
        - `amount` string, nullable, required — Operation amount.
        - `destination` string, nullable, required — Destination or counterparty.
        - `status` 'created' | 'evaluated' | 'pending_approval' | 'executing' | 'completed' | 'failed' | 'canceled', required — Current wallet operation status.
        - `executionStartedAt` string, date-time, nullable, required — When execution was claimed after approval.
        - `executionCompletedAt` string, date-time, nullable, required — When approved execution reached a terminal state.
        - `executionError` string, nullable, required — Execution failure message when the operation status is failed.
        - `createdAt` string, date-time, required — ISO 8601 timestamp.
        - `updatedAt` string, date-time, required — ISO 8601 timestamp.
      - `policyEvaluation` object, nullable, required — Latest policy evaluation linked to this approval request.
        - `id` string, required — Policy evaluation ID.
        - `decision` 'allow' | 'deny' | 'approval_required' | 'provider_approval_required' | 'review' | 'not_evaluated', required — Policy decision for this operation.
        - `reasonCode` string, nullable, required — Stable reason code explaining the decision.
        - `reason` string, nullable, required — Human-readable reason.
        - `matchedRules` object[], required — Policy rules that matched this operation.
        - `requiresApproval` boolean, required — Whether the evaluation required approval.
        - `evaluatedAt` string, date-time, required — ISO 8601 timestamp.
  - `meta` object, required — Response metadata.
    - `requestId` string, required — Request identifier for tracing.
    - `timestamp` string, date-time, required — ISO 8601 timestamp.

## Other responses

- `400` — Error
- `401` — Error
- `403` — Error
- `404` — Error
- `409` — Error
- `500` — Error

---

[API](https://skmtc.net/solana/apis/solana-developer-platform-api.md) · [All operations](https://skmtc.net/solana/apis/solana-developer-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solana/solana-developer-platform-api/revisions/672b1916ba61/schema)
