Overview
SO1 APIs use standard HTTP status codes and structured error responses to communicate failures. All error responses follow a consistent format for easy parsing and handling.Error Response Format
All errors return JSON with this structure:HTTP Status Codes
2xx Success
| Code | Status | Meaning |
|---|---|---|
200 | OK | Request succeeded |
201 | Created | Resource created successfully |
202 | Accepted | Request accepted for async processing |
204 | No Content | Request succeeded with no response body |
4xx Client Errors
| Code | Status | Meaning |
|---|---|---|
400 | Bad Request | Invalid request format or parameters |
401 | Unauthorized | Missing or invalid authentication |
403 | Forbidden | Authenticated but lacking permissions |
404 | Not Found | Resource doesn’t exist |
409 | Conflict | Request conflicts with current state |
422 | Unprocessable Entity | Validation failed |
429 | Too Many Requests | Rate limit exceeded |
5xx Server Errors
| Code | Status | Meaning |
|---|---|---|
500 | Internal Server Error | Unexpected server failure |
502 | Bad Gateway | Upstream service error |
503 | Service Unavailable | Temporary unavailability |
504 | Gateway Timeout | Upstream service timeout |
Error Codes Reference
Authentication Errors
invalid_api_key
Status: 401
The provided API key is not valid or has been revoked.
- Verify the API key is correct
- Check the key hasn’t been revoked in Console
- Ensure you’re using the correct environment key
expired_api_key
Status: 401
The API key has expired.
- Generate a new API key
- Update your application configuration
- Set longer expiration dates on keys
missing_authorization
Status: 401
No authentication credentials provided.
- Add
Authorization: Bearer YOUR_API_KEYheader - Verify the header is being sent correctly
insufficient_permissions
Status: 403
API key doesn’t have required permissions.
- Use an API key with appropriate permissions
- Request permission upgrade from admin
- Generate new key with required scopes
Validation Errors
validation_error
Status: 400
Request validation failed.
- Review the
details.errorsarray - Fix each validation error
- Ensure all required fields are provided
invalid_json
Status: 400
Request body is not valid JSON.
- Validate JSON syntax
- Use JSON.stringify() for objects
- Check for trailing commas, unclosed brackets
missing_required_field
Status: 400
Required field is missing from request.
- Add the missing required field
- Check API documentation for required parameters
Resource Errors
resource_not_found
Status: 404
The requested resource doesn’t exist.
- Verify the resource ID is correct
- Check the resource wasn’t deleted
- Ensure you have access to the resource
resource_already_exists
Status: 409
A resource with the same identifier already exists.
- Use a different name/identifier
- Update the existing resource instead
- Delete the existing resource first (if appropriate)
resource_locked
Status: 409
Resource is locked and cannot be modified.
- Wait for lock to expire
- Contact the user who locked the resource
- Use force_unlock parameter (if authorized)
Rate Limiting Errors
rate_limit_exceeded
Status: 429
Too many requests in a given time period.
- Wait for rate limit window to reset
- Implement exponential backoff
- Upgrade to higher tier for more requests
- Cache responses to reduce API calls
Execution Errors
agent_execution_failed
Status: 500
Agent execution failed unexpectedly.
- Retry the request (if
retryable: true) - Check agent status page
- Contact support if issue persists
timeout
Status: 504
Request exceeded maximum execution time.
- Break request into smaller operations
- Use async workflows for long-running tasks
- Increase timeout (if configurable)
invalid_agent_configuration
Status: 400
Agent configuration is invalid.
- Review agent configuration documentation
- Adjust parameters to valid ranges
- Remove unsupported configuration options
Workflow Errors
workflow_validation_failed
Status: 422
Workflow failed validation checks.
- Fix circular dependencies
- Add missing agent dependencies
- Validate workflow structure
forge_gate_failure
Status: 422
FORGE gate validation failed.
- Address failed criteria
- Re-run gate validation
- Request gate override (if authorized)
Service Errors
service_unavailable
Status: 503
Service is temporarily unavailable.
- Wait and retry request
- Check status page: https://status.so1.io
- Subscribe to status updates
internal_server_error
Status: 500
Unexpected internal error.
- Retry the request
- Contact support with
request_id - Check status page for incidents