solarOSsolarOS Docs
Reference

Every Org API error response carries one of these code values in its JSON body, alongside the matching HTTP status. This table is generated from OrgApiErrorCode in apps/web/src/lib/org-api/responses.ts; it can't drift out of sync with the API.

CodeHTTP statusMeaning
MISSING_API_KEY401No Authorization/x-api-key header supplied.
INVALID_API_KEY401Key malformed or no bcrypt match.
REVOKED_API_KEY401Key revoked, outside rotation grace window.
EXPIRED_API_KEY401Key is past its expiresAt.
IP_NOT_ALLOWED403Caller IP isn't in the key's IP allowlist.
BILLING_ACCESS_DENIED402Org's billing/access level blocks this route.
INSUFFICIENT_SCOPE403Key is missing a required scope for this operation.
FORBIDDEN403Generic authorization failure (e.g. author-only edit).
RATE_LIMITED429Rate-limit bucket exceeded; see Retry-After header.
QUOTA_EXCEEDED402A route-specific quota check failed.
VALIDATION_FAILED400Request body failed Zod/shape validation.
NOT_FOUND404Resource not found, or belongs to another organization.
CONFLICT409Generic conflict with existing state.
IDEMPOTENCY_REQUIRED400Idempotency-Key header missing on a mutating request that requires it.
IDEMPOTENCY_CONFLICT409Same Idempotency-Key replayed with a different request body.
OWNERSHIP_REQUIRED400Missing or invalid owner assignment on a created resource.
EXTERNAL_REFERENCE_CONFLICT409An External Reference tuple already points at a different resource.
SEAT_LIMIT_REACHED409Creating a schedulable team member would exceed the included technician seats; requires an interactive org-admin action.
AURORA_IDENTIFIERS_REQUIRED400Aurora sync request is missing design/project identifiers.
CUSTOM_FIELD_VALIDATION_FAILED400customFields payload fails the tenant Field contract.
UNSUPPORTED_PROJECT_TEMPLATE400Template can't safely apply (e.g. FROM_QUOTE-only fields).
UNSUPPORTED_SORT400Invalid sortBy/sortDir combination.
UNSUPPORTED_FILTER400Invalid or unsupported query filter.
INTERNAL_ERROR500Uncaught exception — treat as a solarOS bug, retry with backoff.
Was this page helpful?