Skip to main content
[AVAILABLE]. Rows come from responses captured from the server and from the integration tests that assert them, checked against the code on 2026-10-02. See Error handling for the envelope shape this table assumes.

Authentication

Authorization (caller is known; not permitted for this principal or action)

Policy denial (request well-formed; the business rule said no)

Validation (caller’s request is malformed)

Not found

Policy in effect (GET /policies/in-effect)

Governance (policy changes, approvers, external connectors)

These come from the maker checker routes: /policies/{name}/{version}/pending-changes and /policies/pending-changes, /approval-issuers/changes, and /external-connectors/changes. Every one of them, reads included, needs a human caller; approve and reject also need a fresh step up signature from the checker. See Policy lifecycle and approvals, Manage approvers and Connect any external system. APPROVAL_ISSUER_CHANGE_NOT_FOUND (404) is in Not found above.

Rate limited

Conflict

Not listed here on purpose: NonceAlreadyConsumedError (409, code NONCE_ALREADY_CONSUMED) is a real, tested error error-handler.ts maps, thrown by ExecutionGateway.execute() when every other verification check passed and only nonce consumption failed (an isolated replay of an already-executed authorization). It is not reachable through any of the routes this catalog covers: a resubmitted businessTransactionId is always caught first by the DuplicateBusinessTransactionError 409 above, before a second authorization, and so a second nonce, is ever generated. It’s a library-level guarantee for a receiving system calling @parmana/execution-gateway directly, not an HTTP-reachable outcome of Parmana’s own server.

Signing and evidence (the action could not be recorded)

Execution Intents (operator routes)

These come from the routes under /execution-intents, see Execution Intents.

Server-side (500)

What’s deliberately not here

This catalog lists errors from the routes mounted in packages/api/src/app.ts. It does not cover exceptions raised only in code paths unreachable from the HTTP API (for example, internal validator classes that never escape a route handler uncaught), or client-side SDK exceptions, see Python SDK and TypeScript SDK for how each wraps these same HTTP responses.