---
title: "Get approval"
method: GET
path: "/approvals/{approvalId}"
tags: ["Approvals"]
---

# Get approval

`GET /approvals/{approvalId}`

Get an approval

## Path parameters

- `approvalId` string, required — Approval ID (apr_*).

## Headers

- `X-Instance-ID` string, nullable

## Response `200`

Successful Response

- object
  - `data` object, required
    - `type` 'approval', required — Resource type. Always `approval`.
    - `id` string, required — Approval ID (apr_*).
    - `attributes` object, required
      - `status` 'pending' | 'approved' | 'denied' | 'canceled', required — Approval status.
      - `target` object, required — Operation that needs approval.
        - `type` 'payment' | 'deposit' | 'withdrawal' | 'ach' | 'realtime' | 'wire' | 'check', required — Type of operation under approval.
        - `id` string, required — ID of the operation under approval.
      - `payment` object, nullable, required — Amount of the operation under review. Null when the underlying amount is unavailable.
        - `amount` integer, required — Amount in cents.
        - `currency` string, required — Currency code.
      - `reasons` object[], required — Reasons this approval is under review.
        - `type` 'limitExceeded', required — Reason type. Always `limitExceeded`.
        - `limitType` 'perTransactionAmount' | 'dailyAmount' | 'monthlyAmount', required — Type of limit that was exceeded.
        - `limitAmount` integer, required — Configured limit amount in cents.
        - `actualAmount` integer, required — Amount that exceeded the limit, in cents.
        - `currency` string, required — Currency code.
      - `customer` object, nullable, required — Customer the agent is spending on behalf of, or null when the approval isn't a delegated payment.
        - `id` string, required — Customer party (pty_*) whose wallet a delegated payment spends from.
        - `name` string, nullable, required — Display name of the customer party, or null when unresolved.
      - `ach` object, nullable, required — ACH-specific review context. Null unless the target is an ACH.
        - `direction` 'credit', required — Direction of the payment.
        - `secCode` 'WEB' | 'PPD' | 'TEL' | 'CCD', required — ACH SEC code the entry is submitted under.
        - `companyEntryDescription` string, required — Company entry description submitted on the ACH entry.
        - `addenda` string, nullable, required — Payment-related information submitted as the NACHA addenda record, or null.
        - `internalDescription` string, nullable, required — Description for the sender's internal reference, or null. Never shared with the counterparty or the banking network.
        - `companyName` string, required — Company name submitted on the ACH entry.
        - `expectedAvailableAt` string, nullable, required — RFC 3339 timestamp when the funds are expected to be available, or null when unknown.
        - `counterparty` object, nullable, required — Counterparty and masked account, or null when it can no longer be resolved.
          - `externalPartyId` string, required — External party being paid (epty_*).
          - `name` string, required — External party display or legal name.
          - `kind` 'individual' | 'business', required — External party type.
          - `account` object, required — Masked bank account the ACH payment uses.
            - `id` string, required — External party account (epa_*).
            - `accountType` 'checking' | 'savings', required — Bank account type.
            - `last4` string, required — Last four account number digits.
            - `mask` string, required — Masked account number.
      - `wire` object, nullable, required — Wire-specific review context. Null unless the target is a wire.
        - `description` string, required — Description supplied when the wire was created.
        - `remittanceInfo` string, nullable, required — Remittance information, or null.
        - `internalDescription` string, nullable, required — Description for the sender's internal reference, or null. Never shared with the counterparty or the banking network.
        - `counterparty` object, nullable, required — Destination party and masked account, or null when it can no longer be resolved.
          - `externalPartyId` string, required — External party being paid (epty_*).
          - `name` string, required — External party display or legal name.
          - `kind` 'individual' | 'business', required — External party type.
          - `account` object, required — Masked bank account the payment credits.
            - `id` string, required — External party account (epa_*).
            - `accountType` 'checking' | 'savings', required — Bank account type.
            - `last4` string, required — Last four account number digits.
            - `mask` string, required — Masked account number.
      - `check` object, nullable, required — Check-specific review context. Null unless the target is a check.
        - `payeeName` string, required — Name printed on the check.
        - `payeeCity` string, required — Payee mailing address city.
        - `payeeState` string, required — Payee mailing address state.
        - `amount` integer, required — Check amount in cents.
        - `memo` string, required — Memo printed on the check.
        - `internalDescription` string, nullable, required — Description for the sender's internal reference, or null. Never printed on the check or shared with the counterparty.
      - `realtime` object, nullable, required — Realtime-specific review context. Null unless the target is a realtime payment.
        - `description` string, required — Description supplied when the payment was created.
        - `internalDescription` string, nullable, required — Description for the sender's internal reference, or null. Never shared with the counterparty or the banking network.
        - `counterparty` object, nullable, required — Destination party and masked account, or null when it can no longer be resolved.
          - `externalPartyId` string, required — External party being paid (epty_*).
          - `name` string, required — External party display or legal name.
          - `kind` 'individual' | 'business', required — External party type.
          - `account` object, required — Masked bank account the payment credits.
            - `id` string, required — External party account (epa_*).
            - `accountType` 'checking' | 'savings', required — Bank account type.
            - `last4` string, required — Last four account number digits.
            - `mask` string, required — Masked account number.
      - `initiator` object, nullable, required — Who initiated the operation under review, when resolvable.
        - `actorType` 'user' | 'agent' | 'api' | 'service' | 'internalAdmin', required — Kind of actor that initiated the operation under review.
        - `agent` object, nullable, required — Acting agent, or null when a human or API key initiated the operation.
          - `id` string, required — Acting agent (agt_*).
          - `name` string, nullable, required — Agent label, or null when unresolved.
          - `owner` object, nullable, required — Party that operates the agent, or null when unresolved.
            - `partyId` string, required — Party that operates the agent (pty_*).
            - `name` string, required — Display name of the operating party.
      - `denialReason` string, nullable, required — Reason recorded when the approval was denied, when one was given.
      - `createdAt` string, required — RFC 3339 timestamp when the approval was created.
      - `updatedAt` string, required — RFC 3339 timestamp when the approval was last updated.
      - `resolvedAt` string, nullable, required — RFC 3339 timestamp when the approval was resolved, or null while pending.

## Other responses

- `400` — Validation Error
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found. Returned when the resource does not exist, or when it exists but is not accessible to your account. The two cases are intentionally indistinguishable, so that resource IDs cannot be enumerated by probing.
- `409` — Conflict
- `422` — Validation Error. The response contains one error object for each invalid request value.
- `428` — Precondition Required
- `429` — Too Many Requests
- `500` — Internal Server Error
- `501` — Not Implemented
- `502` — Bad Gateway
- `503` — Service Unavailable

## Changes

- **2026-09-24** `e79d669f0234` — 1 breaking, 5 info
  - removed the required property `data/attributes/ach/anyOf[subschema #1: ApprovalAch]/mandate` from the response with the `200` status
  - removed the `debit` enum value from the `data/attributes/ach/anyOf[subschema #1: ApprovalAch]/direction` response property for the response status `200`
  - added the required property `data/attributes/ach/anyOf[subschema #1: ApprovalAch]/internalDescription` to the response with the `200` status
  - added the required property `data/attributes/check/anyOf[subschema #1: ApprovalCheck]/internalDescription` to the response with the `200` status
  - …2 more
- **2026-09-19** `6e52d1bd0054` — 1 warning, 1 info
  - added the new `check` enum value to the `data/attributes/target/type` response property for the response status `200`
  - added the required property `data/attributes/check` to the response with the `200` status
- **2026-09-19** `7dd2420be291` — 1 info
  - added the required property `data/attributes/ach/anyOf[subschema #1: ApprovalAch]/addenda` to the response with the `200` status
- **2026-09-11** `226131258c12` — 1 warning, 1 info
  - added the new `wire` enum value to the `data/attributes/target/type` response property for the response status `200`
  - added the required property `data/attributes/wire` to the response with the `200` status
- **2026-09-06** `9cb4c2f0360f` — 1 info
  - added the required property `data/attributes/realtime` to the response with the `200` status

[Full history](https://skmtc.dev/natural/apis/natural-api/changes/approvals/:approvalId/get.md)

---

[API](https://skmtc.dev/natural/apis/natural-api.md) · [All operations](https://skmtc.dev/natural/apis/natural-api/llms.txt) · [OpenAPI document](https://skmtc.dev/natural/apis/natural-api/revisions/e79d669f0234?raw)
