Errors

Every non-2xx answer is one envelope. The code set and each code's HTTP status come from the contract registry.

{ "error": { "code", "message", "issues"?, "details"? } }

issues is { path, message }[] and appears on validation_failed. details carries the structured fields of a verdict refusal. Match on code, never on message.

CodeStatusOperations
unauthorized401whoami, keys.reputation, sops.list, sops.get, repoDocs.get, symbols.search, ownership.get, technologies.list, ingest, meetings.get, signals.get, pipeline.status, decisions.list, decisions.get, decisions.verdict, conformance.decision, explorations.list, explorations.get, explorations.findings, sessions.open, sessions.list, sessions.get, sessions.say, sessions.context, sessions.tool, sessions.commit, sessions.confirm, sessions.dismiss, jobs.list, jobs.get, jobs.claim, jobs.recap, jobs.release, jobs.pause, jobs.claimLinked, events.ticket, webhooks.list, webhooks.create, webhooks.delete, webhooks.enable, webhooks.deliveries, webhooks.replay
forbidden403ingest, conformance.decision, explorations.findings, sessions.open, sessions.say, sessions.context, sessions.tool, sessions.commit, sessions.confirm, sessions.dismiss
not_found404keys.reputation, sops.get, repoDocs.get, symbols.search, ownership.get, technologies.list, meetings.get, signals.get, decisions.get, decisions.verdict, conformance.decision, explorations.get, explorations.findings, sessions.get, sessions.say, sessions.context, sessions.tool, sessions.commit, sessions.confirm, sessions.dismiss, jobs.get, jobs.claim, jobs.recap, jobs.release, jobs.pause, jobs.claimLinked, events.ticket, webhooks.delete, webhooks.enable, webhooks.deliveries, webhooks.replay
validation_failed400sops.list, repoDocs.get, symbols.search, technologies.list, ingest, decisions.list, decisions.verdict, conformance.decision, explorations.list, explorations.findings, sessions.open, sessions.say, sessions.context, sessions.tool, sessions.commit, jobs.list, jobs.recap, jobs.pause, events.ticket, webhooks.create, webhooks.deliveries, webhooks.replay
conflict409ingest, decisions.verdict, conformance.decision, explorations.findings, sessions.say, sessions.context, sessions.tool, sessions.commit, sessions.confirm, sessions.dismiss, jobs.claim, jobs.recap, jobs.release, jobs.pause, jobs.claimLinked, webhooks.create, webhooks.enable, webhooks.replay
rate_limited429whoami, keys.reputation, sops.list, sops.get, repoDocs.get, symbols.search, ownership.get, technologies.list, ingest, meetings.get, signals.get, pipeline.status, decisions.list, decisions.get, decisions.verdict, conformance.decision, explorations.list, explorations.get, explorations.findings, sessions.open, sessions.list, sessions.get, sessions.say, sessions.context, sessions.tool, sessions.commit, sessions.confirm, sessions.dismiss, jobs.list, jobs.get, jobs.claim, jobs.recap, jobs.release, jobs.pause, jobs.claimLinked, events.ticket, webhooks.list, webhooks.create, webhooks.delete, webhooks.enable, webhooks.deliveries, webhooks.replay
internal500none directly
person_not_found404none directly
person_not_verified403none directly
person_mismatch403none directly
key_not_found404none directly
key_lacks_capability403decisions.verdict, conformance.decision, sessions.confirm, sessions.dismiss, jobs.claim, jobs.recap, jobs.release, jobs.pause, jobs.claimLinked
key_cannot_commit_judgment403decisions.verdict, conformance.decision, sessions.confirm, sessions.dismiss, jobs.claim, jobs.recap, jobs.release, jobs.pause, jobs.claimLinked
answerer_not_a_person403decisions.verdict
answerer_unlinked403decisions.verdict
answerer_not_verified403decisions.verdict
answerer_lacks_capability403decisions.verdict
not_a_judge403decisions.verdict
decision_not_found404decisions.verdict