Skip to main content
Status: The minimal durable-task HTTP boundary is available in the production partner preview. Error variants belonging only to turn mode or reserved request overrides remain contract-only.
There are two different failure lanes:
  • Request failures return a non-2xx response with RFC 9457-style application/problem+json when a problem body is available.
  • Accepted durable runs report execution failure through GET /v1/runs/:id and a terminal run.failed SSE event. A durable failure is not a turn-style request.failed event.
Candidate offline turn schemas define terminal request.failed events and tool-call identifiers. They are unserved: mode: "turn" returns 400 invalid_request, and /v1/chat is not routed. Do not build a durable task integration around those fields.

HTTP problem object

The reference client parses the body best-effort. If a non-2xx response has no valid problem body, it reports AI platform request failed (<status>) with a null problem. Never assume a proxy or upstream failure includes JSON.

Common public HTTP codes

The shared source SDK also reserves provider, tool, memory, approval-timeout, and turn-stream error codes. Their presence in the enum does not mean the current minimal task projector emits corresponding rich tool or turn events.

Durable run failures

Ordinary durable failures project as failure.code: "run_failed". If Praxa cannot verify whether a committing action happened during cancellation reconciliation, the deployed and canary-proved refinement projects this terminal failure:
Separate production canaries proved the pre-dispatch and provider-in-flight final-state branches. When you receive this result, reconcile the external system before submitting any replacement work.

Example HTTP failure

TypeScript

The package is source-available in the Praxa repository; it is not yet published to npm.
Last modified on August 14, 2026