Error Catalog

Every error response is { error, code, field?, meta? }. Switch on code — it is stable across releases; error is a human-readable string that may change wording without notice.

CodeHTTP statusMeaningWhat to do
SESSION_EXPIRED401refresh token exhaustedRe-authenticate — refresh or recreate your API key.
AUTH_REQUIRED401no token or invalid tokenRe-authenticate — refresh or recreate your API key.
PERMISSION_DENIED403RBACCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
PLAN_TIER_LOCKED403not in this plan tierCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
FEATURE_NOT_ENABLED403feature toggle offCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
ADDON_REQUIRED403add-on missingCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
USAGE_LIMIT_EXCEEDED403user hit a plan usage limitCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
VALIDATION_FAILED400schema/range errorFix the request payload/shape and retry.
CONFLICT409generic collisionRe-fetch current state and retry, or use a fresh Idempotency-Key.
TEMPLATE_HAS_INSTANCES409template has runs (from 206eef2a)Re-fetch current state and retry, or use a fresh Idempotency-Key.
RATE_LIMITED429Rate limitedBack off and retry after the Retry-After header (or meta.retryAfterMs).
WAF_BLOCKED403Apache ErrorDocument: ModSec blockCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
WAF_MALFORMED_REQUEST400Apache ErrorDocument: ModSec parse failFix the request payload/shape and retry.
UPSTREAM_UNAVAILABLE503Upstream unavailableRetry with exponential backoff — this is a transient upstream issue.
UNKNOWN_ERROR4xx/5xxlegacy error response had no codeSee the response body for details before retrying.
INSUFFICIENT_SCOPE403key's moduleScopes don't cover this routeCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
VESSEL_OUT_OF_SCOPE403key's orgScope doesn't include this vesselIdCheck the key's scopes (moduleScopes/orgScope) or your plan tier.
INVALID_CURSOR400malformed/undecodable ?cursor= valueFix the request payload/shape and retry.
VALIDATION_ERROR400/404/405/406/413/415request doesn't match openapi/v1.yamlFix the request payload/shape and retry.