Foundations

NQD API errors and request IDs

Every failed request returns a safe error object with a request ID.

Resource errors have an error object containing code, message, and requestId. Invalid input may also include error.details.issues, each with a field path and safe validation reason. Responses omit stack traces, SQL, provider responses, and credentials. Use requestId when reporting a failure. When the transport supplies x-request-id, it identifies the same request and should be retained with the error.

StatusCodeMeaning
400invalid_inputInvalid scope, query, body, or domain input
400query_invalidQuery field, operator, projection, cursor, or limit is unsupported; details.issues identifies the rejected path
401unauthenticatedMissing or invalid bearer; WWW-Authenticate is Bearer
403forbiddenCurrent membership/permission denied
403plan_limitExisting finance/seat/entitlement limit denied
403cors_forbiddenOrigin is outside the configured API caller list
404not_foundUnknown route or scoped target
409conflictStale edit, conflict, or frozen record
429rate_limited / request_quotaFinite rate or external allowance exhausted; Retry-After supplied
503unavailableDependency or admission unavailable; fails closed
500internal_errorSanitized unexpected failure

An unsupported method returns 405 with Allow. Successful bodyless deletes return 204. Auth uses its generated sanitized credential errors. Do not infer authorization from an HTTP array or a successful related page.