Status: DurableThe public handler exposes one execution mode:taskmode is available in the production partner preview athttps://api.praxa.io/v1/execute. The public route is task-only.
Request
task.input at 16,000 characters and accepts
personal tenants only. It rejects mode: "turn", task.agentId, context,
tools, policy, delivery, and every other unknown field before creating a
task. Organization execution remains closed until organization-unit delegation
can be proved at the execution boundary.
Top-level fields
Task response
Task mode returns a strict customer-safe run projection:queued, running, awaiting_approval, completed, failed, or cancelled.
The cancellation-reconciliation migration and compatible Workers are deployed,
and separate production canaries have proved its pre-dispatch and
provider-in-flight final-state branches. Internal reconcile_required projects
as running, not as a new public status.
It is non-terminal. The event stream stays open and emits
run.progress with The run is reconciling an uncertain execution outcome. Do not retry or resubmit it.
If reconciliation succeeds, another run.progress event says
Run reconciliation completed; execution is resuming.
Once the final-status canary clears, if Praxa cannot verify whether a committing action happened, the run becomes
failed. Its failure uses code: "run_outcome_unknown", message
A committing action may have happened, but the final outcome could not be verified. Do not retry automatically.,
and retryable: false. Ordinary failed, partial, and expired outcomes use
code: "run_failed".
The versioned resource schema reserves fields for approval, result, failure,
and usage. The current source projector returns lifecycle timestamps, links,
a generic customer-safe failure when needed, and verified text only when a
completed agent-loop result passes the result schema, action-digest match, and
verification verdict. After the source-ready approval refinement is activated,
an exact recorded browser action can also return a digest-bound
pendingApproval. It does not yet project:
- unverified or structured results;
- per-run usage totals.
Unsupported chat and turn surfaces
mode: "turn" is outside the public request schema. Sending it to
POST /v1/execute returns 400 invalid_request; it is not a capacity error and
must not be retried unchanged. /v1/chat is not a routed public endpoint.
The source repository contains candidate turn event schemas for offline contract
work. They do not define a served route, SDK method, or activation promise.
Idempotency
If both theIdempotency-Key header and body field are present, they must be
identical or the handler returns 409 conflict. Task execution then uses the
header, otherwise the body field, otherwise requestId. Keys are unique within
the authenticated tenant.
- Same key and the same normalized request: return the existing run projection.
- Same key and different request: return
conflict. - Missing task-origin/idempotency storage: fail instead of executing without replay protection.
TypeScript
Partner-preview boundaries
The production partner-preview endpoint supports the durabletask contract
documented on this page. Turn mode, /v1/chat, request-level overrides, organization
execution, and approval mutations remain fail-closed. Exact recorded browser
approvals remain pending production activation. Cancellation-reconciliation
final states have passed separate production canaries. A cancellation request
is cooperative: it does not imply rollback or
guarantee that the returned run is already cancelled.
See Status and roadmap for the remaining
general-availability gates.