Skip to content

Error Codes

All error responses use this envelope:

{
"error": "error_code",
"message": "Human-readable description.",
"requestId": "abc123-def456"
}

The error field is a stable, machine-readable code. The message is for display and may change between releases. The requestId correlates with server-side logs.

CodeHTTPDescription
not_found404Resource does not exist
forbidden403Caller lacks RBAC permissions
unauthorized401Authentication missing or invalid
conflict409Resource version conflict (optimistic concurrency)
already_exists409Resource being created already exists
bad_request400Malformed request or invalid parameters
internal_error500Unexpected server failure. Check logs with requestId
timeout504Operation exceeded deadline
method_not_allowed405HTTP method not supported
CodeHTTPDescription
invalid_parameter400Query or path parameter has invalid value
missing_path_param400Required path parameter absent
missing_query_param400Required query parameter absent
invalid_namespace400Namespace fails K8s name validation
invalid_name400Resource name fails K8s name validation
invalid_path_params400Dynamic handler path variables invalid
invalid_input400User input fails validation
invalid_body400Request body cannot be decoded
invalid_json400Body is not valid JSON
missing_field400Required field missing
invalid_field400Field has invalid value
body_too_large413Body exceeds size limit
invalid_propagation400Invalid deletion propagation policy
CodeHTTPDescription
api_unreachable502K8s API server unreachable
context_not_found404Kubeconfig context does not exist
context_switch_failed500Context switch failed
context_list_failed500Context enumeration failed
invalid_context400Context cannot be resolved
insufficient_permissions403User lacks RBAC permissions in target cluster
source_fetch_failed502Cross-cluster source fetch failed
target_fetch_failed502Cross-cluster target fetch failed
CodeHTTPDescription
helm_not_found500helm binary not on $PATH
helm_error500Helm CLI command failed
invalid_revision400Invalid Helm revision number
CodeHTTPDescription
drain_in_progress409Drain already running on node
dependency_unavailable503External dependency not reachable
too_many_contexts400Contexts exceed maximum (50)
  • api_unreachable - K8s API may be temporarily down
  • timeout - May succeed on retry
  • internal_error - Transient server failure

Use exponential backoff with jitter.

  • forbidden / unauthorized - Fix authentication
  • not_found - Resource doesn’t exist
  • invalid_* / missing_* - Fix the request
  • conflict - Re-fetch and retry with updated version