Get an invocation
const url = 'https://example.com/v1/invocations/example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/v1/invocations/example \ --header 'Authorization: Bearer <token>'Full invocation metadata for the caller’s tenant. req_body/resp_body are included only when body capture was on for the row and the caller’s token carries the invocations:read_body OAuth scope (spec 0003 §4/§5); otherwise the fields are omitted while body_captured still reflects whether capture was on.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The inv_<uuidv7> invocation ID.
Responses
Section titled “Responses”The invocation.
Same shape as InvocationListItem plus body-capture fields.
object
What the policy engine decided about this call, recorded at the moment the decision was made (spec 0009). Null means no decision applied — the tenant has no policy document — which is a different fact from allow and must not be read as one.
deny never appears: a denied call returns before the invocation is created, so the absence of denials here is not evidence that nothing is being denied. Read the policy decision log for those.
The Treeship artifact signed for this invocation, or null when none was recorded. Null is not proof none exists — emission is fail-open. The receipt itself is at GET /v1/invocations/{id}/receipt.
The 1-based position of the rule that produced policy_action, or an empty string when the tenant’s configured default applied because no rule matched. Null whenever policy_action is null.
object
Smallest-unit decimal string.
Settled_amount minus facilitator_fee.
Absent on a self-hosted facilitator that reports no fee.
Coarse failure reason; never raw facilitator response bytes.
Whether capture was on for this invocation, regardless of whether the caller’s scope allows reading the bodies.
Base64-encoded, capped at 1 MiB. Present only when body_captured and the caller holds the invocations:read_body scope.
Base64-encoded, capped at 1 MiB. Present only when body_captured and the caller holds the invocations:read_body scope.
Example
{ "mode": "transactional", "status": "pending", "error_class": "timeout", "policy_action": "allow", "settlement": { "status": "pending" }}Missing or invalid bearer token, or the token’s tenant/user claims are absent. No body.
No resource with this ID exists in the caller’s tenant.
The uniform error body for all 4xx responses that carry one.
object
A coarse, caller-safe message. Never contains internal state (invariant
Examplegenerated
{ "error": "example"}An unexpected server-side error. No body (internal detail is never returned to callers, invariant