Skip to main content
GET
Get an approval

Authorizations

Authorization
string
header
required

Server API key, scoped. pk_test_ keys hit the sandbox tenant.

Headers

X-Request-Id
string

Optional client correlation id, up to 128 characters. It is not echoed: the response's X-Request-Id is always our own req_… id. We log your value with the request as client_request_id, so support can find a request by either id. A longer value is refused with 400 parameter_invalid.

Maximum string length: 128

Path Parameters

approval_id
string
required

apr_…

Pattern: ^apr_[0-9A-HJKMNP-TV-Z]{26}$

Response

The approval.

The shared Approval (CONVENTIONS §9) plus what the customer approval screens show. Generic over every customer ApprovalKind; payment-specific fields are present only for payment kinds.

id
string
required

apr_…

object
string
required
Allowed value: "approval"
kind
enum<string>
required

What an approval is for. Customers see transfer, batch, pay_run, agent_payment, member_role_change and limit_change; the other kinds are PanoFlow's own and never returned to customers.

Available options:
transfer,
batch,
pay_run,
agent_payment,
member_role_change,
limit_change,
business_approval,
business_freeze,
business_unfreeze,
payment_reversal,
ledger_adjustment,
recon_resolution,
fee_refund,
staff_role_change,
staff_super_admin,
str_filing,
pricing_change,
risk_rule_change,
feature_flag_change,
partner_secret_rotation
subject_id
string
required

Id of the thing being approved.

status
enum<string>
required

Approval state.

Available options:
pending,
approved,
rejected,
expired,
canceled
requested_by
object
required

Who did something. Shown in activity, approvals and the audit log.

requested_at
string<date-time>
required

RFC 3339, UTC.

Example:

"2026-10-27T08:41:00Z"

summary
string

One-line human summary, e.g. "Pay ₦850,000.00 to NGOZI ADEYEMI".

amount
object

An amount in minor units (kobo, cents) with its currency. Never a decimal.

reason
string

Why the requester asked.

decision_note
string

Note from the person who decided.

decided_by
object

Who did something. Shown in activity, approvals and the audit log.

decided_at
string<date-time>

RFC 3339, UTC.

Example:

"2026-10-27T08:41:00Z"

expires_at
string<date-time>

RFC 3339, UTC.

Example:

"2026-10-27T08:41:00Z"

subject_object
string

Object type of subject_id, e.g. transfer, batch, pay_run, membership.

triggers
object[]

Why it needs approval.

payee
object

For transfer and agent_payment, the account being paid ("••••4120 · First Bank · name confirmed").

source_account
object

Enough of a PanoFlow account to show it ("Naira · Main · ••••6789"). Full account in the Accounts API.

agent_id
string

For agent_payment, the agent (agt_…).

agent_client
string

For agent_payment, the MCP client the agent used ("through Claude").