Error shape

detail is always present. code and context appear for domain-specific errors where a machine-readable discriminator matters (evaluator resolution failures, workflow step errors) — a generic validation error just uses FastAPI/Pydantic’s standard detail array shape.

Status codes

A 404 on a resource that belongs to a different tenant is indistinguishable from a 404 on a resource that doesn’t exist at all — this is deliberate. Row-Level Security means the query never sees the other tenant’s row to begin with, so there’s no information to leak.

Domain-specific codes

Rate Limits