Problem details
Non-2xx responses useapplication/problem+json:
Common stable codes include
idempotency_conflict, quota_exceeded, and join_timeout, plus problem codes mapped from schema, authentication, concurrency, and resource-state failures. Treat new codes as an unknown error rather than failing to parse them.
Run business errors
Successful creation returns202 pending. A later node/schema/provider error moves the resource to failed, timed_out, or dead_letter and populates:
run.status.
SSE format and resume
- Events are persisted in PostgreSQL before delivery.
sequenceincreases from 1 within a run.- Reconnect with the last processed
Last-Event-ID; the server starts at the next event. - Deduplicate on
(run_id, sequence)to handle repeated delivery. - Lines beginning
: heartbeatare keep-alive comments and should be ignored. - The server closes the stream when the run becomes terminal or
paused.
Retry policy
- Use bounded exponential backoff only for
retryable=true, network failure, 429, and transient 5xx. - Honor
Retry-After. - Reuse the same
Idempotency-Keyand identical body when retrying run creation. - Resume SSE from the last sequence; do not create a new run.
- Do not automatically redrive deterministic schema or tool-permission errors.