Evose

Errors

HTTP status · Error structure · Retry policy

All error responses share the same structure.

Error Response Structure

{
  "request_id": "req-xxxxxxxx",
  "error": {
    "code": "RESOURCE_NOT_FOUND",
    "message": "Agent 'agent-001' not found in workspace 'ws-001'.",
    "details": {
      "agent_id": "agent-001",
      "workspace_id": "ws-001"
    }
  }
}

HTTP Status Codes

StatusMeaningClient should
200SuccessUse the response data
201CreatedUse the resource ID in the response
204Success, no contentDon't parse the body
400Bad parametersFix the request, don't retry
401UnauthenticatedCheck the token, don't retry
403ForbiddenCheck ACL, don't retry
404Not foundFix the request, don't retry
409Conflict (e.g. duplicate create)Depends on the case (conflicts may be retryable)
422Business validation failedFix the request
429Rate limitedBackoff retry (see Rate limits)
500Internal server errorBackoff retry
502 / 503 / 504Gateway / service unavailableBackoff retry

Business Error Codes

codeMeaning
INVALID_REQUESTBad parameter format
RESOURCE_NOT_FOUNDResource doesn't exist
FORBIDDENACL denied
UNAUTHORIZEDInvalid token
RATE_LIMITEDRate limit exceeded
QUOTA_EXCEEDEDCredit / capacity exceeded
MODEL_UNAVAILABLEModel temporarily unavailable (Failover already attempted)
TOOL_INVOCATION_FAILEDTool call failed
KB_INDEX_NOT_READYKnowledge base index not yet ready
INTERNAL_ERRORInternal server error

Retry Policy

ErrorRetryBackoff
400 / 401 / 403 / 404 / 422 Don't
409 DependsOne immediate retry, then give up
429Honor Retry-After header
500 / 502 / 503 / 504Exponential backoff (1s → 2s → 4s → 8s, up to 5 attempts)

Diagnosis: request_id

Every response carries a request_id. When reporting issues, include the request_id — ops can find the full trace within milliseconds.

Next Steps

On this page