Skip to main content
Every failure — CLI, SDK, or HTTP — arrives as the standard envelope with ok: false and a typed error:
Branch on code. It is the stable identifier for a specific condition. type is the coarse category, useful for deciding whether to retry, fix the request, or stop.

Categories

A 503 is deliberately distinguished from a 500. “This deployment cannot do that” and “we broke” call for different behavior from an agent, so they are not reported the same way.

Codes you will meet early

<operation>_invalid and <operation>_failed codes also appear: the first is a caller-fixable 422 for that specific operation, the second a 500 internal fault.

Reporting a problem

Every response carries provenance.request_id. Include it — with the operation and, if you have them, input_hash and parameters_hash — and the exact call can be located and re-run.