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+jsonwhen a problem body is available. - Accepted durable runs report execution failure through
GET /v1/runs/:idand a terminalrun.failedSSE event. A durable failure is not a turn-stylerequest.failedevent.
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 asfailure.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: