Errors

Every failure is one uniform Problem response with a stable code and a request id.

Shape

Always six fields: type, code, status, detail, instance, and request id.

{
  "type": "urn:currixa:problem:version-ambiguous",
  "title": "VERSION_AMBIGUOUS",
  "status": 400,
  "detail": "The requested version matches more than one knowledge version.",
  "instance": "/v1/outcomes/crx_out_…",
  "request_id": "req_…"
}

No stack traces, no SQL, no internal paths, no secrets — in any environment.

Codes

Every code in the contract (29)
CodeStatusMeaning
UNAUTHENTICATED401No valid or expired token.
FORBIDDEN_SCOPE403Scope or permission does not cover the operation.
PUBLISH_NOT_AUTHORIZED403A publish operation without authority.
MFA_REQUIRED403The operation requires a multi-factor session.
NOT_FOUND404Resource missing or outside your tenant (always 404, never 403).
CONFLICT409State conflict.
VERSION_AMBIGUOUS400The version request matches more than one version — pin the full number.
VALIDATION_FAILED422Rejected body or parameters.
RATE_LIMITED429Over the limit — retry after Retry-After.
SIGNUP_DISABLED403Self-serve sign-up is switched off.
BOT_CHECK_FAILED403The sign-up bot check failed.
INVALID_INPUT422A sign-up field was refused.
IDP_SYNC_PENDING502The organisation exists; the identity provider is not updated yet — retry the same request.
KEYS_DISABLED403API keys are not available here: off in this deployment, or your organisation's clients are managed by the operator.
LIMIT_REACHED409A limit of the organisation's plan is reached: its applications, or an application's live keys.
QUOTA_EXCEEDED429The organisation used its plan's requests for this month (LIVE keys and M2M clients). Retry after Retry-After, or upgrade. Each counted response carries Currixa-Quota-Limit, -Remaining and -Reset.
SUBSCRIPTION_INACTIVE403The organisation's subscription is suspended, cancelled or past its trial. Its keys and clients are refused; its people still sign in.
SETTING_NOT_DECIDED409A platform setting whose decision is not accepted yet; its value is not set.
BILLING_INCOMPLETE409An invoice is issued only when the seller’s billing settings and the organisation’s billing profile (legal name, address, city, country) are complete.
INVOICE_IMMUTABLE409An issued invoice changes only by being paid or voided; it is corrected with a credit note.
WEBHOOK_URL_REFUSED422A webhook address the delivery rules refuse; the reply names the reason class only.
WEBHOOKS_DISABLED503Webhooks are not available in this deployment.
INVITATION_INVALID404The invitation is unknown, expired, revoked or already used.
INVITATION_EMAIL_MISMATCH403The signed-in address is not the one the invitation was sent to.
LAST_OWNER409The change would leave the organisation without an owner.
SECRETS_UNAVAILABLE503The secret store is not available in this deployment (platform administration only).
SUPPORT_UNAVAILABLE503The contact form is closed here; write to the email address instead.
MFA_ALREADY_ENROLLED409An authenticator is enrolled already; disable it before enrolling another.
INTERNAL500Internal fault with no leaked detail.

Tracing

Every response carries x-request-id. Quote it when contacting us — it alone finds your request in the logs.