Reference
Errors
The error envelope and every error code the gateway and Functions return, with what each means and what to do.
Every error returns an HTTP status and a JSON envelope:
JSON
{
"error": "no_policy_compliant_provider",
"message": "no provider satisfies the requested data policy",
"correlation_id": "6f1c2d4e-0b7a-4f53-9a51-3d2e8c7b9a10"
}erroris a stable code. Branch on it, not onmessage.messageis human-readable and may change.400responses may includereason, an upstream cause shared by every provider that rejected the request.schema_validation_failedincludesdetail.attempts.
Errors never include stack traces or internal paths. When you contact support, include the code, the time and the X-Seldon-Trace-Id header if the response had one.
Gateway
- 400
invalid_request - The body is malformed (for example, missing model or messages, or a provider, cache, preset or reasoning field has the wrong type), or every provider rejected the request as invalid. When providers agree, a reason field names the upstream cause.
- What to do: Read message; it names the failing field. Remove options the model does not accept.
- 400
unknown_model - The model ID is not in the catalog.
- What to do: Pick an ID from /models or GET /v1/models.
- 400
model_not_routable - The model exists but has no routable provider right now.
- What to do: Choose a routable model or add a fallback in models.
- 400
invalid_sort - provider.sort is not price, latency or throughput.
- What to do: Use one of the three supported values.
- 400
feature_unsupported - The model cannot honor a requested feature such as tools, vision, audio, JSON output or streaming.
- What to do: Check the model's capabilities on /models or choose another model.
- 400
invalid_response_schema - response_format.json_schema is malformed.
- What to do: Send a valid JSON Schema under response_format.json_schema.schema.
- 400
schema_streaming_unsupported - stream: true was combined with a json_schema response format.
- What to do: Send structured-output requests without streaming.
- 400
invalid_correlation - A session, span or trace header is malformed or conflicts with another header.
- What to do: See Attribution and sessions for header formats.
- 401
UNAUTHORIZED - The API key is missing, revoked or copied with extra characters.
- What to do: Send Authorization: Bearer with an active key from API keys.
- 402
PAYMENT_REQUIRED - The workspace has no available credit or has reached a spend limit.
- What to do: Add credits in Billing. Cached responses can still be served.
- 402
price_cap_exceeded - No provider is available under provider.max_price.
- What to do: Raise the cap or remove it.
- 404
preset_not_found - The preset slug or version does not exist in this workspace.
- What to do: Check the preset reference. Presets are coming soon.
- 409
idempotency_conflict - An Idempotency-Key was reused with a different body or correlation headers.
- What to do: Use a new key for each distinct request.
- 409
duplicate_span_id - X-Seldon-Span-Id was already used in this workspace.
- What to do: Generate a unique span ID per request, or omit it.
- 422
no_policy_compliant_provider - No provider satisfies the requested zdr, data_collection or data_residency policy, including when provider policy metadata is unknown.
- What to do: Relax the policy or choose a model with compliant providers.
- 422
data_policy_loosening_forbidden - The request tries to loosen a data policy your workspace enforces.
- What to do: Remove the conflicting provider policy field.
- 422
structured_output_unsupported - No selected provider supports response_format json_schema.
- What to do: Choose a model that supports structured outputs.
- 422
schema_validation_failed - Provider output did not satisfy your json_schema after retries. detail.attempts reports how many calls were made.
- What to do: Simplify the schema or make the instructions more explicit.
- 429
rate_limited - Every eligible provider is rate limited.
- What to do: Retry after the Retry-After delay, or allow more providers.
- 502
no_available_provider - All eligible providers failed.
- What to do: Retry with backoff. Send X-Seldon-Trace-Id to support if it persists.
- 503
RATE_LIMITER_UNAVAILABLE - Provider admission is temporarily unavailable.
- What to do: Retry after the Retry-After delay.
- 503
provider_not_configured - No provider credentials are configured for this request.
- What to do: Choose another model or contact support.
- 504
request_deadline_exceeded - The request did not finish within its 55-second budget, including queueing and fallback.
- What to do: Retry, shorten the request or lower max_tokens.
Functions
Returned by calls whose model is a function alias.
- 400
invalid_function_alias - The model is not seldon/function/<function-id> or seldon/function/<function-id>@<revision-id>, or Idempotency-Key is not a UUID.
- What to do: Copy the alias from the function's Use section. Use UUID idempotency keys.
- 400
invalid_function_request - The request does not match the function's input contract: fixed messages changed, an unsupported option such as stream or tools was sent, response_format, temperature or max_tokens was overridden, or a workflow input was not one JSON object in one user message.
- What to do: Send the request shown in the Use section and vary only the declared input.
- 400
function_requires_managed_funding - BYOK credentials or a BYOK policy apply to this request. Functions use workspace credits.
- What to do: Call the function without x-byok-key, using a key that has no BYOK policy.
- 401
api_key_revoked - The API key was revoked.
- What to do: Use an active key.
- 402
spend_limit_exceeded - This call could exceed the API key's spend limit.
- What to do: Raise the key's limit or use another key.
- 404
function_not_found - No function with this ID exists in the key's workspace.
- What to do: Check the function ID and that the key belongs to the same workspace.
- 404
revision_not_available - The function has no active revision, or the pinned revision was never activated.
- What to do: Activate a revision, or pin a revision you have activated.
- 409
function_disabled - The function is disabled.
- What to do: Activate a revision to serve again.
- 409
qualification_expired - The requested revision has expired.
- What to do: Activate a current revision.
- 409
idempotency_conflict - An Idempotency-Key was reused with different inputs.
- What to do: Use a new UUID for each distinct call.
- 409
execution_in_progress - A retry arrived while the original call with the same Idempotency-Key is still running.
- What to do: Wait, then retry with the same key to receive the stored result.
- 409
execution_disabled - Function execution is temporarily turned off.
- What to do: Retry later or route the original request instead.
- 413
request_too_large - The request is larger than 256 KiB.
- What to do: Send a smaller input.
- 429
api_key_rate_limit - The API key's requests-per-minute limit was reached.
- What to do: Slow down or raise the key's limit.
- 429
execution_capacity - Workspace or service concurrency for Functions is saturated.
- What to do: Retry with backoff and jitter.
- 502
execution_failed - The function could not produce a valid result, including after any fallback.
- What to do: Retry, or inspect the call under Recent executions.
- 504
execution_deadline_exceeded - The call did not finish within 55 seconds.
- What to do: Retry with the same Idempotency-Key, or send a smaller input.
Bring your own key
Bring your own key is coming soon.
- 400
byok_provider_required - x-byok-key was sent without provider.only naming exactly one supported provider.
- What to do: Set provider.only to the provider the key belongs to.
- 400
byok_credential_unsupported - That provider does not accept a per-request key header.
- What to do: Use a stored connection for this provider.
- 400
byok_credential_conflict - A transient key was sent while a stored BYOK policy also applies.
- What to do: Use either the stored connection or the header, not both.
- 402
byok_budget_exceeded - The request would exceed a BYOK budget.
- What to do: Raise the budget or wait for the next budget window.
- 403
byok_not_enabled - BYOK is not enabled for this workspace.
- What to do: Contact us to request access.
- 422
byok_no_eligible_connection - No authorized stored connection can serve this model and feature set.
- What to do: Check the connection's models and status under Providers.
- 422
byok_budget_unquotable - A BYOK budget applies, but Seldon cannot price this request to check it.
- What to do: Choose a model with known pricing for this connection.