Wyrd docs v0.2.0 Reference GitHub

Status: Runnable

Error codes

Every Wyrd error carries a stable code, such as WYRD_SPEC_400_VALIDATION: the area, the HTTP status, and the cause. Branch on code, never on the message. The same code reaches you over HTTP, MCP, the CLI, and every SDK.

Over HTTP an error is an RFC 9457 application/problem+json body:

FieldMeaning
codeThe stable code from the tables below
statusThe HTTP status
titleA fixed summary of the code
detailWhat went wrong in this request
remediationWhat to do about it
detailsFields specific to the error, such as rule and path for a validation failure

This page is generated from the error definitions in the Wyrd source.

WYRD_AGENT

CodeStatusTitleFix
WYRD_AGENT_404_PROMPT_CARD404Prompt Card not foundLoad or register the referenced Prompt Card in the local prompt registry before resolving the agent.
WYRD_AGENT_404_RUNTIME_LOCAL_TOOL_NOT_FOUND404Runtime-local tool not foundRegister the named tool in the local Skald tool registry before loading the Agent Card.
WYRD_AGENT_404_TOOL404Tool not registered for agentRegister the tool before running the agent or remove the tool call from the provider response.
WYRD_AGENT_404_TOOL_NOT_IN_AGENT404Tool not attached to agentAttach the runtime-local tool to this agent or adjust the model response.
WYRD_AGENT_409_PROVIDER_MISMATCH409Provider mismatchRun the agent with a prompt targeting the same provider as the agent’s resolved prompt.
WYRD_AGENT_412_DELEGATION_DEPTH412Agent delegation depth exceededReduce nested agent-as-tool calls or restructure the workflow so the delegation chain stays within the cap.
WYRD_AGENT_422_CALLBACK_RETURN_TYPE422Callback returned wrong typeReturn None to continue, return a replacement value of the expected type, or raise an exception to abort the run.
WYRD_AGENT_422_INVALID_ARGUMENT422Invalid argumentCorrect the argument value; see details for the expected type or constraint.
WYRD_AGENT_422_LOOP_MESSAGE_TYPE422Loop message type mismatchRe-render the conversation message against the active provider; loop messages must match the provider’s message schema (OpenAi / Anthropic / Gemini / Custom).
WYRD_AGENT_422_MISSING_NAME422AgentCard name is missingSet a card name before saving or projecting the agent to a card envelope.
WYRD_AGENT_422_MISSING_VERSION422AgentCard version is missingSet a concrete semantic version before saving or projecting the agent to a card envelope.
WYRD_AGENT_422_PROMPT422Agent prompt rendering failedInspect the prompt template and the variables passed to the agent run.
WYRD_AGENT_422_RUNTIME_LOCAL_TOOLS_NOT_REGISTRABLE422Runtime-local tools are not registrableRemove runtime-local tool names before registration; local save, load, and run remain available.
WYRD_AGENT_422_STRUCTURED_DECODE422Structured response decode failedInspect the model output; structured-output prompts must return a JSON object.
WYRD_AGENT_422_TOOL_ARGS422Tool arguments invalidAdjust the provider-emitted tool arguments to match the tool input schema.
WYRD_AGENT_422_VALIDATION422AgentCard validation failedFix the Agent Card envelope, metadata, prompt reference, tools, or run_config fields.
WYRD_AGENT_499_CALLBACK_ABORTED499Callback aborted runInspect the callback exception and either return None to continue or return a valid replacement value.
WYRD_AGENT_500_CALLBACK_PANIC500User-supplied callback panickedInspect the panic payload and fix the callback implementation; callbacks must not panic.
WYRD_AGENT_500_JOURNAL500Journal append failedInspect the journal backend; for the no-op journal this should never fire.
WYRD_AGENT_500_MAX_ITERATIONS500Agent exceeded max iterationsRaise the run’s max_iterations or adjust the agent prompt and tools so the loop can terminate.
WYRD_AGENT_502_PROVIDER502Provider call failedInspect the provider backend and retry once it is healthy.
WYRD_AGENT_504_TIMEOUT504Agent run exceeded configured timeoutIncrease the run timeout or reduce iteration count and tool latency.

WYRD_AUTH

CodeStatusTitleFix
WYRD_AUTH_400_BAD_TOKEN_FORMAT400Access token header malformedUse X-Wyrd-Access-Token: Bearer <token> with a single Bearer credential.
WYRD_AUTH_400_DELEGATION_DEPTH_EXCEEDED400Delegation chain exceeds maximum depthReduce the delegation chain; the caller’s existing act chain plus the requested hop must be at most 5 layers.
WYRD_AUTH_400_DEVICE_AUTHORIZATION400Device authorization did not issue a credentialKeep polling on authorization_pending, poll five seconds slower on slow_down, and start a new login on any other details.error.
WYRD_AUTH_400_HUMAN_CONNECTION_REQUIRED400Human login uses the tenant OIDC connectionTrusted issuers and [[trusted_issuers]] accept only principal_kind = workload. Configure human sign-in through the tenant OIDC connection API: PUT /v1/identity/oidc/candidate, POST /v1/identity/oidc/candidate/test, then POST /v1/identity/oidc/candidate/activate.
WYRD_AUTH_400_INVALID_CARD_REF_VERSION400Non-human principal CardRef.version must be an exact PinRe-issue the request with card_ref.version set to an exact Pin, for example 1.2.3; version requirements are rejected for card-bound principals.
WYRD_AUTH_400_INVALID_NONCE400Invalid OIDC nonceRestart the login flow. The ID token nonce must match the server-stored login nonce.
WYRD_AUTH_400_INVALID_STATE400Invalid OIDC stateRestart the login flow. The callback state is single-use and must match the server-stored login state.
WYRD_AUTH_400_PRINCIPAL_KIND_CARD_KIND_MISMATCH400CardRef cannot be bound to a non-human principalOnly Service and Agent cards bind to non-human principals. Re-issue the request with a card_ref referencing a Service or Agent card.
WYRD_AUTH_400_UNSUPPORTED_CLIENT_AUTH400Unsupported OIDC client authenticationUse SecretBasic or SecretPost with a client secret, or Public without one. private_key_jwt is not supported for tenant connections.
WYRD_AUTH_400_UNSUPPORTED_GRANT_TYPE400Unsupported grant_typeUse one of the supported grants listed in details.supported_grant_types.
WYRD_AUTH_401_API_KEY_INVALID401API key not found, revoked, or hash mismatchRe-issue a key with wyrd auth issue-key <card_ref> and update the deployment secret.
WYRD_AUTH_401_CREDENTIAL_REVOKED401Credential revokedThe credential was explicitly revoked. Re-authenticate or request a new credential.
WYRD_AUTH_401_DELEGATION_DEPTH_EXCEEDED401Delegation chain in token exceeds maximum depthThe presented JWT’s act chain exceeds the verifier’s maximum delegation depth. Re-issue from a shorter chain.
WYRD_AUTH_401_INVALID_CARD_REF401Non-User token card_ref claim absent or malformedRe-issue the token via POST /auth/token; ensure the bound non-human principal has a valid structured card_ref.
WYRD_AUTH_401_INVALID_TOKEN401Invalid tokenRe-authenticate to obtain a valid token signed by the current issuer key.
WYRD_AUTH_401_REFRESH_REUSED401Refresh token reusedRe-authenticate. The refresh token family has been revoked because a rotated token was reused.
WYRD_AUTH_401_REFRESH_REVOKED401Refresh token revokedRe-authenticate to obtain a new refresh token.
WYRD_AUTH_401_TOKEN_EXPIRED401Token expiredRe-authenticate to obtain a fresh token.
WYRD_AUTH_401_UNAUTHENTICATED401Not authenticatedPresent a valid Wyrd token as X-Wyrd-Access-Token: Bearer <token>.
WYRD_AUTH_403_ORIGIN_REFUSED403Request origin refusedSend browser-session requests from the Wyrd application’s own origin; cross-site and origin-less browser-session mutations are refused.
WYRD_AUTH_403_PRINCIPAL_ORPHANED403The backing Service or Agent card has been soft-deletedRe-declare the card or use a different principal to obtain a token.
WYRD_AUTH_403_UNREPRESENTABLE_DELEGATION403Delegated permissions cannot be representedThe subject’s and actor’s shared permissions cannot be represented by token scopes, so the exchange issued no token. Exchange with grants whose exact shared authority fits the supported scopes, such as both parties holding the same explicit gateway deployment or model grant.
WYRD_AUTH_404_ADMIN_NOT_FOUND404Admin resource not found in tenantConfirm the issuer URL (and subject for bindings) and that the resource exists in the current tenant.
WYRD_AUTH_404_PRINCIPAL_NOT_FOUND404Requested principal not found in tenantThe principal named by the subject_token or actor_token no longer exists in the current tenant. Re-authenticate both parties and retry the exchange.
WYRD_AUTH_409_ADMIN_CONFLICT409Admin resource already exists or is still referencedA trusted issuer or workload binding with this key already exists, or the issuer still has live bindings. Use a distinct key, or delete the bindings first (or with —cascade).
WYRD_AUTH_409_CONNECTION_CONFLICT409Tenant OIDC connection conflictRe-read GET /v1/identity/oidc/connections and retry with the current expected_revision. Activation also requires a valid recovery API key for a headless principal of this tenant that holds identity_connections:write.
WYRD_AUTH_409_CONNECTION_NOT_TESTED409Tenant OIDC candidate is not freshly testedRun POST /v1/identity/oidc/candidate/test against this exact candidate revision, complete the provider sign-in at the returned authorization_url, and activate within 15 minutes of that successful test.
WYRD_AUTH_413_CARD_SCOPE_TOO_LARGE413Card scope too largeReduce or split the principal’s declared card-ref graph so its transitive observation-target scope fits the token size limit, or issue a narrower card-bound principal.
WYRD_AUTH_503_DISCOVERY_UNAVAILABLE503OIDC discovery unavailableRetry with backoff. Do not re-authenticate; this is an infrastructure or issuer-discovery failure.
WYRD_AUTH_503_VERIFY_UNAVAILABLE503Auth verify backend unavailableRetry with backoff. Do not re-authenticate; this is an infrastructure failure, not a credential failure.

WYRD_CFG

CodeStatusTitleFix
WYRD_CFG_400_INVALID_TOML400wyrd.toml failed TOML syntax parseCheck the TOML syntax in your wyrd.toml file, or the file path if the read itself failed.
WYRD_CFG_400_NAME_DEFAULT_REJECTED400wyrd.toml cannot default nameRemove the name key from [defaults] or [kind.<X>]. Every card must author its own name.
WYRD_CFG_400_SCHEMA_MISMATCH400wyrd.toml schema mismatchCompare the file against the documented wyrd.toml schema in architecture/wyrd-design.md.

WYRD_CLIENT

CodeStatusTitleFix
WYRD_CLIENT_400_CONFIG_INVALID400Client configuration is invalidCorrect the client configuration field named in details and rebuild the client.
WYRD_CLIENT_401_NO_CREDENTIALS401No client credentials availableSet WYRD_ACCESS_TOKEN, WYRD_WORKLOAD_TOKEN with WYRD_TENANT, or WYRD_API_KEY, pass an explicit client credential, or add a default api_key to the Wyrd credentials file.
WYRD_CLIENT_401_SAVED_LOGIN_UNUSABLE401Saved user login cannot be usedRun wyrd auth login --server <url> --tenant <tenant> again, select the intended tenant with the client tenant option or WYRD_TENANT, or pass an explicit credential. The details reason names the failure.
WYRD_CLIENT_413_PAYLOAD_TOO_LARGE413Sealed batch exceeds the client message ceilingReduce the row or batch size, or raise max_message_bytes within the server’s accepted ceiling.
WYRD_CLIENT_422_ROW_DESERIALIZATION422Query row deserialization failedAlign the caller’s row type with the columns and types the query selects.
WYRD_CLIENT_429_QUEUE_FULL429Client ingestion queue is saturatedNo row of the refused record was admitted: flush or back off, then resubmit the same record. Sustained refusals mean the producer outpaces delivery; every refusal bumps the drop counter.
WYRD_CLIENT_503_TRANSPORT_DOWN503Client transport is unavailableVerify the endpoint, DNS, TLS material, and network reachability, then retry once the transport recovers.
WYRD_CLIENT_504_FLUSH_TIMEOUT504Client flush exceeded its drain deadlineIncrease flush_timeout_ms or reduce the in-flight batch size so the drain can complete.

WYRD_CLI

CodeStatusTitleFix
WYRD_CLI_400_CARD_LOAD400Card load failedFix the card files and local references, then retry.
WYRD_CLI_400_CLIENT_CONFIG400Client configuration failedPass a valid server URL and configure a Wyrd credential.
WYRD_CLI_400_DELETE_SELECTOR_EXACT400Delete selector is not exactPass —uid, or pass —kind, —space, —name, and —version.
WYRD_CLI_400_INVALID_ARGUMENT400Invalid CLI argumentFix the argument and retry.
WYRD_CLI_400_MCP_HOST_SELECTION400MCP host selection requiredPass —host for each host to connect (codex, claude-code, copilot-cli, vscode, cursor, pi, hermes); install and open the host first if none is detected.
WYRD_CLI_400_QUERY_CONFIG400Query configuration missingPass —server or set WYRD_SERVER_URL; the credential comes from the ambient chain.
WYRD_CLI_400_SERVER_HOST_UNSUPPORTED400Server host unsupportedRun the server on macOS on aarch64 or Linux (glibc) on x86_64 or aarch64, or use the official container image.
WYRD_CLI_400_USAGE400Invalid command usageCorrect the arguments; run the command with —help for its accepted arguments.
WYRD_CLI_401_NO_CREDENTIALS401No Wyrd credentialsSet WYRD_ACCESS_TOKEN, configure workload identity or WYRD_API_KEY, or add [default].api_key to ~/.config/wyrd/credentials.toml.
WYRD_CLI_401_NO_PLATFORM_CREDENTIAL401No platform credentialSet WYRD_PLATFORM_CREDENTIAL to a platform credential for this deployment.
WYRD_CLI_401_NO_REFRESH_TOKEN401No refresh tokenSet WYRD_REFRESH_TOKEN to the refresh token to rotate.
WYRD_CLI_409_MCP_HOST_INSTALL409MCP host installation failedFix the problem reported for each failed host, then rerun; hosts reported as added, updated, or unchanged are already connected.
WYRD_CLI_409_SERVER_INSTALL_INCOMPLETE409Server installation incompleteRemove the named version directory, then rerun wyrd server install; nothing was activated.
WYRD_CLI_409_SERVER_VERSION_INCOMPATIBLE409Server version incompatibleUpgrade the wyrd CLI to the server’s version line (pip install -U wyrd-ai, or npm install -g wyrd-ai@latest), then retry.
WYRD_CLI_422_SERVER_RELEASE_UNVERIFIED422Server release unverifiedRetry the install; if it fails again, report the release. The current installation is unchanged.
WYRD_CLI_500_IO500CLI filesystem IO failedCheck file paths and permissions, then retry.
WYRD_CLI_500_OUTPUT500CLI output failedRetry the command or use —format text.
WYRD_CLI_500_QUERY500Oracle query failedInspect the stable query error and terminal diagnostics, then retry.
WYRD_CLI_503_CLIENT_TRANSPORT503Wyrd server unavailableCheck the server URL and network connectivity, then retry.
WYRD_CLI_503_MCP_PROXY503MCP proxy failedCheck that the Wyrd server URL is reachable and serves /mcp, and that the host launches wyrd mcp proxy over stdio, then reconnect the host.
WYRD_CLI_503_SERVER_DEV503Local server setup failedFollow the stage’s recovery guidance and rerun with the same tenant and configuration directory; active tenant credentials are never reissued.
WYRD_CLI_503_SERVER_RELEASE_UNAVAILABLE503Server release unavailableCheck network access to github.com, then retry; the current installation is unchanged.

WYRD_DATA

CodeStatusTitleFix
WYRD_DATA_400_INTERFACE_METADATA_REQUIRED400DataCard interface metadata requiredPass an explicit DataInterface with enough metadata to describe the data source.
WYRD_DATA_400_INVALID_INTERFACE_OPTION400Invalid DataCard interface optionUse one of the supported interface option values.
WYRD_DATA_400_INVALID_SPLIT_RULE400Invalid DataCard split ruleUse a supported split operator and reference schema columns that exist.
WYRD_DATA_400_TARGET_COLUMN_UNKNOWN400Unknown DataCard target columnDeclare target columns that exist in the DataCard schema.
WYRD_DATA_400_UNKNOWN_DATA_TYPE400Unknown DataCard data typePass a supported data object, path, or explicit DataInterface.
WYRD_DATA_400_VALIDATION400DataCard validation failedFix the DataCard schema, artifact, stats, or interface metadata.

WYRD_DRIFT

CodeStatusTitleFix
WYRD_DRIFT_400_PROFILE_REQUIRED400Drift profile requiredAttach the method-matching DriftProfile (PsiProfile, SpcProfile, or CustomProfile).
WYRD_DRIFT_400_SIGNAL_METHOD_MISMATCH400Drift signal/method mismatchUse a signal variant supported by the chosen DriftMethod (see DriftSpec docs).
WYRD_DRIFT_400_VALIDATION400Drift Verifier validation failedFix the drift implementation profile, condition, or signal fields.

WYRD_GATEWAY

CodeStatusTitleFix
WYRD_GATEWAY_400_INVALID_CONFIGURATION400Invalid gateway configurationCorrect the field named in details.field. Path and body names must match, credential bindings and secret backends must be configured on the server, and deployments must reference an active credential for the same provider.
WYRD_GATEWAY_400_INVALID_REQUEST400Invalid gateway requestCorrect the field named in details.field. Models use the <provider>/<model> projection and a fallback override is a non-empty, duplicate-free list that excludes the requested model.
WYRD_GATEWAY_404_MODEL_UNAVAILABLE404Gateway model unavailableRequest a model the tenant has deployed for this operation, or ask a tenant administrator to add a deployment or fallback candidate.
WYRD_GATEWAY_404_RESOURCE_NOT_FOUND404Gateway resource not found in tenantList provider credentials or deployments to confirm the name exists in the current tenant.
WYRD_GATEWAY_409_RESOURCE_CONFLICT409Gateway resource conflicts with its current stateA revoked credential cannot be replaced, a credential referenced by a deployment cannot be deleted, a pricing version’s content is immutable, and an identical batch creation still pending cannot be repeated. Use a new name or version, remove the referencing deployment first, or vary the batch metadata.
WYRD_GATEWAY_422_COST_UNBOUNDED422Gateway call cost cannot be boundedA budget applies or unknown cost is rejected, so the call needs active pricing for its model and a bounded request such as a maximum output token count.
WYRD_GATEWAY_429_BUDGET_EXCEEDED429Gateway budget exceededWait for the next budget period, request a smaller bounded call, or ask a tenant administrator to raise the budget.
WYRD_GATEWAY_429_LIMIT_EXCEEDED429Gateway limit exceededRetry after details.retry_after_seconds, reduce concurrency, or ask a tenant administrator to raise the limit.
WYRD_GATEWAY_502_UPSTREAM_UNAVAILABLE502Gateway upstream unavailableRetry with backoff. If failures persist, a tenant administrator should check the deployment’s provider, credential, and fallback configuration.
WYRD_GATEWAY_504_DEADLINE_EXCEEDED504Gateway deadline exceededRetry with a longer deadline or a smaller request.

WYRD_LOADER

CodeStatusTitleFix
WYRD_LOADER_400_CONFIG_LOAD_FAILED400Config load failedCheck wyrd.toml syntax and structure.
WYRD_LOADER_400_INVALID_ENVELOPE400Invalid card envelopeEnsure the card has apiVersion, kind, metadata, and spec fields.
WYRD_LOADER_400_IO400Loader IO errorCheck file permissions and that all referenced files exist.
WYRD_LOADER_400_PATH_ABSOLUTE_ADVISORY400Absolute path reference breaks portabilityUse relative paths for portability across environments.
WYRD_LOADER_400_PATH_ESCAPE400Path reference escapes workspaceUse relative paths within the workspace root.
WYRD_LOADER_400_YAML_SYNTAX400YAML syntax errorFix the YAML syntax error and retry.

WYRD_MODEL

CodeStatusTitleFix
WYRD_MODEL_400_CUSTOM_LOADER_INVALID400Invalid custom loaderSet CustomMeta.loader_module and CustomMeta.loader_class to non-empty values.
WYRD_MODEL_400_DTYPE_NORMALIZE_FAILED400Could not normalize signature dtypeProvide a FieldSpec with a canonical Arrow logical dtype string.
WYRD_MODEL_400_HF_REVISION_INVALID400Invalid HuggingFace revisionPass a 7-40 character lowercase hex revision from the HuggingFace repo.
WYRD_MODEL_400_HF_TASK_MISSING400Missing HuggingFace taskSet HuggingfaceMeta.hf_task before saving.
WYRD_MODEL_400_MISSING_SIGNATURE400Missing model signaturePass signature fields explicitly or build a ModelSignature before declaration.
WYRD_MODEL_400_SHAPE_INVALID400Invalid model signature shapeUse Dim::Fixed(n) with n > 0 or Dim::Dynamic(name) for unknown dimensions.
WYRD_MODEL_400_UNKNOWN_MODEL_TYPE400Unknown ModelCard model typePass a supported model object or an explicit ModelInterface.
WYRD_MODEL_400_VALIDATION400ModelCard validation failedFix the ModelCard signature, framework version, or interface configuration.
WYRD_MODEL_501_SERIALIZER_UNAVAILABLE501Required serializer unavailableInstall the Wyrd Python extra for the required framework serializer.

WYRD_OPERATOR

CodeStatusTitleFix
WYRD_OPERATOR_400_INVALID_CONNECTION400Invalid Operator connectionSend the provider-tagged shape matching the connection’s provider with a non-empty secret and a normalized https origin.
WYRD_OPERATOR_404_CONNECTION_NOT_FOUND404Operator connection not foundList GET /v1/operator-connections in the same tenant and retry with one of those connection IDs.
WYRD_OPERATOR_409_CONNECTION_CONFLICT409Operator connection name conflictChoose another name, or PATCH the existing connection to rotate its secret.
WYRD_OPERATOR_503_KEY_UNAVAILABLE503Operator connection key unavailableRestore the configured Operator key provider so it can supply the active key, then retry.

WYRD_ORIGIN

CodeStatusTitleFix
WYRD_ORIGIN_400_VALIDATION400Card origin validation failedProvide a non-empty repo and a 7-40 character lowercase hex commit; omit empty path values.

WYRD_PERMISSION

CodeStatusTitleFix
WYRD_PERMISSION_401_UNAUTHENTICATED401Authentication requiredSend a valid X-Wyrd-Access-Token: Bearer <token> header before invoking permission-protected routes.
WYRD_PERMISSION_403_DENIED_RBAC403Permission denied (RBAC)Request the required role from a workspace admin.
WYRD_PERMISSION_500_ROLE_CORRUPT500Role row’s permissions JSONB is corruptInspect the offending row in wyrd.auth_roles; restore or rewrite the permissions JSONB with a valid permission array. This is not retryable.

WYRD_PROMPT

CodeStatusTitleFix
WYRD_PROMPT_400_EMPTY_MODEL400Prompt model is emptySet prompt.model to a non-empty provider model id.
WYRD_PROMPT_400_INVALID400Invalid Prompt fieldFix the field named in details.field: author either portable system/messages/settings/response_format or native format/body, with provider and model once.
WYRD_PROMPT_400_INVALID_MEDIA_TYPE400Invalid media typeSupply the required MIME type and a provider-supported URI.
WYRD_PROMPT_400_INVALID_RESPONSE_SCHEMA400JsonSchema response_type schema is not an objectThe schema of ResponseType::JsonSchema must be a JSON object.
WYRD_PROMPT_400_INVALID_VARIABLE_NAME400Invalid variable nameVariable names must match ^[a-zA-Z_][a-zA-Z0-9_]*$.
WYRD_PROMPT_400_LOADER_BAD_EXTENSION400Loader extension not supportedUse .json, .yaml, or .yml.
WYRD_PROMPT_400_MEDIA_INVALID_EXTENSION400Media file extension is unsupportedUse a supported image or document extension.
WYRD_PROMPT_400_MEDIA_IN_SYSTEM_MESSAGE400Media placeholder in system messageMove media placeholders to user or assistant content.
WYRD_PROMPT_400_MEDIA_NOT_REGULAR_FILE400Media path is not a regular filePass a regular local file path.
WYRD_PROMPT_400_MEDIA_TOO_LARGE400Media file too largeUse a smaller media file or upload it to the provider and bind a file URI.
WYRD_PROMPT_400_PROVIDER_MISMATCH400Request shape did not match the dialed providerPick the matching provider client or dispatch through the runtime registry.
WYRD_PROMPT_400_SETTINGS_DECODE400model_settings decode failedCheck model_settings field names and types; unknown fields are allowed and pass through.
WYRD_PROMPT_400_SETTINGS_PROVIDER_MISMATCH400model_settings provider mismatchPass the settings type for this provider, or pass a dict.
WYRD_PROMPT_400_UNSUPPORTED_MEDIA_FOR_PROVIDER400Unsupported media for providerUse a media source supported by the selected provider.
WYRD_PROMPT_401_PROVIDER_AUTH401Provider authentication failedCheck the provider credentials environment variables.
WYRD_PROMPT_422_INVALID_OUTPUT_SCHEMA422Invalid output schemaPass a dict[str, type], raw JSON Schema object, ResponseFormat, or pydantic BaseModel subclass.
WYRD_PROMPT_422_MEDIA_PLACEHOLDER_NOT_ISOLATED422Media placeholder is not isolatedEnsure each ${media:name} token occupies its own native text part before binding.
WYRD_PROMPT_422_MISSING_MEDIA_VARIABLE422Media variable missingBind every declared media variable before rendering the prompt.
WYRD_PROMPT_422_MISSING_VARIABLE422Render variable missingSupply every declared variable when calling Prompt::render.
WYRD_PROMPT_422_PYDANTIC_REQUIRED422Pydantic requiredInstall pydantic or use the stdlib dict[str, type] output schema path.
WYRD_PROMPT_422_RESPONSE_DECODE422Response did not match requested schemaInspect the provider response or relax the prompt response schema.
WYRD_PROMPT_422_UNDECLARED_MEDIA_PLACEHOLDER422Undeclared media placeholder in requestBind only media placeholders the Prompt references as ${media:name}.
WYRD_PROMPT_429_PROVIDER_RATE_LIMIT429Provider rate limitBack off, lower concurrency, or upgrade provider tier.
WYRD_PROMPT_500_LOADER_IO500Loader IO failureInspect the OS error; usually missing path or permission denied.
WYRD_PROMPT_500_MEDIA_IO500Media IO failureInspect the OS error; usually missing path or permission denied.
WYRD_PROMPT_500_SERIALIZE_REQUEST500Serialize native request failed during validationThe native request could not be serialized to JSON. Capture the spec and file an issue.
WYRD_PROMPT_501_UNSUPPORTED_HANDOFF501Unsupported message conversionUse a same-provider handoff or convert manually.
WYRD_PROMPT_502_PROVIDER_UPSTREAM502Provider upstream errorRetry with backoff; provider returned a 5xx.
WYRD_PROMPT_504_PROVIDER_TIMEOUT504Provider request timed outRetry; raise the per-request timeout if this is chronic.

WYRD_QUERY

CodeStatusTitleFix
WYRD_QUERY_400_INVALID_FIELD400Invalid query field or operatorReference a supported field and use an operator valid for its type. Ordering operators require a numeric or timestamp field.
WYRD_QUERY_400_INVALID_SYNTAX400Invalid query syntaxFix the query string at the reported offset and retry. See the metadata query grammar.
WYRD_QUERY_400_TOO_COMPLEX400Query too complexReduce the number of predicates or the nesting depth and retry.

WYRD_RBAC

CodeStatusTitleFix
WYRD_RBAC_409_BUILTIN_ROLE_IMMUTABLE_NAME409Builtin role names are immutableBuiltin role names are durable identifiers used by JWT role resolution and re-seeding. Create a replacement role instead of renaming a builtin role.

WYRD_REGISTRY

CodeStatusTitleFix
WYRD_REGISTRY_400_CARD_REF_UID_NOT_RESOLVABLE_HERE400card_ref.uid was populated for a registry lookup that resolves by (space, name, version)Submit the request with card_ref.uid = None; the registry resolves by identity tuple. Use get_card_by_uid if you have a card_uid.
WYRD_REGISTRY_400_CURSOR_MISMATCH400Cursor does not match filtersDiscard the cursor and restart pagination with the current filters.
WYRD_REGISTRY_400_DEPENDENCY_CYCLE400Card dependency cycleRemove the cyclic CardRef dependency and submit an acyclic card graph.
WYRD_REGISTRY_400_HEAVY_ARTIFACT_NOT_SOLE_SUBMISSION400Heavy artifact submission must be standaloneRegister the artifact-bearing card alone, then reference it from a later composite request.
WYRD_REGISTRY_400_IDEMPOTENCY_KEY_INVALID400Invalid idempotency keyProvide an 8-256 character Idempotency-Key without whitespace.
WYRD_REGISTRY_400_IDEMPOTENCY_KEY_REQUIRED400Idempotency key requiredProvide a stable Idempotency-Key header and retry the declaration.
WYRD_REGISTRY_400_INVALID_ARTIFACT_PATH400Invalid artifact pathUse a relative forward-slash path without empty or parent-traversal segments.
WYRD_REGISTRY_400_INVALID_CARD_SPEC400Card spec failed type-driven deserializationVerify the kind/spec field combination matches the documented Wyrd v1 schema for that kind.
WYRD_REGISTRY_400_INVALID_VERSION_BLOCK400The version block is invalid for this operationCheck the error message for the specific constraint: Service and Agent cards require an exact semver pin; version components must fit i64; a scoped bump must stay within the authored range.
WYRD_REGISTRY_400_LIST_LIMIT_OUT_OF_RANGE400List limit is zero or exceeds the per-tenant capPass a limit in 1..=LIST_LIMIT_MAX (currently 200).
WYRD_REGISTRY_400_MANIFEST_HASH_MISMATCH400Artifact manifest hash mismatchRecompute the JCS manifest hash and retry.
WYRD_REGISTRY_400_REQUIREMENT_NOT_RESOLVABLE_HERE400card_ref.version is a Requirement; this endpoint accepts a PinResolve the Requirement to a Pin via the future resolve_card_ref endpoint, or pass a Pin directly.
WYRD_REGISTRY_400_SPEC_TOO_LARGE400Card spec exceeds MAX_SPEC_BYTES (256 KiB)Reduce the spec size or split into multiple cards. If artifacts are inlined, move them to an Artifact card with object_store backing.
WYRD_REGISTRY_400_UNRESOLVED_INLINE_REFERENCE400Unresolved inline CardRefResolve nested inline file references in the loader before submitting the card.
WYRD_REGISTRY_400_UNRESOLVED_PATH_REF400Unresolved path CardRefExpand path references in the loader before submitting the card.
WYRD_REGISTRY_400_UPLOAD_INTERRUPTED400Upload interruptedRetry the upload while the declaration operation remains pending.
WYRD_REGISTRY_400_VERSION_REQUIRED400metadata.version is present but emptyProvide a valid semver string (e.g. "1.0.0") or omit metadata.version entirely to let the server auto-assign the next version.
WYRD_REGISTRY_404_CARD_NOT_FOUND404No card matches the supplied identityCheck (space, kind, name, version) or the card_uid is correct and the card is declared in the current tenant.
WYRD_REGISTRY_409_IDEMPOTENCY_CONFLICT409Idempotency key conflictUse the original request with this key or choose a new key for different content.
WYRD_REGISTRY_409_SPEC_DRIFT409Re-declare with the same identity but a different spec_hash; same-version cards are immutableBump metadata.version to publish a new spec, or revert your spec to match the declared version.
WYRD_REGISTRY_410_OPERATION_EXPIRED410Declaration operation expiredStart a new declaration with a new idempotency key.
WYRD_REGISTRY_422_UNRESOLVED_DEPENDENCY422Card reference could not be resolvedRegister the referenced card in the current tenant before submitting this card.
WYRD_REGISTRY_500_VERSION_CONFLICT500Card uid mismatch for same identityInternal invariant violation; report with the request id and audit_id.
WYRD_REGISTRY_503_REGISTRY_UNAVAILABLE503Transient Postgres or RLS misconfiguration; retry with backoffRetry with exponential backoff (60s cap). If persistent, check Postgres connectivity, the tenant row, and the RLS role bindings.
WYRD_REGISTRY_507_ARTIFACT_VERIFY_FAILED507Artifact verification failedRe-upload the artifact and retry finalization.

WYRD_RUNTIME

CodeStatusTitleFix
WYRD_RUNTIME_404_PROVIDER404Provider not registered in the runtimeRegister a provider client for the requested provider before dispatching the request.
WYRD_RUNTIME_422_RESPONSE_DECODE422Provider response did not match the prompt schemaInspect the provider output against the prompt’s declared response schema.

WYRD_SDK

CodeStatusTitleFix
WYRD_SDK_400_BIFROST_NOT_STARTED400WyrdState Bifrost writer is not startedCall start_bifrost on the state before opening a run and emitting observations.
WYRD_SDK_400_CARD_KIND_MISMATCH400WyrdState Card kind mismatchUse an alias for a Card of the expected kind.
WYRD_SDK_400_INVALID_OBSERVATION400Invalid observation inputEmit a flat object of boolean, integer, finite float, or string values, with valid feature names and media bindings.
WYRD_SDK_400_INVALID_STATE_BUNDLE400Invalid WyrdState bundlePull the intended root Card again with wyrd pull —output-dir <dir>, then load that complete directory.
WYRD_SDK_400_RUNTIME_HYDRATION_FAILED400Runtime Card hydration failedProvide the required custom interface/load arguments or regenerate a complete compatible bundle.
WYRD_SDK_400_UNHYDRATED_ARTIFACT400Card bundle is missing artifact payloadsRun wyrd pull for the intended root Card with —output-dir <dir> and without —metadata-only, then load that directory.
WYRD_SDK_404_UNKNOWN_ALIAS404Unknown WyrdState aliasUse an alias returned by the loaded WyrdState bundle.
WYRD_SDK_404_UNKNOWN_VERIFIER404Verifier is not bound to this subjectName a Verifier bound in verified_by to the view’s subject Card, or open the view on the Card that binds it.
WYRD_SDK_409_BIFROST_ALREADY_STARTED409WyrdState Bifrost writer is already startedReuse the state’s existing writer, or shut it down and create a new WyrdState to start again.
WYRD_SDK_409_BIFROST_CLOSED409WyrdState Bifrost writer is closedCreate a new WyrdState and start its Bifrost writer; a shut-down state stays closed to writes.
WYRD_SDK_409_TELEMETRY_PROVIDER_EXISTS409A tracer provider is already installedAdd the Wyrd span exporter to the application’s existing provider instead of calling start_telemetry.
WYRD_SDK_503_TELEMETRY_FLUSH_FAILED503Telemetry flush failedCheck the OpenTelemetry exporter’s logs and the state’s credentials, then retry flush or shutdown.
WYRD_SDK_504_TELEMETRY_FLUSH_TIMEOUT504Telemetry flush timed outCheck that the Wyrd server’s OTLP endpoint is reachable, raise the OpenTelemetry SDK export timeout if spans are large, and retry flush or shutdown.
WYRD_SDK_504_VERIFICATION_WAIT_TIMEOUT504Verification execution did not settle in timeWait again with the same execution ID, or read its status; a submission lost before queue acceptance never settles and must be submitted again.

WYRD_SERVER

CodeStatusTitleFix
WYRD_SERVER_503_NOT_READY503Server not readyWait for readiness probes to recover; check the details.checks object for the failing component and reason code.
WYRD_SERVER_503_SERVICE_UNAVAILABLE503Service unavailableRetry with exponential backoff; the server is shedding load to protect inflight requests.
WYRD_SERVER_504_REQUEST_TIMEOUT504Request timeoutReduce the request size or split the operation; the server’s per-request timeout was exceeded.

WYRD_SESSION

CodeStatusTitleFix
WYRD_SESSION_500_APPEND500Session memory append failedInspect the session backend and ensure the caller has write permission for the session.
WYRD_SESSION_500_RECENT500Session memory recent fetch failedInspect the session backend; ensure it is reachable and the session id exists.

WYRD_SOURCE

CodeStatusTitleFix
WYRD_SOURCE_400_VALIDATION400Source card validation failedFix Source card connection coordinates or auth env-var names and retry.

WYRD_SPEC

CodeStatusTitleFix
WYRD_SPEC_400_DUPLICATE_BINDING_OPERATOR400Duplicate binding OperatorRemove the duplicate on_failure Operator from this binding.
WYRD_SPEC_400_DUPLICATE_SUBMISSION400Duplicate card submissionSubmit each (kind, space, name, version) identity at most once per request.
WYRD_SPEC_400_DUPLICATE_VERIFICATION_BINDING400Duplicate verification bindingRemove the duplicate verified_by entry; one subject occurrence binds each Verifier version once.
WYRD_SPEC_400_INVALID_BINDING_REF_KIND400Invalid verification binding reference kindSet runs_on to a Trigger CardRef or inline TriggerSpec, and each on_failure entry to an Operator CardRef or inline OperatorSpec.
WYRD_SPEC_400_INVALID_OPERATOR400Invalid OperatorReference only failure-context fields in {{field}} templates, keep the URL origin literal https, and do not author server-owned headers.
WYRD_SPEC_400_INVALID_SERVICE_COMPONENT_KIND400Invalid Service component kindMove Verifier, Trigger, Operator, Audit, and Source cards out of Service.components; attach a Verifier with verified_by.
WYRD_SPEC_400_INVALID_VERIFIER_REF_KIND400Invalid Verifier reference kindSet verified_by[..].verifier to a Verifier CardRef.
WYRD_SPEC_400_OPERATOR_CONNECTION_UNAVAILABLE400Operator connection unavailableCreate or re-enable an active connection of the Operator’s provider with this name in the tenant, whose HTTP origin and auth scheme match the Operator.
WYRD_SPEC_400_TRIGGER_ACTIVATION_MISMATCH400Trigger activation does not match VerifierAttach a schedule Trigger only to a Verifier whose samples slots declare the recorded features it judges; attach a group_end Trigger only to a Verifier with source inputs, reacting through on_verdict_change; supply other evidence through verify or submit.
WYRD_SPEC_400_UNBOUND_VERIFIER_PEER400Unbound Verifier peerAdd the Verifier CardRef to the Service, a Service component, or a submitted Agent verified_by list, or declare the shared Verifier separately.
WYRD_SPEC_400_VALIDATION400Validation failedCheck the submitted Wyrd request fields against the published schema and retry.
WYRD_SPEC_404_NOT_FOUND404Resource not foundCheck that the referenced Wyrd resource exists.
WYRD_SPEC_409_CONFLICT409ConflictRefresh the resource and retry with the current version or idempotency key.
WYRD_SPEC_413_PAYLOAD_TOO_LARGE413Payload too largeReduce the request body size and retry.
WYRD_SPEC_500_INTERNAL500Internal errorRetry later or inspect server logs using the request ID.
WYRD_SPEC_502_UPSTREAM_FAILURE502Upstream dependency failedCheck the upstream dependency health and retry policy.
WYRD_SPEC_504_TIMEOUT504TimeoutRetry with a longer timeout or reduce the request scope.

WYRD_SQL

CodeStatusTitleFix
WYRD_SQL_403_RLS_DENIED403Row-level security policy violationThe current tenant binding does not permit this row. Verify the request’s tenant context matches the row’s data_tenant_id.
WYRD_SQL_404_NO_ROWS404Row not foundConfirm the identifier and re-query.
WYRD_SQL_409_CHECK_VIOLATION409Check constraint violatedInspect the column values and adjust.
WYRD_SQL_409_CONFLICT409SQL operation conflictReload the affected row and retry only if the row is still in the expected state.
WYRD_SQL_409_FK_VIOLATION409Foreign key constraint violatedConfirm the referenced row exists before retrying.
WYRD_SQL_409_TRIGGER_EXCEPTION409Trigger exception raisedThe operation violated a trigger-enforced invariant; inspect the constraint name for details.
WYRD_SQL_409_UNIQUE_VIOLATION409Unique constraint violatedChange the conflicting identifier and retry.
WYRD_SQL_500_CONNECT500Database connection failedCheck WYRD_DATABASE_URL and verify the database is reachable.
WYRD_SQL_500_INSUFFICIENT_PRIVILEGE500Insufficient database privilegesRun wyrd-server migrate as the platform login (WYRD_PLATFORM_DATABASE_URL, else WYRD_DATABASE_URL), which must own the database or hold CREATE on it; serving processes never run DDL.
WYRD_SQL_500_INVALID_TENANT_ID500Stored tenant identifier is invalidInspect platform.tenants and repair rows whose data_tenant_id does not satisfy Wyrd’s UUIDv7 contract.
WYRD_SQL_500_INVARIANT_VIOLATION500SQL invariant violationInspect the stored row and repair data that no longer matches Wyrd’s schema invariants.
WYRD_SQL_500_MIGRATE500Database migration failedInspect the failing migration SQL and check server logs.
WYRD_SQL_500_MIGRATE_CHECKSUM500Migration checksum driftA previously-applied migration was modified. Restore the original or write a new migration.
WYRD_SQL_500_QUERY500Database query failedCheck server logs for the SQL error.
WYRD_SQL_500_TX_FAILED500Transaction failedCheck server logs; the transaction has been rolled back.
WYRD_SQL_503_SCHEMA_NOT_READY503Database schema is not ready for servingRun wyrd-server migrate as the platform login. Serve with ordinary logins that are neither superuser nor BYPASSRLS: WYRD_DATABASE_URL alone, or a WYRD_PLATFORM_DATABASE_URL login that owns Wyrd’s objects plus a WYRD_DATABASE_URL login that does not.

WYRD_STORAGE

CodeStatusTitleFix
WYRD_STORAGE_400_ARTIFACT_TOO_LARGE400Artifact size exceeds backend capacitySplit the artifact into multiple cards or use a backend with higher per-object limits.
WYRD_STORAGE_400_INVALID_UPLOAD_ID400Upload id not recognisedUse the upload_id returned by POST /v1/cards/upload/init.
WYRD_STORAGE_400_INVALID_URI400Source URI failed to parsePass an absolute URI with a scheme and authority recognised by the configured backend.
WYRD_STORAGE_400_SHA256_INVALID400Invalid SHA-256 in upload initRecompute SHA-256 of the artifact and base64-encode the 32-byte digest.
WYRD_STORAGE_400_SHA256_MISMATCH400Stored object SHA-256 does not match expected_sha256Recompute the SHA-256 of the artifact bytes and retry.
WYRD_STORAGE_400_SIZE_INVALID400Invalid expected_size_bytesPass a u64 byte length that matches the actual file size.
WYRD_STORAGE_400_SIZE_MISMATCH400Stored object byte length does not match expected_size_bytesVerify the file size you reported in upload_init matches the bytes you uploaded.
WYRD_STORAGE_400_TENANT_PATH_MISMATCH400Tenant path validation rejected upload initEnsure relativepath contains no .., no leading /, and only [A-Za-z0-9.-] characters.
WYRD_STORAGE_400_TENANT_PREFIX_INVALID400Source URI tenant prefix is not a UUIDv7Object URIs must start with the caller’s data_tenant_id.
WYRD_STORAGE_403_UPLOAD_FOREIGN_TENANT403Upload belongs to a different tenantAuthenticate with a token whose data_tenant_id matches the upload’s tenant prefix.
WYRD_STORAGE_404_OBJECT_NOT_FOUND404Object not found in backendVerify card_uid and relative_path; re-upload if the object was deleted.
WYRD_STORAGE_404_UPLOAD_NOT_FOUND404Upload id not foundUse the upload_id returned by POST /v1/cards/upload/init.
WYRD_STORAGE_409_ENCRYPTION_MISSING409Server-side encryption verification failedConfigure backend server-side encryption and retry.
WYRD_STORAGE_409_UPLOAD_NOT_PENDING409Cannot complete or abort a terminal uploadInspect upload status; only pending uploads can be completed or aborted.
WYRD_STORAGE_412_PRECONDITION412Object changed during downloadDelete the partial file and re-issue download init for a fresh URL.
WYRD_STORAGE_416_RANGE_NOT_SATISFIABLE416Source changed mid-downloadDelete the partial file and sidecar, then re-download.
WYRD_STORAGE_500_BACKEND500Backend storage operation failedRetry the operation. If failures persist, check backend dashboard and storage server logs.
WYRD_STORAGE_500_CONFIG_INVALID500Storage settings invalidInspect server startup logs; fix the named env var and restart.
WYRD_STORAGE_500_CREDENTIAL_CHAIN500Backend credential chain failedVerify backend credentials are reachable in the server environment.
WYRD_STORAGE_500_LIFECYCLE_MISSING500S3 lifecycle missing required ruleApply the recommended lifecycle policy for incomplete multipart uploads.
WYRD_STORAGE_503_BACKEND_UNAVAILABLE503Backend transiently unavailableRetry with exponential backoff.
WYRD_STORAGE_503_PRESIGN_EXPIRED503Presigned URL expiredCall upload part-url or download init to obtain a fresh URL and retry.

WYRD_TOOL

CodeStatusTitleFix
WYRD_TOOL_400_INVALID_SCHEMA400Tool declaration malformedInspect the tool declaration name, description, and JSON input schema.
WYRD_TOOL_404_NOT_REGISTERED404Tool name not registeredRegister the tool before resolving it, or check the name against the registry’s available tools.
WYRD_TOOL_409_NAME_TAKEN409Tool name already registeredPick a unique tool name or clear the registry before registering the replacement.
WYRD_TOOL_422_INPUT422Tool invocation input did not match the declared input schemaAdjust the tool call arguments to match the schema the tool declares.
WYRD_TOOL_500_CALL500Tool invocation failed during executionCheck the tool’s underlying cause and fix the tool implementation or its inputs.
WYRD_TOOL_500_OUTPUT500Tool output could not be serialized to JSONEnsure the tool output type serializes to a JSON-compatible value.

WYRD_TS

CodeStatusTitleFix
WYRD_TS_501_HEAVY_UPLOAD_DEFERRED501TypeScript heavy upload is deferredUse the CLI or Python SDK for heavy artifact uploads.

WYRD_VALA

CodeStatusTitleFix
WYRD_VALA_400_BIFROST_INVALID_COMPACTION_TARGET400Invalid Bifrost compaction targetOmit compaction_target_file_size_bytes to follow the deployment default, or supply at least 134217728 bytes.
WYRD_VALA_400_BIFROST_INVALID_PHYSICAL_LAYOUT400Invalid Bifrost physical layoutDeclare hour or day granularity, an optional non-null timestamp time column, at most four unique schema columns as sort keys, and supported sort/null values.
WYRD_VALA_400_BIFROST_RESERVED_COLUMN400Reserved system column nameRename the column; run_id, card_uid, principal_id, wyrd_request_id, and wyrd_ingested_at are reserved.
WYRD_VALA_400_BIFROST_TENANT_ISOLATION_COLUMN_MISSING400Tenant isolation column missingAdd the server-managed data_tenant_id Utf8 column to the physical table schema.
WYRD_VALA_400_BIFROST_UNDECLARED_FIELD400Undeclared Bifrost fieldRemove the key or declare it on the table; store open data in a Variant field.
WYRD_VALA_400_BIFROST_UNSUPPORTED_TYPE400Unsupported Bifrost typeUse a supported Bifrost column type; store open data in a Variant field.
WYRD_VALA_400_FILTER_INVALID400Query filter invalidCorrect the filter value; see the error detail for the offending field.
WYRD_VALA_400_INGEST_PROTO400Invalid ingest requestFix the ingest request fields and retry with a valid Wyrd ingest payload.
WYRD_VALA_400_OTLP_REQUEST_MALFORMED400OTLP request body malformedThe OTLP request body could not be decoded. Verify the Content-Type matches the encoding (application/x-protobuf or application/json) and that the payload is a valid OTLP ExportRequest.
WYRD_VALA_400_PAGE_TOKEN_INVALID400Page token invalidRestart the query from page 1 without a page_token.
WYRD_VALA_400_QUERY_INVALID_SQL400Invalid or unsupported query SQLSubmit a single SELECT statement; DDL/DML and unsupported constructs are rejected.
WYRD_VALA_400_SCHEMA_PARSE400Bifrost schema parse failedCorrect the column type or the row value so it satisfies the table’s declared DataTypeSpec; declare a Variant field for open data.
WYRD_VALA_400_VARIANT_INVALID_JSON400Invalid Variant JSONSupply valid JSON text or a valid arrow.parquet.variant value for the Variant field; use try_parse_json in SQL to map invalid text to null.
WYRD_VALA_400_VARIANT_NUMERIC_OUT_OF_RANGE400Variant numeric value out of rangeSend integers within the signed 64-bit or Variant decimal range, or send the number as a string.
WYRD_VALA_400_VARIANT_TOO_DEEP400Variant value too deepFlatten the value so it nests at most 64 levels, counting the root container as one.
WYRD_VALA_400_WINDOW_REQUIRED400Query time window requiredSupply since and/or until on the query request.
WYRD_VALA_401_INGEST_AUTH401Ingest authentication failedProvide a valid Wyrd access token with permission to write the target ingest surface.
WYRD_VALA_401_PRINCIPAL_UNRESOLVED401Ingest principal unresolvedAuthenticate with a token containing a valid principal identity and retry.
WYRD_VALA_403_BIFROST_CARD_SCOPE403Card outside principal card scopeAttribute the write or call to a Card the authenticated principal is authorized to tag, or add the target Card to the Service card’s components.
WYRD_VALA_403_BIFROST_RESERVED_BUILTIN_WRITE403Reserved built-in write deniedWrite through the supported observation or audit API instead of directly targeting a reserved built-in table.
WYRD_VALA_403_BIFROST_TENANT_BINDING_MISSING403No tenant binding for OLAP operationAcquire a TenantConn for a valid tenant before writing or querying Bifrost tables.
WYRD_VALA_403_CARD_UNRESOLVED403Card reference unresolvedUse a card_ref that resolves to a declared card in the current tenant.
WYRD_VALA_403_QUERY_FORBIDDEN403Query forbiddenThe principal lacks bifrost_query:read for this table.
WYRD_VALA_403_QUERY_PEER_SECURITY403Query peer security validation failedReject the peer attempt and investigate credential/fence/replay state.
WYRD_VALA_404_BIFROST_TABLE_NOT_FOUND404Bifrost table not foundCreate the table via the catalog API before writing or querying.
WYRD_VALA_404_RUNNING_QUERY_NOT_FOUND404Running query not foundVerify the request identity or list currently running queries for the authenticated tenant.
WYRD_VALA_404_TRACE_NOT_FOUND404Trace not foundConfirm the trace_id and that it falls within the queried time window.
WYRD_VALA_409_BIFROST_COMMIT_CONFLICT409Concurrent OLAP commit conflictRetry the write; another writer committed to the same table concurrently.
WYRD_VALA_409_BIFROST_COMPACTION_TARGET_MISMATCH409Bifrost compaction target mismatchRetry with the table’s registered compaction target, omit it, or register a different table.
WYRD_VALA_409_BIFROST_COMPACTION_TYPE_MISMATCH409Bifrost compaction type mismatchRetry with the table’s registered compaction type, omit it, or register a different table.
WYRD_VALA_409_BIFROST_DUPLICATE_FAILED_BATCH409Duplicate batch previously failedThis batch_id was committed but the write failed. Use a new batch_id to retry.
WYRD_VALA_409_BIFROST_FINGERPRINT_MISMATCH409Schema fingerprint mismatchThe Arrow schema does not match the registered table schema. Evolve the schema explicitly.
WYRD_VALA_409_BIFROST_LAYOUT_MISMATCH409Bifrost physical layout mismatchRetry with the table’s registered physical layout or register a different table.
WYRD_VALA_409_RUNNING_QUERY_CONFLICT409Running query ownership conflictDo not retry cancellation automatically; investigate the contradictory Oracle owners.
WYRD_VALA_409_STREAM_MISMATCH409Live-tail stream identity mismatchRefresh the Scribe stream identity from the cluster catalog and retry the tail-fetch against the current writer stream.
WYRD_VALA_410_PAGE_SNAPSHOT_EXPIRED410Page snapshot expiredrestart the query from page 1
WYRD_VALA_412_NO_ACTIVE_TABLE412No active Bifrost tableBind a table with use_table or use_table_by_name before inserting rows.
WYRD_VALA_413_PAYLOAD_TOO_LARGE413Ingest payload too largeReduce the request below the enforced limit reported in this problem and retry.
WYRD_VALA_413_QUERY_RESULT_TOO_LARGE413Query result too largeAdd a LIMIT or narrower filters for large result sets.
WYRD_VALA_413_VARIANT_TOO_LARGE413Variant value too largeKeep each Variant value at most 8388608 encoded bytes (metadata plus value); split large payloads across rows.
WYRD_VALA_422_QUERY_MEMORY_REQUEST_TOO_LARGE422Query memory request too largeReduce the requested range or query memory footprint; retrying unchanged will not succeed.
WYRD_VALA_429_INGEST_BUSY429Ingest writer busyThe per-table ingest buffer is full. Back off and retry the full request; no rows were written.
WYRD_VALA_429_QUERY_ADMISSION_REJECTED429Query admission rejectedRetry after the supplied bounded delay or reduce demand.
WYRD_VALA_429_QUERY_QUEUE_FULL429Query queue fullRetry after capacity becomes available.
WYRD_VALA_500_BIFROST_INTERNAL500Internal Bifrost failureCheck server logs for details and contact support if the issue persists.
WYRD_VALA_500_BIFROST_METADATA_MISMATCH500Bifrost table metadata mismatchInvestigate table metadata integrity; possible mid-flight schema-evolution race.
WYRD_VALA_500_ICEBERG_MISSING500Domain table Iceberg table missingThe Iceberg table for a pre-declared domain table is missing. Run the restore runbook.
WYRD_VALA_500_PHYSICAL_DRIFT500Domain table physical schema driftThe Iceberg table physical schema drifted from the declared schema. Run the repair runbook.
WYRD_VALA_500_QUERY_EXECUTION_FAILED500Query execution failedInspect the scrubbed terminal error and server diagnostics before retrying.
WYRD_VALA_500_QUERY_RECONCILIATION_INVARIANT500Query reconciliation invariant violatedStop and investigate cross-tier row corruption.
WYRD_VALA_500_QUERY_TENANT_INVARIANT500Query tenant invariant violatedStop and investigate tenant isolation; never retry as caller input.
WYRD_VALA_500_REDACTION_FAILED500Write-path redaction failedThe redaction classifier failed on this batch. Retry; if it persists, check the classifier installation.
WYRD_VALA_500_SCHEMA_DRIFT500Domain table schema fingerprint driftA domain table schema changed without a coordinated migration. Restore the previous schema or run the migration runbook.
WYRD_VALA_502_QUERY_STREAM_INCOMPLETE502Query stream incompleteDiscard partial output; retry because no terminal was observed.
WYRD_VALA_502_QUERY_STREAM_PROTOCOL502Query stream protocol violationDiscard partial output and retry through a healthy server.
WYRD_VALA_503_BIFROST_CATALOG_UNREACHABLE503OLAP catalog unreachableCheck the catalog database connection and retry.
WYRD_VALA_503_BIFROST_STORAGE_UNREACHABLE503OLAP object storage unreachableCheck the object storage configuration and credentials, then retry.
WYRD_VALA_503_BIFROST_WRITER_UNAVAILABLE503Bifrost writer unavailableThe writer actor for this table is not running. Restart the write operation.
WYRD_VALA_503_ORACLE_ROLE_UNAVAILABLE503Oracle role unavailableRetry through an Oracle-ready query endpoint.
WYRD_VALA_503_QUERY_RESOURCES_EXHAUSTED503Query resources exhaustedNarrow the query or add capacity; retrying unchanged will not succeed.
WYRD_VALA_503_QUERY_VISIBILITY_UNAVAILABLE503Query visibility unavailableRetry when the published query source is available.
WYRD_VALA_503_RUNNING_QUERY_CONTROL_UNAVAILABLE503Running query control unavailableRestore every current-ready Oracle lifecycle endpoint before retrying the logical operation.
WYRD_VALA_503_SCRIBE_ROLE_UNAVAILABLE503Scribe role unavailableRetry ingest through a WAL-ready Scribe endpoint.
WYRD_VALA_504_QUERY_TIMEOUT504Query execution timed outNarrow the query by adding filters or reducing scanned partitions.
WYRD_VALA_507_WAL_DISK_FULL507WAL disk fullThe Scribe WAL disk is at capacity. Expand storage or wait for seal to free space, then retry.

WYRD_VALIDATION

CodeStatusTitleFix
WYRD_VALIDATION_400_MISSING_REQUIRED_FIELD400Required request field is missingInclude the named field in the request; see the route’s OpenAPI schema for the full required set.

WYRD_VERIFICATION

CodeStatusTitleFix
WYRD_VERIFICATION_400_INPUT_INVALID400Invalid verification inputSend { verifier_card_uid, card_uid, inputs } where inputs maps each declared Verifier slot to a json, file, artifact, or trace value; run_id and execution_route_overrides are optional.
WYRD_VERIFICATION_400_INVALID_TARGET400Invalid verification run targetTarget an existing binding, or an active Verifier Card UID plus an active subject Card UID in this tenant, whose implementation accepts the requested input.
WYRD_VERIFICATION_400_INVALID_WINDOW400Invalid Drift windowSend a UTC half-open drift_window with start before end spanning at most 31 days.
WYRD_VERIFICATION_404_BINDING_NOT_FOUND404Verification binding not foundRead the owner Card’s card.status.verification.binding_ids and retry with one of those binding IDs.
WYRD_VERIFICATION_404_EXECUTION_NOT_FOUND404Verification execution not foundUse the execution_id returned by POST /v1/verification/enqueue in the same tenant; a just-accepted execution may take a moment to become visible.
WYRD_VERIFICATION_404_TARGET_NOT_FOUND404Verification target not foundUse an active Verifier Card UID and an active subject Card UID declared in the caller’s tenant.
WYRD_VERIFICATION_409_BASELINE_LEGACY409Verification baseline legacyRegister a new Verifier version so its baseline is refitted under the current format.
WYRD_VERIFICATION_409_BASELINE_NOT_READY409Verification baseline not readyPoll the Verifier Card’s card.status.verification.baseline until it is ready, then retry.
WYRD_VERIFICATION_409_SNAPSHOT_INCOMPLETE409Verification snapshot incompleteCheck Bifrost publication for the named source executions, then submit a new turn to the group.
WYRD_VERIFICATION_409_VERIFIER_NOT_READY409Verifier not readyPoll the Verifier Card’s card.status.verification.baseline until it is ready, then retry.
WYRD_VERIFICATION_413_INPUT_TOO_LARGE413Verification input too largeKeep the request body and each evidence file within the Deployment’s verification limits, or upload large files through verification.evidence and pass them by digest.
WYRD_VERIFICATION_422_INPUT_INCOMPATIBLE422Verification input incompatibleSupply every feature the Verifier scores, with the value type its baseline or profile expects.
WYRD_VERIFICATION_422_INPUT_UNSUPPORTED422Verification input unsupportedExecute and enqueue run request-scoped Verifiers; a Verifier that judges a scheduled window runs only on its binding schedule.
WYRD_VERIFICATION_429_STAGING_FULL429Verification staging is fullNothing of the refused call was staged: retry the identical call after details.retry_after_seconds, or lower the request rate.
WYRD_VERIFICATION_502_DEPENDENCY_FAILED502Verification dependency failedThe agent check’s provider failed after its own retries; retry the request deliberately once the provider recovers.
WYRD_VERIFICATION_504_EXECUTION_TIMED_OUT504Verification execution timed outReduce the supplied input or the Verifier’s judge work so one execution completes within 60 seconds.

Last updated