Skip to main content
Status: Minimal durable run reads and cancellation requests are available in the production partner preview. Exact browser pending approvals remain pending activation. Cancellation-reconciliation final states have passed separate production canaries for pre-dispatch release and provider-in-flight uncertain-outcome settlement.
A run is the customer-safe projection of a durable task admitted through POST /v1/execute with mode: "task". Internal lease, executor, provider-cost, margin, prompt, and tool-argument fields never cross this boundary.

Get a run

The key must carry runs:read, and the run must belong to the key’s tenant. An unknown or foreign run is not projected.
status is queued, running, awaiting_approval, completed, failed, or cancelled. Once the reconciliation final-status canary clears, an internal reconcile_required state projects as running. It is recoverable and non-terminal, so keep polling or streaming until you see an actual terminal status. A completed agent-loop run can include result.text only after its stored result validates, its action digest matches, and its verification verdict is verified. After approval activation, an awaiting browser action includes pendingApproval only when Praxa can derive its exact presentation and matching digest. Otherwise Praxa omits the unsafe projection and refuses a decision. The current projector does not populate structured result or usage members. Internal error detail stays private. Ordinary failed, partial, and expired outcomes project as failed with failure.code: "run_failed". Once the reconciliation final-status canary clears, an uncertain committing outcome projects as this terminal resource instead:
Do not retry that run automatically. Reconcile the external system before you decide whether to submit new work.

Cancel a run

The request body is exactly {}. Every member, including reason, is rejected. The key must carry runs:write. Cancellation is recorded through the mature task state machine and then wakes the durable workflow using its existing user-presence and approval-digest event names. A wake failure is loud: the endpoint does not claim success when the workflow notification failed. The response is the updated RunResource. Cancellation is cooperative. It does not roll back a committed action, and a 200 response does not mean the run is already cancelled. Internal cancelling and reconcile_required states both remain publicly running until a terminal outcome is observed. Once the reconciliation final-status canary clears, if Praxa must resolve an uncertain provider or billing outcome, the stream emits run.progress with this exact message and stays open:
Successful recovery emits Run reconciliation completed; execution is resuming. and the run continues. If Praxa cannot verify a committing outcome, the run eventually becomes failed with the run_outcome_unknown failure shown above. Poll the run or follow its event stream until you observe the real terminal outcome.

TypeScript

Run events and reconnection are documented in Events.
Last modified on August 14, 2026