Errors

Common HTTP status codes and application error codes returned by the FeatureOS API, and how to resolve them.

The FeatureOS API uses standard HTTP status codes, and returns a machine-readable error code in the response body for application-level failures.

HTTP status codes

Status Code Meaning Description
200 Success Request served successfully.
201 Created Resource created successfully.
400 Bad Request The request body or parameters are invalid.
401 Unauthorized The API key or JWT token is missing or invalid.
403 Forbidden Your account lacks the required permissions.
404 Not Found The requested resource does not exist.
422 Unprocessable Entity The request was well-formed but contains semantic errors.
429 Too Many Requests Rate limit exceeded — 100 requests per minute per API key.
500 Internal Server Error Something went wrong on our end. We're on it.
503 Service Unavailable The API is temporarily down for maintenance.

Application error codes

These codes are returned in the response body alongside the HTTP status code.

Seat limits

Error Code Solution
ERROR_CODE_ADMIN_LIMIT_REACHED Maximum admin seats reached. Purchase additional seats or upgrade your plan.
ERROR_CODE_CSM_LIMIT_REACHED Maximum CSM seats reached. Purchase additional seats or upgrade your plan.
ERROR_CODE_MANAGER_LIMIT_REACHED Maximum manager seats reached. Purchase additional seats or upgrade your plan.

User & team errors

Error Code Solution
ERROR_CODE_USER_ALREADY_PRESENT The user you are adding is already a member of this team.
ERROR_CODE_INVITE_ALREADY_SENT An invitation has already been sent to this email address.

Validation errors

Error Code Solution
ERROR_CODE_INVALID_PARAM A parameter value is invalid. Check the parameter name appended to the error code for details.
ERROR_CODE_MISSING_PARAM A required parameter is missing from your request.
ERROR_CODE_INVALID_FORMAT The provided data is in an unsupported format.

Resource errors

Error Code Solution
ERROR_CODE_NOT_FOUND The requested resource could not be found. Verify the ID or slug.
ERROR_CODE_ALREADY_EXISTS A resource with the same identifier already exists.
ERROR_CODE_CANNOT_DELETE The resource cannot be deleted because it has dependent records.

Rate limiting

Error Code Solution
ERROR_CODE_RATE_LIMITED You have exceeded the rate limit. Wait and retry after a brief pause. The API allows 100 requests per minute per API key.

Error response format

All error responses follow this structure:

{
  "error": "ERROR_CODE_INVALID_PARAM",
  "message": "The parameter 'title' is not valid."
}

For validation errors with multiple fields:

{
  "errors": {
    "title": ["can't be blank"],
    "bucket_id": ["is not a valid bucket"]
  }
}