Skip to main content

Error Codes

All API errors follow a consistent JSON structure:

{
"detail": "Human-readable error message"
}

HTTP status codes

StatusMeaningCommon causes
400Bad RequestMissing required fields, invalid field values, no fields to update, agent is disabled
401UnauthorizedMissing or invalid Authorization header
403ForbiddenValid API key but insufficient permissions for this tenant or operation
404Not FoundAgent ID does not exist in the registry
429Too Many RequestsRate limit exceeded — see X-RateLimit-Reset header
500Internal Server ErrorAgent execution failed, database error, or unexpected platform error

Agent-specific errors

Trigger errors

ErrorStatusDetailResolution
Agent not found404Agent 'xyz' not foundCheck the agent ID against the Agent Catalog. Agent IDs use snake_case.
Agent disabled400Agent 'xyz' is disabled for tenant '...'Enable the agent via PUT /ai/agents/{agent_id}/config with "enabled": true.
Execution failed500Agent execution failedTransient error. Retry after a short delay. If persistent, check agent-specific trigger data requirements.

Configuration errors

ErrorStatusDetailResolution
No fields to update400No fields to updateInclude at least one of mode, auto_act_threshold, enabled, or config in the request body.
Invalid mode422Validation errorMode must be one of: shadow, active, disabled.
Invalid risk level422Validation errorRisk level must be one of: LOW, MEDIUM, HIGH, CRITICAL.
Config update failed500Failed to update agent configTransient database error. Retry the request.

Decision query errors

ErrorStatusDetailResolution
Fetch failed500Failed to fetch decisionsTransient database error. Retry with a smaller limit parameter.
Invalid pagination422Validation errorlimit must be between 1 and 200. offset must be non-negative.

Retry guidance

StatusRetryableStrategy
400NoFix the request
401NoFix authentication
403NoCheck permissions
404NoCheck agent ID
429YesWait until X-RateLimit-Reset, then retry
500YesExponential backoff starting at 1 second, max 3 retries