SETUP GUIDES · ERRORS

Error codes

Every Claspine error response is JSON with a stable code, a detail message and a type link to the code’s entry on this page. The list is generated from Claspine’s source code (508 codes). AI agents can ask the MCP tool explain_error.

Common errors

AI_PROVIDER_NOT_CONFIGURED · HTTP 409

Claspine Atlas: the project has no AI provider yet. Add a provider key on the AI Gateway page (Your AI provider keys), then add a provider and model step to the project’s route on the AI Gateway page.

Messages: Add a provider key in the Secret Vault and a provider:model step to the project's AI route

API_KEY_REQUIRED · HTTP 401

Claspine Atlas: send the project API key in the header X-Spine-Api-Key (sp_live_… or sp_test_…), from your backend. Create keys in the console under API keys (in the project’s menu).

Messages: A Claspine Atlas project API key is required

AUTHENTICATION_DENIED · HTTP 401

The sign-in credential was refused: an expired or foreign Firebase ID token (get a fresh one with getIdToken()), a wrong or expired code, or a provider not set up for this host.

Messages: Authentication was denied

AUTHENTICATION_REQUIRED · HTTP 401

The call needs a signed-in session: send Authorization: Bearer <session token> (or the session cookie with X-Requested-With on POST, PUT and DELETE). On Claspine Atlas, files, AI and payments use the project key instead; console endpoints need a console sign-in.

Messages: Authentication is required · Sign in to Claspine Atlas to manage projects

AUTHORIZATION_DENIED · HTTP 403

The signed-in account lacks the permission for this action. Grant it (self-hosted Spring Boot: permission grants or memberships) or call as an account that has it.

Messages: Action is not allowed

BYOK_CREDENTIAL_REJECTED

The AI provider refused the stored key (revoked, wrong project or region, or no access to the model). Replace the key (AI Gateway → Your AI provider keys, or Secret Vault) and check the model is enabled at the provider.

BYOK_NOT_CONFIGURED

No AI provider credentials are stored for this product. Claspine Atlas: AI Gateway → Your AI provider keys → Add key (or Secret Vault → AI Models), then add the provider to the AI route.

Messages: No LLM provider credentials are configured for this product

CODE_RATE_LIMITED · HTTP 429

Too many sign-in codes for this address, client or application. Wait (Retry-After) before sending another; Claspine limits codes to stop abuse.

Messages: Too many codes requested; try again later

DEPLOYMENT_INACTIVE · HTTP 400

The deployment for this host is not active. Self-hosted: check platform.bootstrap and the deployment status.

Messages: Deployment is not active · Only active deployments can change capabilities · Domain requires an active deployment · Mobile target requires an active deployment

FILE_NOT_FOUND · HTTP 404

No stored file with that id in this project or product: use the id returned by /files/register, from the same project key or host.

Messages: File not found · File reference was not found

FILE_PROVIDER_NOT_CONFIGURED

No storage bucket is set up. Claspine Atlas: File Storage → choose the provider → Save & test. Engine: the PLATFORM_S3STORAGE_* settings.

Messages: File storage provider is not configured

FREE_TIER_EXHAUSTED

Engine: the built-in free AI providers are not configured or are all cooling down. Give the engine your own provider key for reliable use.

Messages: No free-tier providers configured · All free-tier providers are on cooldown or unavailable

HOST_NOT_AVAILABLE · HTTP 404

Self-hosted: the request’s host is not one of the application’s hosts. Send X-Spine-Host (Node SDK: tenantHost) with one of SPINE_HOSTS / platform.bootstrap.hosts. Hosts are names, never IP addresses; localhost works in DEVELOPMENT and TEST.

Messages: Host is not available

INTENT_NOT_FOUND · HTTP 404

The intent name is not defined. Omit intent to use the default route, or define it (Claspine Atlas: AI Gateway routes; engine: the LLM definitions folder, platform.llm.definitions).

Messages: Unknown intent; define it in the engine's LLM definitions (platform.llm.definitions) · Intent not found · Unknown intent; define it in the console under AI Gateway

INVALID_API_KEY · HTTP 401

The key is unknown, revoked or expired, or belongs to another project. Check SPINE_API_KEY on the server and create a new key in the console if needed.

Messages: Invalid or revoked Claspine Atlas API key

LLM_INPUT_TOO_LARGE · HTTP 400

input plus variables exceed the size limit. Shorten or split the text; send long documents as files and summarise them in parts.

LLM_RATE_LIMITED · HTTP 503

The per-minute AI limit (Claspine Atlas plan, or the engine service key) was reached. Retry after a minute with backoff, or spread requests.

Messages: The project's per-minute LLM request limit was reached; retry in a minute

LLM_UNAVAILABLE · HTTP 503

No AI provider could answer: none is configured, or every provider in the route is rate limited or down. Add a provider key (Claspine Atlas: Secret Vault, then an AI Gateway route; engine: PLATFORM_LLM_<PROVIDER>_APIKEYREFERENCE) and a fallback step.

Messages: No language model provider is currently available; retry later

MESSAGE_IDEMPOTENCY_CONFLICT · HTTP 409

This Idempotency-Key was used for a different message. Use one key per message (for example order-A-42-shipped); repeating the same request with the same key is safe and returns the first message.

Messages: This idempotency key was used for a different message

MESSAGE_NOT_FOUND · HTTP 404

No message with that id in this project (messages are kept for the history period, 30 days by default).

Messages: Message not found

MESSAGE_RECIPIENT_INVALID · HTTP 400

to must be an email address for email, or a phone number in international form with + and the country code for SMS and WhatsApp (+14155550123).

MESSAGE_TEMPLATE_NOT_FOUND · HTTP 404

No template with that name for that channel. Names are exact (order.shipped). Claspine Atlas: Messaging → Templates; self-hosted: the notification YAML.

Messages: No such template

MESSAGE_VARIABLES_INVALID · HTTP 400

Variable names start with a letter and use letters, digits and _; at most 30 values of up to 1000 characters, and the rendered subject and text must fit (160 and 4000 characters).

Messages: The rendered message is too long (subject up to 160, text up to 4000 characters)

MESSAGE_VARIABLES_MISSING · HTTP 400

Send a value for every {{name}} in the template, and for every variable a WhatsApp template maps to its numbered blanks; the message lists the missing ones.

MESSAGES_QUOTA_EXCEEDED · HTTP 429

The project’s monthly message limit was reached; it resets at the start of next month. A larger plan raises it.

Messages: The project's monthly message limit was reached; it resets at the start of next month

MESSAGES_RATE_LIMITED · HTTP 429

The per-minute message limit (Claspine Atlas plan, or the engine’s per-minute limit) was reached. Retry after a minute; spread bulk sends.

Messages: Too many messages this minute; retry in a minute · The project's per-minute message limit was reached; retry in a minute

MESSAGING_NOT_CONFIGURED · HTTP 409

The channel is not set up for sending. Claspine Atlas: Messaging → Setup shows the next step (provider keys in the Secret Vault, the from address or WhatsApp number). Self-hosted: configure the provider (platform.ses.*, platform.smtp.*, platform.whatsapp.*).

Messages: Choose the email provider and from address first · Add your AWS access key in the Secret Vault first · Add your SMTP service in the Secret Vault first · Choose the AWS region of your WhatsApp account first

MESSAGING_SUSPENDED · HTTP 409

Claspine suspended messaging for this project, usually after an abuse report. Contact support@claspine.com.

Messages: Messaging is suspended for this project; contact support@claspine.com

NOT_AVAILABLE_ON_CLOUD · HTTP 409

This capability is not part of Claspine Atlas. See https://claspine.com/docs/what-runs-where/ ; self-hosted Claspine offers it.

Messages: Claspine Atlas does not send email, SMS, WhatsApp or push messages. Self-hosted Claspine does.

PAYMENT_ALREADY_PAID

The order is paid, so it cannot be cancelled. Refund it instead.

PAYMENT_IDEMPOTENCY_CONFLICT · HTTP 409

The idempotency key was already used for a different request. Use a new key per distinct operation; reuse a key only to retry the same request.

Messages: Payment idempotency key was used for another request

PAYMENT_ORDER_NOT_FOUND · HTTP 404

No payment order with that id for this project or product. Use the orderId returned by the checkout call, with the same project key or host.

Messages: Payment order not found

PAYMENT_PROVIDER_NOT_CONFIGURED

The payment provider is not connected. Claspine Atlas: Payments page (Stripe or Razorpay keys and webhook). Engine: the provider settings.

Messages: The order's payment provider is not configured

PAYMENT_PROVIDER_REJECTED

The payment provider refused to create the order; detail gives its reason. "not configured" means the provider is not connected for this project or mode (Claspine Atlas: Payments page; test keys for sp_test_ project keys, live keys for sp_live_).

PAYMENT_REFUND_REJECTED

The payment provider refused the refund; the order stays paid. Check the provider dashboard for the reason (for example already refunded there, or too old).

Messages: The payment provider refused the refund; the order stays paid

PAYMENT_REFUND_UNAVAILABLE

The provider could not be reached or did not answer; nothing was refunded. Retry later with the same amount.

PAYMENT_REQUIRED · HTTP 402

Claspine Atlas: a paid plan is bought through checkout on the project’s Settings → Plan & billing page, not by changing the plan directly.

PAYMENT_RETURN_URL_NOT_ALLOWED

successUrl and cancelUrl must be https on a host allowed for this product (your application’s hosts / return hosts).

Messages: Return URL must be https on a host allowed for this product

PLATFORM_UNEXPECTED_ERROR

Claspine failed unexpectedly. Retry once; if it persists, send the correlationId from the response to support.

PRODUCT_SCOPE_MISMATCH · HTTP 400

The body names a productId that is not the one of this host or key. Leave productId out: Claspine takes it from the key or host.

Messages: productId does not match the deployment of this host

RATE_LIMITED · HTTP 429

Too many requests in a short time. Wait for the Retry-After header’s seconds and retry with backoff. On Claspine Atlas the per-minute limit depends on the plan.

Messages: Anthropic rate limit exceeded · Gemini rate limit exceeded · Too many projects created in a short time; wait a minute

SERVICE_KEY_HOST_NOT_ALLOWED · HTTP 403

Engine: the service key is limited to other hosts. Send an allowed X-Spine-Host or add the host to PLATFORM_ENGINE_SERVICEKEYS_<n>_HOSTS.

SERVICE_KEY_SCOPE_MISSING · HTTP 403

Engine: the service key is not allowed this capability. Add the scope (files, llm, payments, messages) to PLATFORM_ENGINE_SERVICEKEYS_<n>_SCOPES and restart the engine.

STORAGE_LOCATOR_OUT_OF_SCOPE · HTTP 400

Register only the storageLocator that Claspine returned from presigned-upload for this same project or product; locators of other projects are refused.

Messages: storageLocator was not issued to this product · storageLocator was not issued to this project

TEST_RECIPIENT_REQUIRED · HTTP 409

An sp_test_ key (or a console test send) reaches only the project’s confirmed test recipients. Add the address under Messaging → Test, or send with an sp_live_ key.

Messages: Test messages go only to the project's confirmed test recipients

VALIDATION_FAILED · HTTP 400

The request is malformed or a value is out of range; detail says which. Compare the body with the API reference (api_reference tool or platform-api.yaml).

Messages: idempotencyKey: 1-80 letters, digits, '.', '_', ':' or '-' · objectKeyPrefix must not contain relative path segments · objectKeyPrefix must not start with organizations/ · contentType is required

All codes

Status is shown where the error type fixes it; module errors set it per case. “Where” is the part of Claspine that raises it.

ACCOUNT_CLOSED · HTTP 409

This account is closed

Where: spine/server

ACCOUNT_CLOSURE_SCHEDULED · HTTP 409

The account is already being closed

Where: spine/server

ACCOUNT_HAS_ACTIVE_PROJECTS · HTTP 409

Delete every project first (export anything you need before deleting it)

Where: spine/server

ACCOUNT_IDEMPOTENCY_CONFLICT · HTTP 409

Account idempotency key was used for another request

Where: platform/modules/identity

ACCOUNT_INACTIVE · HTTP 400

Account is not active

Where: platform/modules/identity

ACCOUNT_NOT_FOUND · HTTP 404

Account was not found · No account with that id

Where: platform/modules/identity, platform/modules/memberships, spine/server

ACCOUNT_REGISTRATION_INVALID · HTTP 400

Account registration command is incomplete

Where: platform/modules/identity

ACCOUNT_REVISION_CONFLICT · HTTP 409

Account was changed by another operation

Where: platform/modules/identity

ACCOUNT_STATUS_CHANGE_INVALID · HTTP 400

Account status change command is incomplete

Where: platform/modules/identity

ACCOUNT_UNUSABLE

Where: platform/modules/notifications

AGENT_ACCESS_NOT_FOUND · HTTP 404

No such connected agent

Where: spine/server

AI_PROVIDER_CREDENTIAL_REJECTED · HTTP 409

Where: spine/server

API_KEY_NOT_FOUND · HTTP 404

API key not found

Where: spine/server

APP_STORE_CONNECT_GATEWAY_DISABLED

Live App Store Connect gateway is disabled

Where: platform/modules/releases

APP_STORE_HALT_FAILED

Where: platform/modules/releases

APP_STORE_HALT_INTERRUPTED

Halt was interrupted

Where: platform/modules/releases

APP_STORE_HALT_IO_ERROR

Where: platform/modules/releases

APP_STORE_JWT_SIGNING_FAILED

Where: platform/modules/releases

APP_STORE_PROMOTE_FAILED

Where: platform/modules/releases

APP_STORE_PROMOTE_INTERRUPTED

Promotion was interrupted

Where: platform/modules/releases

APP_STORE_PROMOTE_IO_ERROR

Where: platform/modules/releases

APP_STORE_TARGET_INVALID

App Store Connect requires an iOS production target

Where: platform/modules/releases

APP_STORE_VERIFY_HALT_INTERRUPTED

Verify halt was interrupted

Where: platform/modules/releases

APP_STORE_VERIFY_HALT_IO_ERROR

Where: platform/modules/releases

APP_STORE_VERIFY_INTERRUPTED

Verify was interrupted

Where: platform/modules/releases

APP_STORE_VERIFY_IO_ERROR

Where: platform/modules/releases

APP_STORE_VERIFY_POLL_INTERRUPTED

Verify poll was interrupted

Where: platform/modules/releases

APPOINTMENT_BOOK_INVALID · HTTP 400

Appointment booking command is incomplete

Where: domain-packs/healthcare/backend

APPOINTMENT_CONFLICT · HTTP 409

Appointment idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

APPOINTMENT_IDEMPOTENCY_CONFLICT · HTTP 409

Appointment idempotency key was used for another request

Where: domain-packs/healthcare/backend

APPOINTMENT_NOT_FOUND · HTTP 404

Appointment was not found

Where: domain-packs/healthcare/backend

APPOINTMENT_RESCHEDULE_INVALID · HTTP 400

Appointment reschedule command is incomplete

Where: domain-packs/healthcare/backend

APPOINTMENT_REVISION_CONFLICT · HTTP 409

Appointment was changed by another operation

Where: domain-packs/healthcare/backend

APPOINTMENT_STATUS_INVALID · HTTP 400

Appointment status command is incomplete

Where: domain-packs/healthcare/backend

ARTIFACT_BUILDER_UNSUPPORTED · HTTP 400

Artifact builder is not configured

Where: platform/modules/releases

ARTIFACT_VERIFIER_UNAVAILABLE · HTTP 400

Artifact verifier is not configured

Where: platform/modules/releases

AUDIT_CHAIN_CONTENDED · HTTP 503

The audit trail is under heavy concurrent writes; the operation was not performed. Retry shortly.

Where: platform/modules/audit

AUTH_ERROR

Anthropic authentication failed · Gemini authentication failed

Where: platform/modules/llm, platform/modules/payments

AUTHENTICATION_UNAVAILABLE · HTTP 503

Authentication is temporarily unavailable

Where: platform/modules/authentication

BILLING_CUSTOMER_NOT_FOUND · HTTP 404

There is no billing account for this customer yet

Where: platform/modules/payments

BILLING_UNAVAILABLE · HTTP 409

Online payment is not available yet; contact Claspine sales to upgrade

Where: spine/server

BRAND_INACTIVE · HTTP 400

Only active brands can be updated · Mobile release requires an active brand

Where: platform/modules/brands, platform/modules/releases

BRAND_NOT_FOUND · HTTP 404

Brand was not found

Where: platform/modules/brands

BYOK_EMBEDDINGS_UNSUPPORTED

Embeddings are not available with product-supplied credentials

Where: platform/modules/llm

BYOK_MODEL_LISTING_UNSUPPORTED

Where: platform/modules/llm

BYOK_PROVIDERS_UNAVAILABLE

Where: platform/modules/llm

BYOK_REQUEST_REJECTED

Where: platform/modules/llm

CALLBACK_URL_REQUIRED · HTTP 400

Set a callback URL first

Where: spine/server

CANCELLATION_NOT_VERIFIED · HTTP 409

Provider did not verify cancellation

Where: platform/modules/provisioning

CARE_COMMITMENT_CONFLICT · HTTP 409

Care commitment idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

CARE_COMMITMENT_REVISION_CONFLICT · HTTP 409

Care commitment was changed by another operation

Where: domain-packs/healthcare/backend

CARE_EVENT_CONFLICT · HTTP 409

Care event idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

CARE_EVENT_IDEMPOTENCY_CONFLICT · HTTP 409

Care event idempotency key was used for another request

Where: domain-packs/healthcare/backend

CARE_EVENT_INVALID · HTTP 400

Care event command is incomplete

Where: domain-packs/healthcare/backend

CARE_PLAN_APPROVE_INVALID · HTTP 400

Care plan approval command is incomplete

Where: domain-packs/healthcare/backend

CARE_PLAN_CONFLICT · HTTP 409

Care plan idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

CARE_PLAN_CREATE_INVALID · HTTP 400

Care plan creation command is incomplete

Where: domain-packs/healthcare/backend

CARE_PLAN_IDEMPOTENCY_CONFLICT · HTTP 409

Care plan idempotency key was used for another request

Where: domain-packs/healthcare/backend

CARE_PLAN_NOT_DRAFT · HTTP 409

Only draft care plans can be approved

Where: domain-packs/healthcare/backend

CARE_PLAN_NOT_FOUND · HTTP 404

Care plan was not found

Where: domain-packs/healthcare/backend

CARE_PLAN_REVISION_CONFLICT · HTTP 409

Care plan was changed by another operation

Where: domain-packs/healthcare/backend

CERTIFICATE_PROVIDER_NOT_FOUND · HTTP 400

Certificate provider is not registered

Where: platform/modules/domains

CI_TOKEN_INVALID · HTTP 401

CI token is invalid, expired, or scoped to a different operation

Where: platform/modules/provisioning

CI_TOKEN_REQUIRED · HTTP 401

X-CI-Token header is required

Where: platform/modules/provisioning

CODE_CHANNEL_INVALID · HTTP 400

email-code sends codes by email · phone-code sends codes by SMS or WhatsApp

Where: platform/modules/authentication

CODE_CHANNEL_UNAVAILABLE · HTTP 503

Where: platform/modules/authentication

CODE_DELIVERY_FAILED · HTTP 503

The code could not be sent; try again shortly

Where: platform/modules/authentication

CODE_PROVIDER_INVALID · HTTP 400

provider must be phone-code or email-code

Where: platform/modules/authentication

CODE_PROVIDER_NOT_BOUND · HTTP 404

Sign-in codes are not available

Where: platform/modules/authentication

CODE_SETTINGS_INVALID · HTTP 503

Sign-in codes are not set up correctly for this application

Where: platform/modules/authentication

COMMITMENT_CREATE_INVALID · HTTP 400

Care commitment creation command is incomplete

Where: domain-packs/healthcare/backend

COMMITMENT_IDEMPOTENCY_CONFLICT · HTTP 409

Care commitment idempotency key was used for another request

Where: domain-packs/healthcare/backend

COMMITMENT_NOT_FOUND · HTTP 404

Care commitment was not found

Where: domain-packs/healthcare/backend

COMMITMENT_REVISION_CONFLICT · HTTP 409

Care commitment was changed by another operation

Where: domain-packs/healthcare/backend

COMMITMENT_STATUS_INVALID · HTTP 400

Care commitment status command is incomplete

Where: domain-packs/healthcare/backend

COMPLIMENTARY_PLAN · HTTP 409

This project's plan is provided by Claspine; contact Claspine to change it

Where: spine/server

CONFIRMATION_MISMATCH · HTTP 400

Type the project's slug exactly to confirm deletion

Where: spine/server

CREDENTIAL_EXCHANGE_INVALID · HTTP 400

Credential exchange command is incomplete

Where: platform/modules/authentication

CUSTOM_DOMAIN_REQUIRED · HTTP 400

Managed lifecycle requires a custom domain

Where: platform/modules/domains

DATABASE_NOT_SUPPORTED · HTTP 400

Where: spine/server

DELIVERY_PROVIDER_UNAVAILABLE · HTTP 400

Delivery provider is unavailable

Where: platform/modules/provisioning

DEPLOYMENT_DEPENDENCY_INACTIVE · HTTP 400

Deployment dependencies must be active

Where: platform/modules/deployments

DEPLOYMENT_NOT_FOUND · HTTP 404

Deployment was not found

Where: platform/modules/deployments

DEPLOYMENT_NOT_PROVISIONED · HTTP 400

Deprovision requires a verified successful provision operation

Where: platform/modules/provisioning

DEPLOYMENT_OPERATION_IN_PROGRESS · HTTP 409

Deployment already has an active operation

Where: platform/modules/provisioning

DEPLOYMENT_ORGANIZATION_CONFLICT · HTTP 409

Organization is already bound to this deployment

Where: platform/modules/deployments

DESTINATION_INVALID · HTTP 400

Where: platform/modules/authentication

DESTINATION_NOT_ALLOWED · HTTP 400

Codes are not sent to phone numbers in this country

Where: platform/modules/authentication

DNS_PROVIDER_NOT_FOUND · HTTP 400

DNS provider is not registered

Where: platform/modules/domains

DOCUMENT_ALREADY_EXISTS · HTTP 409

Where: platform/foundation

DOCUMENT_CONFLICT · HTTP 409

Document idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

DOCUMENT_IDEMPOTENCY_CONFLICT · HTTP 409

Document idempotency key was used for another request

Where: domain-packs/healthcare/backend

DOCUMENT_NOT_FOUND · HTTP 404

Document was not found

Where: domain-packs/healthcare/backend

DOCUMENT_REGISTER_INVALID · HTTP 400

Document registration command is incomplete

Where: domain-packs/healthcare/backend

DOMAIN_BINDING_NOT_FOUND · HTTP 404

Domain binding was not found

Where: platform/modules/domains

DOMAIN_CONFLICT · HTTP 409

Hostname is already registered

Where: platform/modules/domains

DOMAIN_NOT_DISABLEABLE · HTTP 400

Domain has no attached managed endpoint

Where: platform/modules/domains

DOMAIN_NOT_DRAFT · HTTP 400

Managed lifecycle requires a draft binding

Where: platform/modules/domains

DOMAIN_NOT_FOUND · HTTP 404

Domain not found

Where: spine/server

DOMAIN_NOT_RENEWABLE · HTTP 400

Only an active domain can be renewed

Where: platform/modules/domains

DOMAIN_PROVIDER_ENVIRONMENT_FORBIDDEN · HTTP 400

Selected domain providers are disabled for this environment

Where: platform/modules/domains

EMBEDDING_NOT_SUPPORTED

Anthropic does not offer embeddings

Where: platform/modules/llm

ENCOUNTER_CONFLICT · HTTP 409

Encounter idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

ENCOUNTER_CREATE_INVALID · HTTP 400

Encounter creation command is incomplete

Where: domain-packs/healthcare/backend

ENCOUNTER_IDEMPOTENCY_CONFLICT · HTTP 409

Encounter idempotency key was used for another request

Where: domain-packs/healthcare/backend

ENCOUNTER_NOT_FOUND · HTTP 404

Encounter was not found

Where: domain-packs/healthcare/backend

ENCOUNTER_REVISION_CONFLICT · HTTP 409

Encounter was changed by another operation

Where: domain-packs/healthcare/backend

ENCOUNTER_STATUS_INVALID · HTTP 400

Encounter status command is incomplete

Where: domain-packs/healthcare/backend

ENDPOINT_CONFLICT · HTTP 409

Notification endpoint or idempotency key conflicts with existing state

Where: platform/modules/notifications

ENDPOINT_IDEMPOTENCY_CONFLICT · HTTP 409

Endpoint idempotency key was used for another request

Where: platform/modules/notifications

ENDPOINT_NOT_FOUND · HTTP 404

Notification endpoint was not found

Where: platform/modules/notifications

ENDPOINT_REVISION_CONFLICT · HTTP 409

Notification endpoint was changed by another operation

Where: platform/modules/notifications

ENTITLEMENT_CONFLICT · HTTP 409

Scope already has this feature entitlement · Entitlement or idempotency key conflicts with existing state

Where: platform/modules/features

ENTITLEMENT_FEATURE_INACTIVE · HTTP 400

Entitlement feature is not active for the product

Where: platform/modules/features

ENTITLEMENT_IDEMPOTENCY_CONFLICT · HTTP 409

Entitlement idempotency key was used for another request

Where: platform/modules/features

ENTITLEMENT_INVALID · HTTP 400

Entitlement command is incomplete

Where: platform/modules/features

ENTITLEMENT_NOT_FOUND · HTTP 404

Entitlement was not found

Where: platform/modules/features

ENTITLEMENT_ORGANIZATION_INACTIVE · HTTP 400

Entitlement organization is not active

Where: platform/modules/features

ENTITLEMENT_PRODUCT_INACTIVE · HTTP 400

Entitlement product is not active

Where: platform/modules/features

ENTITLEMENT_REVISION_CONFLICT · HTTP 409

Entitlement was changed by another operation

Where: platform/modules/features

ENTITLEMENT_SCOPE_INVALID · HTTP 400

Entitlement scope is required

Where: platform/modules/features

ENTITLEMENT_STATUS_INVALID · HTTP 400

Entitlement status command is incomplete

Where: platform/modules/features

EXPORT_IN_PROGRESS · HTTP 429

An export of this project is already running

Where: spine/server

EXPORT_UNAVAILABLE · HTTP 503

Export needs the PostgreSQL control-plane store

Where: spine/server

EXTERNAL_IDENTITY_CONFLICT · HTTP 409

External identity is already linked

Where: platform/modules/identity

EXTERNAL_IDENTITY_NOT_FOUND · HTTP 404

External identity was not found

Where: platform/modules/identity

EXTERNAL_IDENTITY_REVOCATION_INVALID · HTTP 400

External identity revocation command is incomplete

Where: platform/modules/identity

FEATURE_DEFINITION_CONFLICT · HTTP 409

Product already has this feature definition · Feature definition or idempotency key conflicts with existing state

Where: platform/modules/features

FEATURE_DEFINITION_INVALID · HTTP 400

Feature definition command is incomplete

Where: platform/modules/features

FEATURE_DEFINITION_NOT_FOUND · HTTP 404

Feature definition was not found

Where: platform/modules/features

FEATURE_IDEMPOTENCY_CONFLICT · HTTP 409

Feature idempotency key was used for another request

Where: platform/modules/features

FEATURE_PRODUCT_INACTIVE · HTTP 400

Feature product is not active

Where: platform/modules/features

FEATURE_REVISION_CONFLICT · HTTP 409

Feature definition was changed by another operation

Where: platform/modules/features

FEATURE_STATUS_INVALID · HTTP 400

Feature status command is incomplete

Where: platform/modules/features

FEATURE_UNAVAILABLE · HTTP 400

Feature is not available

Where: platform/modules/features

FILE_CONFLICT · HTTP 409

File reference or idempotency key conflicts with existing state

Where: platform/modules/files

FILE_DELETE_INVALID

File delete command is incomplete

Where: platform/modules/files

FILE_IDEMPOTENCY_CONFLICT · HTTP 409

File idempotency key was used for another request

Where: platform/modules/files

FILE_PROVIDER_UNAVAILABLE

File storage provider rejected the signed URL request · File storage provider rejected the upload URL request

Where: platform/modules/files

FILE_REGISTER_INVALID

File register command is incomplete

Where: platform/modules/files

FILE_REQUEST_INVALID

File upload request command is incomplete · File upload object key prefix must be 1 to 512 characters · File upload object key prefix must contain only letters, digits, dots, slashes, and hyphens · File content type must contain 1 to 128 safe characters

Where: platform/modules/files

FILE_REVISION_CONFLICT · HTTP 409

File reference was changed by another operation

Where: platform/modules/files

FILE_SCOPE_UNAVAILABLE

File scope is unavailable in the exact product context · File scope is unavailable in the exact organization context

Where: platform/modules/files

FILE_SIGNED_URL_INVALID

File signed URL command is incomplete · File signed URL expiry must be between 1 and 60 minutes · File signed URL is only available for stored files

Where: platform/modules/files

FIREBASE_GATEWAY_DISABLED

Live Firebase App Distribution gateway is disabled

Where: platform/modules/releases

FIREBASE_UPLOAD_FAILED

Where: platform/modules/releases

FIREBASE_UPLOAD_INTERRUPTED

Firebase upload was interrupted

Where: platform/modules/releases

FIREBASE_UPLOAD_IO_ERROR

Where: platform/modules/releases

FIREBASE_VERIFY_INTERRUPTED

Verify was interrupted

Where: platform/modules/releases

FIREBASE_VERIFY_IO_ERROR

Where: platform/modules/releases

FIREBASE_VERIFY_POLL_INTERRUPTED

Verify poll was interrupted

Where: platform/modules/releases

FIRESTORE_CONFLICT · HTTP 409

Where: platform/foundation

FIRESTORE_CREATE_FAILED · HTTP 503

Where: platform/foundation

FIRESTORE_DELETE_FAILED · HTTP 503

Where: platform/foundation

FIRESTORE_ERROR · HTTP 503

Where: platform/foundation

FIRESTORE_GET_FAILED · HTTP 503

Where: platform/foundation

FIRESTORE_NOT_FOUND · HTTP 404

Where: platform/foundation

FIRESTORE_QUERY_FAILED · HTTP 503

Where: platform/foundation

FIRESTORE_SAVE_FAILED · HTTP 503

Where: platform/foundation

FIRESTORE_UNAVAILABLE · HTTP 503

Where: platform/foundation

FIRST_PARTY_ORGANIZATION_FORBIDDEN · HTTP 400

First-party deployments do not require a synthetic organization · First-party domains cannot select an organization · First-party mobile targets cannot use a synthetic organization · First-party provisioning cannot manufacture tenancy

Where: platform/modules/deployments, platform/modules/domains, platform/modules/mobile, platform/modules/provisioning

GITHUB_ARTIFACT_LOOKUP_FAILED

Where: platform/modules/releases

GITHUB_ARTIFACT_LOOKUP_INTERRUPTED

Artifact lookup was interrupted

Where: platform/modules/releases

GITHUB_ARTIFACT_LOOKUP_IO_ERROR

Where: platform/modules/releases

GITHUB_ARTIFACT_NOT_FOUND

Where: platform/modules/releases

GITHUB_BUILD_DISPATCH_FAILED

Where: platform/modules/releases

GITHUB_BUILD_DISPATCH_INTERRUPTED

Build dispatch was interrupted

Where: platform/modules/releases

GITHUB_BUILD_DISPATCH_IO_ERROR

Where: platform/modules/releases

GITHUB_BUILD_FAILED

Where: platform/modules/releases

GITHUB_BUILD_POLL_INTERRUPTED

Build poll was interrupted

Where: platform/modules/releases

GITHUB_BUILD_RUN_LOOKUP_FAILED

Where: platform/modules/releases

GITHUB_BUILD_RUN_LOOKUP_INTERRUPTED

Run lookup was interrupted

Where: platform/modules/releases

GITHUB_BUILD_RUN_LOOKUP_IO_ERROR

Where: platform/modules/releases

GITHUB_BUILD_RUN_NOT_FOUND

Where: platform/modules/releases

GITHUB_BUILD_STATUS_FAILED

Where: platform/modules/releases

GITHUB_BUILD_STATUS_INTERRUPTED

Status fetch was interrupted

Where: platform/modules/releases

GITHUB_BUILD_STATUS_IO_ERROR

Where: platform/modules/releases

GITHUB_BUILD_TIMEOUT

Where: platform/modules/releases

GITHUB_CANCEL_INTERRUPTED

Cancel was interrupted

Where: platform/modules/provisioning

GITHUB_CANCEL_IO_ERROR

Where: platform/modules/provisioning

GITHUB_DISPATCH_FAILED

Where: platform/modules/provisioning

GITHUB_DISPATCH_INTERRUPTED

Dispatch was interrupted

Where: platform/modules/provisioning

GITHUB_DISPATCH_IO_ERROR

Where: platform/modules/provisioning

GITHUB_RUN_LOOKUP_FAILED

Where: platform/modules/provisioning

GITHUB_RUN_LOOKUP_INTERRUPTED

Run lookup was interrupted

Where: platform/modules/provisioning

GITHUB_RUN_LOOKUP_IO_ERROR

Where: platform/modules/provisioning

GITHUB_RUN_NOT_FOUND

Where: platform/modules/provisioning

GITHUB_STATUS_FAILED

Where: platform/modules/provisioning

GITHUB_STATUS_INTERRUPTED

Status fetch was interrupted

Where: platform/modules/provisioning

GITHUB_STATUS_IO_ERROR

Where: platform/modules/provisioning

GOOGLE_PLAY_EDIT_COMMIT_FAILED

Where: platform/modules/releases

GOOGLE_PLAY_EDIT_COMMIT_INTERRUPTED

Edit commit was interrupted

Where: platform/modules/releases

GOOGLE_PLAY_EDIT_COMMIT_IO_ERROR

Where: platform/modules/releases

GOOGLE_PLAY_EDIT_CREATE_FAILED

Where: platform/modules/releases

GOOGLE_PLAY_EDIT_CREATE_INTERRUPTED

Edit creation was interrupted

Where: platform/modules/releases

GOOGLE_PLAY_EDIT_CREATE_IO_ERROR

Where: platform/modules/releases

GOOGLE_PLAY_GATEWAY_DISABLED

Live Google Play gateway is disabled

Where: platform/modules/releases

GOOGLE_PLAY_HALT_FAILED

Where: platform/modules/releases

GOOGLE_PLAY_HALT_INTERRUPTED

Halt was interrupted

Where: platform/modules/releases

GOOGLE_PLAY_HALT_IO_ERROR

Where: platform/modules/releases

GOOGLE_PLAY_TARGET_INVALID

Google Play requires an Android production target

Where: platform/modules/releases

GOOGLE_PLAY_TRACK_UPDATE_FAILED

Where: platform/modules/releases

GOOGLE_PLAY_TRACK_UPDATE_INTERRUPTED

Track update was interrupted

Where: platform/modules/releases

GOOGLE_PLAY_TRACK_UPDATE_IO_ERROR

Where: platform/modules/releases

GOOGLE_PLAY_VERIFY_HALT_INTERRUPTED

Verify halt was interrupted

Where: platform/modules/releases

GOOGLE_PLAY_VERIFY_HALT_IO_ERROR

Where: platform/modules/releases

GOOGLE_PLAY_VERIFY_INTERRUPTED

Verify was interrupted

Where: platform/modules/releases

GOOGLE_PLAY_VERIFY_IO_ERROR

Where: platform/modules/releases

GOOGLE_PLAY_VERIFY_POLL_INTERRUPTED

Verify poll was interrupted

Where: platform/modules/releases

HOST_RESOLUTION_UNAVAILABLE · HTTP 503

Host resolution is temporarily unavailable

Where: platform/modules/domains

IDEMPOTENCY_KEY_REUSED · HTTP 409

Idempotency key was used for a different request · Idempotency key was used for another release

Where: platform/modules/provisioning, platform/modules/releases

IDENTITY_ACCOUNT_CONFLICT · HTTP 409

Account registration or external identity conflicts with existing state

Where: platform/modules/identity

IDENTITY_PROVIDER_ALREADY_BOUND · HTTP 409

Deployment already binds this identity provider

Where: platform/modules/authentication

IDENTITY_PROVIDER_BINDING_CONFLICT · HTTP 409

Binding scope or idempotency key conflicts with existing state

Where: platform/modules/authentication

IDENTITY_PROVIDER_BINDING_IDEMPOTENCY_CONFLICT · HTTP 409

Binding idempotency key was used for another request

Where: platform/modules/authentication

IDENTITY_PROVIDER_BINDING_INVALID · HTTP 400

Identity provider binding command is incomplete

Where: platform/modules/authentication

IDENTITY_PROVIDER_BINDING_NOT_FOUND · HTTP 404

Binding was not found

Where: platform/modules/authentication

IDENTITY_PROVIDER_BINDING_QUERY_INVALID · HTTP 400

Deployment is required

Where: platform/modules/authentication

IDENTITY_PROVIDER_BINDING_REVISION_CONFLICT · HTTP 409

Binding was changed by another operation

Where: platform/modules/authentication

IDENTITY_PROVIDER_BINDING_STATUS_INVALID · HTTP 400

Binding status change command is incomplete

Where: platform/modules/authentication

IDENTITY_REASON_INVALID · HTTP 400

Reason must be bounded and contain no credential material

Where: platform/modules/identity

IDENTITY_RESOLUTION_DENIED · HTTP 400

Identity could not be resolved

Where: platform/modules/identity

IDENTITY_SUBJECT_INVALID · HTTP 400

Identity provider subject must be 1-512 characters

Where: platform/modules/identity

IMPORT_AUDIT_NOT_VERIFIED · HTTP 400

Where: platform/modules/portability

IMPORT_INVALID · HTTP 400

The export could not be read as a zip

Where: platform/modules/portability

IMPORT_NEEDS_POSTGRES · HTTP 400

Importing a Claspine Atlas export needs PostgreSQL persistence (platform.persistence.type=postgres)

Where: platform/modules/portability

IMPORT_PRODUCT_EXISTS · HTTP 409

Where: platform/modules/portability

INTERRUPTED

SES send was interrupted · FCM send was interrupted · SNS send was interrupted · Twilio SMS send was interrupted

Where: platform/modules/notifications, platform/modules/payments

INVALID_ADDRESS

Invalid sender or recipient address

Where: platform/modules/notifications

INVALID_COMPOSITION · HTTP 400

Where: domain-packs/healthcare/backend

INVALID_HOST · HTTP 400

Host is invalid

Where: platform/modules/domains

INVALID_REQUEST

Stripe checkout needs success and cancel URLs · Stripe needs the order's product

Where: platform/modules/payments

INVESTIGATION_CANCEL_INVALID · HTTP 400

Investigation cancel command is incomplete

Where: domain-packs/healthcare/backend

INVESTIGATION_CANCELLED · HTTP 409

A cancelled investigation takes no result · A cancelled investigation cannot be changed

Where: domain-packs/healthcare/backend

INVESTIGATION_CONFLICT · HTTP 409

Investigation idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

INVESTIGATION_CREATE_INVALID · HTTP 400

Investigation creation command is incomplete

Where: domain-packs/healthcare/backend

INVESTIGATION_HAS_RESULT · HTTP 409

An investigation with a result cannot be cancelled; unlink the result first

Where: domain-packs/healthcare/backend

INVESTIGATION_IDEMPOTENCY_CONFLICT · HTTP 409

Investigation idempotency key was used for another request

Where: domain-packs/healthcare/backend

INVESTIGATION_NO_RESULT · HTTP 409

The investigation has no linked result

Where: domain-packs/healthcare/backend

INVESTIGATION_NOT_FOUND · HTTP 404

Investigation was not found

Where: domain-packs/healthcare/backend

INVESTIGATION_REVISION_CONFLICT · HTTP 409

Investigation was changed by another operation

Where: domain-packs/healthcare/backend

INVESTIGATION_UPDATE_INVALID · HTTP 400

Investigation update command is incomplete · The test name cannot be blank

Where: domain-packs/healthcare/backend

INVITE_NOT_FOUND · HTTP 404

Invitation not found · This invitation link is not valid · This invitation link is not valid, was already used, or has expired. Ask for a new one.

Where: spine/server

LAST_EXTERNAL_IDENTITY · HTTP 400

Last active identity cannot be revoked from an open account

Where: platform/modules/identity

LICENSE_NOT_ACTIVE · HTTP 409

This license is not active

Where: spine/server

LICENSE_NOT_CHANGEABLE · HTTP 409

Unknown or refunded license

Where: spine/server

LICENSE_NOT_FOUND · HTTP 404

License not found

Where: spine/server

LICENSE_NOTHING_TO_REFUND · HTTP 409

This license has no paid order to refund

Where: spine/server

LICENSE_SALES_CLOSED · HTTP 409

Self-hosted licenses cannot be bought online yet; contact Claspine sales · The payment provider returned no checkout page

Where: spine/server

LICENSE_TOKEN_LIMIT · HTTP 409

Where: spine/server

LICENSE_TOKEN_NOT_FOUND · HTTP 404

Token not found

Where: spine/server

LLM_BUDGET_EXCEEDED · HTTP 429

The project's monthly LLM token budget cannot cover this request

Where: spine/server

LLM_KEY_BUDGET_EXCEEDED · HTTP 429

This API key's monthly LLM token limit cannot cover this request

Where: spine/server

LLM_OUTPUT_INVALID · HTTP 503

The model returned output that does not match the intent's output type

Where: platform/backend, spine/server

LLM_REQUEST_REJECTED · HTTP 400

The LLM request was rejected

Where: platform/backend, spine/server

MANAGED_DOMAIN_COMMAND_INVALID · HTTP 400

Managed domain enrollment is incomplete · Managed domain operation is incomplete

Where: platform/modules/domains

MANAGED_DOMAIN_CONFLICT · HTTP 409

Domain binding is already managed · Domain binding or idempotency key is already registered

Where: platform/modules/domains

MANAGED_DOMAIN_IDEMPOTENCY_CONFLICT · HTTP 409

Idempotency key was used for another domain request

Where: platform/modules/domains

MANAGED_DOMAIN_LIFECYCLE_REQUIRED · HTTP 400

Custom domains must complete the managed DNS and certificate lifecycle

Where: platform/modules/domains

MANAGED_DOMAIN_NOT_FOUND · HTTP 404

Managed domain lifecycle was not found

Where: platform/modules/domains

MANAGED_DOMAIN_REVISION_CONFLICT · HTTP 409

Managed domain changed since it was read

Where: platform/modules/domains

MANAGED_SECRET_STORE_UNSUPPORTED · HTTP 400

Managed secret store is not configured

Where: platform/modules/credentials

MEMBER_NOT_FOUND · HTTP 404

Team member not found · You are not in this team

Where: spine/server

MEMBERSHIP_CONFLICT · HTTP 409

Membership scope or idempotency key conflicts with existing state

Where: platform/modules/memberships

MEMBERSHIP_ENROLLMENT_INVALID · HTTP 400

Membership enrollment command is incomplete · A membership starts ACTIVE or PENDING

Where: platform/modules/memberships

MEMBERSHIP_IDEMPOTENCY_CONFLICT · HTTP 409

Membership idempotency key was used for another request

Where: platform/modules/memberships

MEMBERSHIP_NOT_FOUND · HTTP 404

Membership was not found

Where: platform/modules/authorization, platform/modules/memberships

MEMBERSHIP_ORGANIZATION_INACTIVE · HTTP 400

Membership organization is not active

Where: platform/modules/memberships

MEMBERSHIP_PRODUCT_INACTIVE · HTTP 400

Membership product is not active

Where: platform/modules/memberships

MEMBERSHIP_REASON_INVALID · HTTP 400

Reason must be bounded and contain no credential material

Where: platform/modules/memberships

MEMBERSHIP_REVISION_CONFLICT · HTTP 409

Membership was changed by another operation

Where: platform/modules/memberships

MEMBERSHIP_SCOPE_CONFLICT · HTTP 409

Account already has a membership in this scope

Where: platform/modules/memberships

MEMBERSHIP_STATUS_CHANGE_INVALID · HTTP 400

Membership status change command is incomplete

Where: platform/modules/memberships

MESSAGE_TEMPLATE_LIMIT · HTTP 409

Where: spine/server

MESSAGING_NOT_AVAILABLE · HTTP 409

Direct messages need PostgreSQL or MongoDB persistence

Where: platform/modules/notifications

MOBILE_APPLICATION_IDENTITY_CONFLICT · HTTP 409

Application identity is already registered

Where: platform/modules/mobile

MOBILE_BUILD_NUMBER_CONFLICT · HTTP 409

Build number is already allocated

Where: platform/modules/releases

MOBILE_BUILD_SPEC_INVALID · HTTP 400

Where: platform/modules/releases

MOBILE_CREDENTIAL_PURPOSE_MISMATCH · HTTP 400

Credential reference has the wrong purpose · Credential has the wrong purpose

Where: platform/modules/mobile, platform/modules/releases

MOBILE_CREDENTIALS_INVALID · HTTP 400

Credential references are required · Credential role is invalid

Where: platform/modules/mobile

MOBILE_PLATFORM_UNSUPPORTED · HTTP 400

Product build adapter does not support target platform

Where: platform/modules/releases

MOBILE_PRODUCT_ADAPTER_INVALID · HTTP 400

Exactly one mobile product build adapter is required

Where: platform/modules/releases

MOBILE_RELEASE_COMMAND_INVALID · HTTP 400

Mobile release command is incomplete

Where: platform/modules/releases

MOBILE_RELEASE_CONFLICT · HTTP 409

Idempotency key or target build number already exists

Where: platform/modules/releases

MOBILE_RELEASE_NOT_FOUND · HTTP 404

Mobile release was not found

Where: platform/modules/releases

MOBILE_RELEASE_PLAN_INVALID · HTTP 400

Mobile release plan is incomplete

Where: platform/modules/releases

MOBILE_SIGNING_REFERENCE_REQUIRED · HTTP 400

Signing reference is required

Where: platform/modules/mobile

MOBILE_TARGET_INACTIVE · HTTP 400

Mobile target is inactive

Where: platform/modules/releases

MOBILE_TARGET_INVALID · HTTP 400

Mobile target command is incomplete

Where: platform/modules/mobile

MOBILE_TARGET_NOT_FOUND · HTTP 404

Mobile target was not found

Where: platform/modules/mobile

MOBILE_TARGET_ORGANIZATION_UNBOUND · HTTP 400

Organization is not bound to the deployment

Where: platform/modules/mobile

MOBILE_TARGET_SCOPE_INVALID · HTTP 400

Mobile target scope does not match deployment

Where: platform/modules/releases

MOBILE_TEST_GROUP_CONFLICT · HTTP 409

Test group alias is already registered

Where: platform/modules/mobile

MOBILE_TEST_GROUP_INVALID · HTTP 400

Test group command is incomplete

Where: platform/modules/mobile

MOBILE_TEST_GROUP_NOT_FOUND · HTTP 404

Mobile test group was not found

Where: platform/modules/mobile

MOBILE_TEST_GROUP_SCOPE_MISMATCH · HTTP 400

Test group is inactive or outside target

Where: platform/modules/releases

MODEL_ALIAS_NOT_FOUND

PAID intent has no model alias

Where: platform/modules/llm

NOT_COMPLIMENTARY · HTTP 409

This project has no complimentary plan

Where: spine/server

NOT_CONFIGURED

Stripe is not configured for this product

Where: platform/modules/payments

NOT_FOUND · HTTP 404

Not found · No account, project or license with that id

Where: platform/modules/payments, spine/server

NOTIFICATION_ATTEMPTS_EXHAUSTED

Notification delivery exhausted its attempts

Where: platform/modules/notifications

NOTIFICATION_COMPLETION_INVALID

Notification completion command is incomplete

Where: platform/modules/notifications

NOTIFICATION_CONFLICT · HTTP 409

Notification delivery or idempotency key conflicts with existing state

Where: platform/modules/notifications

NOTIFICATION_DEFINITION_NOT_FOUND · HTTP 400

Where: platform/modules/notifications

NOTIFICATION_DISPATCH_INVALID

Notification dispatch command is incomplete

Where: platform/modules/notifications

NOTIFICATION_ENDPOINT_INVALID

Endpoint registration command is required

Where: platform/modules/notifications

NOTIFICATION_IDEMPOTENCY_CONFLICT · HTTP 409

Notification idempotency key was used for another request

Where: platform/modules/notifications

NOTIFICATION_NOT_FOUND · HTTP 404

Notification delivery was not found

Where: platform/modules/notifications

NOTIFICATION_RECIPIENT_UNAVAILABLE

Notification recipient is unavailable in the exact scope

Where: platform/modules/notifications

NOTIFICATION_REQUEST_INVALID

Notification request is incomplete

Where: platform/modules/notifications

NOTIFICATION_REVISION_CONFLICT · HTTP 409

Notification delivery was changed by another operation

Where: platform/modules/notifications

NOTIFICATION_SEND_CONFLICT · HTTP 409

Notification send or idempotency key conflicts with existing state

Where: platform/modules/notifications

NOTIFICATION_SEND_IDEMPOTENCY_CONFLICT · HTTP 409

Notification send idempotency key was used for another request

Where: platform/modules/notifications

NOTIFICATION_SEND_INVALID · HTTP 400

Notification send command is incomplete

Where: platform/modules/notifications

NOTIFICATION_SEND_NOT_FOUND · HTTP 409

Notification send was not found for delivery linkage

Where: platform/modules/notifications

OBSERVATION_CONFLICT · HTTP 409

Observation idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

OBSERVATION_IDEMPOTENCY_CONFLICT · HTTP 409

Observation idempotency key was used for another request

Where: domain-packs/healthcare/backend

OBSERVATION_INVALID · HTTP 400

Observation command is incomplete

Where: domain-packs/healthcare/backend

OPERATION_APPROVAL_INVALID · HTTP 400

Where: platform/modules/provisioning

OPERATION_NOT_CANCELLABLE · HTTP 400

Terminal operation cannot be cancelled · Running operation has no external reference

Where: platform/modules/provisioning

OPERATION_NOT_EXECUTABLE · HTTP 400

Operation is not ready to execute

Where: platform/modules/provisioning

OPERATION_NOT_RECONCILABLE · HTTP 400

Operation has no running external execution

Where: platform/modules/provisioning

OPERATION_NOT_RETRYABLE · HTTP 400

Only retryable failures can be retried

Where: platform/modules/provisioning

OPERATION_REVISION_CONFLICT · HTTP 409

Operation changed since it was read

Where: platform/modules/provisioning

ORGANIZATION_INACTIVE · HTTP 400

Only active organizations can be bound · Only active organizations can be renamed

Where: platform/modules/deployments, platform/modules/organizations

ORGANIZATION_KEY_CONFLICT · HTTP 409

Organization key is already registered

Where: platform/modules/organizations

ORGANIZATION_NAME_INVALID · HTTP 400

Where: platform/modules/organizations

ORGANIZATION_NOT_BOUND · HTTP 400

Domain organization is not bound to the deployment · Organization is not active and bound to this deployment

Where: platform/modules/domains, platform/modules/provisioning

ORGANIZATION_NOT_FOUND · HTTP 404

Organization was not found

Where: platform/modules/organizations

ORGANIZATION_SCOPE_MISMATCH · HTTP 400

organizationId does not match the deployment of this host

Where: platform/backend

ORGANIZATION_SCOPE_UNSUPPORTED · HTTP 400

Claspine Atlas scopes data by project API key; organizationId is not supported

Where: spine/server

PATIENT_CONFLICT · HTTP 409

Patient identifier or idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

PATIENT_IDEMPOTENCY_CONFLICT · HTTP 409

Patient idempotency key was used for another request

Where: domain-packs/healthcare/backend

PATIENT_IDENTIFIER_CONFLICT · HTTP 409

Patient with this identifier already exists in the organization

Where: domain-packs/healthcare/backend

PATIENT_NOT_FOUND · HTTP 404

Patient was not found

Where: domain-packs/healthcare/backend

PATIENT_REGISTRATION_INVALID · HTTP 400

Patient registration command is incomplete

Where: domain-packs/healthcare/backend

PATIENT_REVISION_CONFLICT · HTTP 409

Patient was changed by another operation

Where: domain-packs/healthcare/backend

PATIENT_UPDATE_INVALID · HTTP 400

Patient update command is incomplete

Where: domain-packs/healthcare/backend

PAYMENT_CANCEL_UNAVAILABLE

Where: platform/modules/payments

PAYMENT_CONFLICT · HTTP 409

Payment order or idempotency key conflicts with existing state

Where: platform/modules/payments

PAYMENT_LATE_REFUND_FAILED

Where: platform/modules/payments

PAYMENT_MODE_REQUIRED

This product has test and live payment accounts; say which one to use

Where: platform/modules/payments

PAYMENT_PROVIDER_UNAVAILABLE

Payment provider is unavailable for order creation · Payment provider rejected order creation · Stripe returned no checkout URL · Stripe returned no portal URL

Where: platform/modules/payments

PAYMENT_REFUND_AMOUNT_INVALID

Where: platform/modules/payments

PAYMENT_REFUND_INVALID

Where: platform/modules/payments

PAYMENT_REVISION_CONFLICT · HTTP 409

Payment order revision does not match expected revision · Payment order was changed by another operation

Where: platform/modules/payments

PAYMENT_SCOPE_UNAVAILABLE

Payment scope is unavailable in the exact product context

Where: platform/modules/payments

PERMISSION_GRANT_CONFLICT · HTTP 409

Membership already has this permission grant · Permission grant or idempotency key conflicts with existing state · Membership permission grant or idempotency key conflicts with existing state

Where: platform/modules/authorization

PERMISSION_GRANT_IDEMPOTENCY_CONFLICT · HTTP 409

Permission grant idempotency key was used for another request

Where: platform/modules/authorization

PERMISSION_GRANT_INVALID · HTTP 400

Permission grant command is incomplete

Where: platform/modules/authorization

PERMISSION_GRANT_NOT_FOUND · HTTP 404

Permission grant was not found

Where: platform/modules/authorization

PERMISSION_GRANT_REVISION_CONFLICT · HTTP 409

Permission grant was changed by another operation

Where: platform/modules/authorization

PERMISSION_MEMBERSHIP_INACTIVE · HTTP 400

Permission membership is not active

Where: platform/modules/authorization

PERMISSION_REASON_INVALID · HTTP 400

Reason must be bounded and contain no credential material

Where: platform/modules/authorization

PERMISSION_RESTORE_INVALID · HTTP 400

Permission restore command is incomplete

Where: platform/modules/authorization

PERMISSION_REVOKE_INVALID · HTTP 400

Permission revoke command is incomplete

Where: platform/modules/authorization

PLAN_LIMIT_CONFLICT · HTTP 400

Remove custom domains above the target plan's limit before changing plans

Where: spine/server

PLAN_SALES_ONLY · HTTP 400

Enterprise is arranged with Claspine sales

Where: spine/server

PRESCRIPTION_APPROVE_INVALID · HTTP 400

Prescription approval command is incomplete

Where: domain-packs/healthcare/backend

PRESCRIPTION_CONFLICT · HTTP 409

Prescription idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

PRESCRIPTION_CREATE_INVALID · HTTP 400

Prescription creation command is incomplete · Prescription contains an empty medication

Where: domain-packs/healthcare/backend

PRESCRIPTION_IDEMPOTENCY_CONFLICT · HTTP 409

Prescription idempotency key was used for another request

Where: domain-packs/healthcare/backend

PRESCRIPTION_NOT_DRAFT · HTTP 409

Only draft prescriptions can be approved

Where: domain-packs/healthcare/backend

PRESCRIPTION_NOT_FOUND · HTTP 404

Prescription was not found

Where: domain-packs/healthcare/backend

PRESCRIPTION_REVISION_CONFLICT · HTTP 409

Prescription was changed by another operation

Where: domain-packs/healthcare/backend

PROBE_RATE_LIMITED · HTTP 429

Too many connection tests; wait a minute and retry

Where: spine/server

PRODUCT_DELIVERY_ADAPTER_UNAVAILABLE · HTTP 400

Exactly one product delivery adapter must support the deployment product

Where: platform/modules/provisioning

PRODUCT_DELIVERY_UNSUPPORTED · HTTP 400

Product delivery contract does not support this operation

Where: platform/modules/provisioning

PRODUCT_KEY_CONFLICT · HTTP 409

Product key is already registered

Where: platform/modules/products

PRODUCT_NOT_FOUND · HTTP 404

Product was not found

Where: platform/modules/products

PRODUCTION_APPROVAL_INVALID · HTTP 400

Where: platform/modules/releases

PRODUCTION_EXECUTION_FORBIDDEN

Phase 4 fake provider cannot target production · Sandbox GitHub Actions adapter cannot target production

Where: platform/modules/provisioning

PRODUCTION_PROMOTION_INVALID · HTTP 400

Where: platform/modules/releases

PRODUCTION_PROMOTION_NOT_REQUESTED · HTTP 400

Promotion has not been requested

Where: platform/modules/releases

PROJECT_DELETION_SCHEDULED · HTTP 409

The project is scheduled for deletion · The project is scheduled for deletion and is read-only; restore it to make changes · The project is already scheduled for deletion

Where: spine/server

PROJECT_LIMIT_REACHED · HTTP 409

Where: spine/server

PROJECT_NOT_ACTIVE · HTTP 409

Only an active project can be given a plan

Where: spine/server

PROJECT_NOT_FOUND · HTTP 404

Project not found

Where: spine/server

PROJECT_NOT_SCHEDULED_FOR_DELETION · HTTP 409

Only a project scheduled for deletion can be restored

Where: spine/server

PROJECT_SCOPE_MISMATCH · HTTP 400

productId does not match the API key's project

Where: spine/server

PROJECT_SLUG_CONFLICT · HTTP 409

Where: spine/server

PROVIDER_DISPATCH_FAILED

Provider dispatch failed

Where: platform/modules/provisioning

PROVIDER_ERROR

No embedding in Gemini response · SMTP server rejected the credentials · Razorpay create order returned no order id · Razorpay verify requires a gateway payment id

Where: platform/modules/llm, platform/modules/notifications, platform/modules/payments

PROVIDER_NOT_FOUND

Where: platform/modules/llm

PROVIDER_REJECTED

Where: platform/modules/payments

PROVISIONING_OPERATION_CONFLICT · HTTP 409

Idempotency key or active deployment operation already exists · Operation not found

Where: platform/modules/provisioning

PROVISIONING_OPERATION_NOT_FOUND · HTTP 404

Operation was not found

Where: platform/modules/provisioning

PROVISIONING_REQUEST_INVALID · HTTP 400

Request is incomplete · Provider key is invalid · Configuration summary must contain bounded non-sensitive values · Command is incomplete

Where: platform/modules/provisioning

PROVISIONING_STATE_AMBIGUOUS · HTTP 409

Latest successful deployment lifecycle action is ambiguous

Where: platform/modules/provisioning

QUEUE_ADD_INVALID · HTTP 400

Queue add command is incomplete

Where: domain-packs/healthcare/backend

QUEUE_CONFLICT · HTTP 409

Queue entry idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

QUEUE_IDEMPOTENCY_CONFLICT · HTTP 409

Queue entry idempotency key was used for another request

Where: domain-packs/healthcare/backend

QUEUE_NOT_FOUND · HTTP 404

Queue entry was not found

Where: domain-packs/healthcare/backend

QUEUE_REMOVE_INVALID · HTTP 400

Queue remove command is incomplete

Where: domain-packs/healthcare/backend

QUEUE_REVISION_CONFLICT · HTTP 409

Queue entry was changed by another operation

Where: domain-packs/healthcare/backend

QUEUE_STATUS_INVALID · HTTP 400

Queue status command is incomplete

Where: domain-packs/healthcare/backend

RELEASE_REVISION_CONFLICT · HTTP 409

Release changed since it was read

Where: platform/modules/releases

ROBOT_CHECK_FAILED · HTTP 403

The robot check failed

Where: platform/modules/authentication

ROBOT_CHECK_UNAVAILABLE · HTTP 503

The robot check could not be verified; try again shortly

Where: platform/modules/authentication

ROLLBACK_NOT_STAGED · HTTP 400

Only a staged rollout can be halted

Where: platform/modules/releases

ROLLOUT_NOT_PROGRESSIVE · HTTP 400

Staged rollout must increase its percentage

Where: platform/modules/releases

SANDBOX_GATEWAY_DISABLED

Sandbox workflow dispatch is disabled until an explicitly configured gateway is installed

Where: platform/modules/provisioning

SANDBOX_REFUSED

Where: platform/modules/payments

SECRET_REFERENCE_CONFLICT · HTTP 409

Managed secret locator is already registered

Where: platform/modules/credentials

SECRET_REFERENCE_EXPIRED · HTTP 400

Secret reference has expired

Where: platform/modules/credentials

SECRET_REFERENCE_EXPIRY_INVALID · HTTP 400

Secret reference expiry must be in the future

Where: platform/modules/credentials

SECRET_REFERENCE_INACTIVE · HTTP 400

Secret reference is not active

Where: platform/modules/credentials

SECRET_REFERENCE_INVALID · HTTP 400

Secret reference command is incomplete

Where: platform/modules/credentials

SECRET_REFERENCE_NOT_FOUND · HTTP 404

Secret reference was not found

Where: platform/modules/credentials

SECRET_REFERENCE_OPERATION_FORBIDDEN · HTTP 400

Secret reference does not allow this operation

Where: platform/modules/credentials

SECRET_REFERENCE_REQUIRED

Sandbox GitHub Actions adapter requires a secret reference

Where: platform/modules/provisioning

SECRET_REFERENCE_REVOCATION_INVALID · HTTP 400

Secret reference revocation command is incomplete

Where: platform/modules/credentials

SECRET_REFERENCE_ROTATION_INVALID · HTTP 400

Secret reference rotation command is incomplete

Where: platform/modules/credentials

SECRET_REFERENCE_SCOPE_MISMATCH · HTTP 400

Secret reference is outside the requested scope

Where: platform/modules/credentials

SECRET_REFERENCE_UNAVAILABLE · HTTP 400

Fake managed-store references must use the sandbox namespace · Google Secret Manager locator must be 'projects/{project}/secrets/{secret}[/versions/{version}]' · Secret validation was interrupted

Where: platform/modules/credentials

SERVER_ERROR

Stripe could not be reached

Where: platform/modules/llm, platform/modules/notifications, platform/modules/payments

SERVICE_KEY_REQUIRED · HTTP 401

A service key (X-Spine-Api-Key) is required

Where: platform/foundation

SESSION_CONFLICT · HTTP 409

Session token digest conflicts with existing state · Session identity conflicts with existing state

Where: platform/modules/authentication

SESSION_NOT_FOUND · HTTP 404

Session was not found

Where: platform/modules/authentication

SESSION_QUERY_INVALID · HTTP 400

Account is required

Where: platform/modules/authentication

SESSION_REASON_INVALID · HTTP 400

Reason must be bounded and contain no credential material

Where: platform/modules/authentication

SESSION_REFRESH_INVALID · HTTP 400

Session refresh command is incomplete

Where: platform/modules/authentication

SESSION_REVISION_CONFLICT · HTTP 409

Session was changed by another operation

Where: platform/modules/authentication

SESSION_REVOCATION_INVALID · HTTP 400

Session revocation command is incomplete · Account session revocation command is incomplete

Where: platform/modules/authentication

STARTER_NOT_FOUND · HTTP 404

Starter not found

Where: spine/server

STORAGE_INVALID · HTTP 400

Where: spine/server

STORAGE_NOT_CONFIGURED · HTTP 404

No bucket is connected

Where: spine/server

STORE_PLATFORM_MISMATCH · HTTP 400

Store provider does not support target platform

Where: platform/modules/releases

STORE_PROVIDER_UNSUPPORTED · HTTP 400

Store provider is not configured

Where: platform/modules/releases

STRUCTURED_OUTPUT_PARSE_FAILED

Where: platform/modules/llm

SUBSCRIPTION_ACTIVE · HTTP 409

This project pays for its plan; its owner cancels the subscription first

Where: spine/server

SUBSCRIPTION_ALREADY_ACTIVE · HTTP 409

This subject already has a live subscription; change its price instead

Where: platform/modules/payments

SUBSCRIPTION_CONFLICT · HTTP 409

Subscription is already recorded

Where: platform/modules/payments

SUBSCRIPTION_NOT_FOUND · HTTP 404

No subscription for this subject · This subject has no live subscription

Where: platform/backend, platform/modules/payments

SUBSCRIPTION_PAYMENT_FAILED

Where: platform/modules/payments

SUBSCRIPTION_PRICE_UNKNOWN

Where: platform/modules/payments

SUBSCRIPTION_REVISION_CONFLICT · HTTP 409

Subscription was changed by another operation

Where: platform/modules/payments

TEAM_FULL · HTTP 409

Where: spine/server

TEST_DISTRIBUTION_PROVIDER_UNSUPPORTED · HTTP 400

Test provider is not configured

Where: platform/modules/releases

TEST_GROUP_SCOPE_MISMATCH

Test group is outside the mobile target

Where: platform/modules/releases

TEST_RECIPIENT_CODE_EXPIRED · HTTP 409

The code expired; remove the address and add it again

Where: spine/server

TEST_RECIPIENT_EXISTS · HTTP 409

This address is already a test recipient · This number is already a test recipient

Where: spine/server

TEST_RECIPIENT_LIMIT · HTTP 409

Where: spine/server

TEST_RECIPIENT_NOT_FOUND · HTTP 404

No such test recipient

Where: spine/server

TIER_EXHAUSTED

Where: platform/modules/llm

TIMELINE_ADD_INVALID · HTTP 400

Timeline entry command is incomplete

Where: domain-packs/healthcare/backend

TIMELINE_CONFLICT · HTTP 409

Timeline entry idempotency key conflicts with existing state

Where: domain-packs/healthcare/backend

TIMELINE_IDEMPOTENCY_CONFLICT · HTTP 409

Timeline idempotency key was used for another request

Where: domain-packs/healthcare/backend

VAULT_CREDENTIAL_NOT_FOUND · HTTP 404

No credential is stored for this provider

Where: spine/server

WHATSAPP_TEMPLATE_NOT_DELETED · HTTP 409

Where: spine/server

WHATSAPP_TEMPLATE_REJECTED · HTTP 409

Where: spine/server

WHITE_LABEL_ORGANIZATION_REQUIRED · HTTP 400

White-label mobile targets require an organization · White-label provisioning requires an organization bound to the deployment

Where: platform/modules/mobile, platform/modules/provisioning