Standard Error Response
Most errors return a JSON object with adetail field:
code and a link to the relevant documentation:
code field for programmatic error handling in your pipeline. The detail field is human-readable and may change between versions.
Validation Errors
Requests that fail input validation return a400 status code with field-specific error details:
Error Code Reference
Detailed Error Descriptions
400 — Bad Request
The request is malformed or contains invalid data. Common causes:- Missing a required field in the request body
- Sending an invalid data type (e.g., string where an integer is expected)
- Malformed JSON in the request body
401 — Unauthorized
Authentication failed. Common causes:- No
X-Avala-Api-Keyheader included in the request - The API key is invalid or has been revoked
- The API key has expired
403 — Forbidden
The API key is valid but lacks permission for the requested action. Common causes:- Attempting to access a resource owned by a different organization
- Insufficient role or permission level for the operation
- API key is missing a required scope
- Organization plan does not include the requested feature
Structured Error Codes
Some 403 responses include a machine-readablecode for programmatic handling:
plan_insufficient — Your organization’s plan does not support this action. Upgrade to PRO or ENTERPRISE to access this feature.
scope_required — Your API key does not include the required scope for this action.
404 — Not Found
The requested resource does not exist. Common causes:- The resource ID is incorrect or misspelled
- The resource was previously deleted
- The URL path is wrong
405 — Method Not Allowed
The HTTP method is not supported on the endpoint. Common causes:- Sending a
PATCHrequest to an endpoint that only supportsGETandPOST - Using
DELETEon a resource that does not support deletion
409 — Conflict
The request conflicts with the current state of a resource. Common causes:- Creating a resource with a name that already exists
- Attempting a state transition that is not allowed (e.g., re-activating a completed run)
413 — Payload Too Large
The request body exceeds the maximum allowed size. Common causes:- Uploading a file that exceeds the size limit
- Sending an excessively large JSON payload
429 — Too Many Requests
You have exceeded the rate limit. Common causes:- Sending more than 100 requests per minute
- Exceeding concurrent upload or export limits
Remediation: Wait until the rate limit window resets, then retry. Implement exponential backoff in your client.
500 — Internal Server Error
An unexpected error occurred on the server. Common causes:- A bug or transient failure in the Avala backend
503 — Service Unavailable
The API is temporarily unable to handle requests. Common causes:- Scheduled maintenance
- The service is under heavy load
Handling Errors
Implement retry logic with exponential backoff for transient errors (429, 500, 503). Do not retry client errors (400, 401, 403, 404).
Python
Handling Structured Error Codes
Some endpoints return structured errors with acode field for programmatic handling. Use the code to take specific actions in your pipeline: