Errors
HTTP error codes and response format.
The API uses standard HTTP status codes. Errors return a JSON body with error and message fields.
Error Response Format
{
"error": "error_code",
"message": "Human-readable description of what went wrong"
}Status Codes
| Code | Name | Description |
|---|---|---|
400 | Bad Request | Missing or invalid parameters |
401 | Unauthorized | Missing, expired, or invalid authentication |
402 | Payment Required | No active subscription or insufficient credits |
403 | Forbidden | Valid auth but insufficient scope or permissions |
404 | Not Found | Resource does not exist or you don't have access |
409 | Conflict | Resource already exists (e.g., duplicate workspace name) |
429 | Too Many Requests | Rate limit exceeded — see Rate Limits |
500 | Internal Server Error | Unexpected server error — retry or contact support |
Common Error Scenarios
Authentication Errors (401)
{
"error": "unauthorized",
"message": "Invalid or expired API key"
}Causes: missing Authorization header, malformed token, expired JWT, revoked API key.
Insufficient Credits (402)
{
"error": "payment_required",
"message": "Insufficient credits. Top up at https://auboz.com/settings/billing"
}Agent queries and deep research consume credits. Check your balance via GET /v1/user/me.
Scope Mismatch (403)
{
"error": "forbidden",
"message": "API key missing required scope: kb:write"
}The API key exists and is valid, but doesn't have the scope required by this endpoint. Create a new key with the needed scopes.