Error Codes
All API errors return a consistent envelope with an error code and human-readable message:
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable description"
}
}Authentication Errors
| HTTP | Code | Description | Resolution |
|---|---|---|---|
| 401 | Unauthorized | Missing, expired, or invalid authorization token | Check your API key or refresh your JWT token |
| 403 | Forbidden | Valid token but insufficient permissions for this resource | Verify you have the correct tier or role |
| 403 | AccessDenied | You do not own this resource | You can only access your own executions and data |
Rate Limit Errors
| HTTP | Code | Description | Resolution |
|---|---|---|---|
| 429 | TierLimitExceeded | Monthly rule generation limit reached | Upgrade your plan or wait for the next billing period |
| 429 | RateLimitExceeded | Burst rate limit exceeded (5 executions/minute) | Wait 60 seconds and retry |
| 429 | DailyLimitExceeded | API key daily request limit reached | Wait until midnight UTC or increase the key’s daily limit |
Validation Errors
| HTTP | Code | Description | Resolution |
|---|---|---|---|
| 400 | InvalidInputType | Unrecognized inputType value | Use url, cve, or text |
| 400 | ValidationError | Request body failed schema validation | Check required fields and types |
| 400 | InvalidUrl | The submitted URL is malformed or unreachable | Verify the URL is publicly accessible |
| 400 | InvalidCveId | CVE ID format is invalid | Use the format CVE-YYYY-NNNNN |
| 400 | InputTooLarge | Text input exceeds the 50,000 character limit | Reduce the input text length |
Pipeline Errors
| HTTP | Code | Description | Resolution |
|---|---|---|---|
| 500 | PipelineFailed | The rule generation pipeline encountered an internal error | Retry the request; contact support if persistent |
| 504 | PipelineTimeout | Pipeline exceeded the maximum execution time | Try with shorter input or fewer target platforms |
Resource Errors
| HTTP | Code | Description | Resolution |
|---|---|---|---|
| 404 | NotFound | The requested resource does not exist | Verify the execution ARN or resource ID |
| 409 | Conflict | Resource already exists (e.g., duplicate team name) | Use a different name or check existing resources |
All error codes are stable and safe to match programmatically. New codes may be added over time, but existing codes will not change meaning.
Handling Errors
import requests
response = requests.post(
"https://cloudsigma.a13e.com/v1/generate",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"inputType": "url", "url": "https://example.com/advisory"},
)
data = response.json()
if not data["success"]:
error = data["error"]
if error["code"] == "TierLimitExceeded":
print("Upgrade your plan to continue generating rules")
elif error["code"] == "RateLimitExceeded":
print("Rate limited — retry after 60 seconds")
else:
print(f"Error {error['code']}: {error['message']}")Last updated on