Skip to main content

Error Codes

Every CMP API endpoint returns one of a small, consistent set of status codes. This page documents them and the JSON shape returned on failure so you can handle errors uniformly across all resources.


Status codes

CodeNameMeaning
200Successful OperationThe request succeeded. The body contains the result.
202AcceptedThe request was accepted for asynchronous processing (some PUT updates).
204No ContentThe request succeeded with no response body (some deletes).
401Invalid Authentication CredentialsThe apikey / secretkey headers are missing, malformed, or invalid.
550Permission DeniedThe credentials are valid, but the account is not authorized to perform this operation on the target resource.
note

200, 401, and 550 are returned by virtually every endpoint. Individual endpoints may add 202 (async PUT updates) or 204 (some deletes).


Error response shape

Failed requests return a JSON body with a nested error object:

{
"listErrorResponse": {
"errorCode": "string",
"errorMsg": "string"
}
}
FieldTypeDescription
errorCodestringMachine-readable error identifier.
errorMsgstringHuman-readable explanation of the failure.

Handling errors

401 — Invalid Authentication Credentials

The request could not be authenticated. Check that:

  • both apikey and secretkey are present as HTTP headers,
  • the values are copied exactly (no stray whitespace or truncation),
  • the key pair has not been regenerated or revoked in the console.

Example

{
"listErrorResponse": {
"errorCode": "401",
"errorMsg": "Invalid Authentication Credentials"
}
}

550 — Permission Denied

The credentials are valid but the account lacks permission for the requested action. Check that:

  • the account has the required privilege/role for the operation,
  • the target resource (by UUID) belongs to — or is shared with — the account,
  • the resource exists in the specified zone.

Example

{
"listErrorResponse": {
"errorCode": "550",
"errorMsg": "Permission Denied"
}
}

  • Retry transient network failures with exponential backoff. Do not blindly retry 401 or 550 — they will keep failing until the underlying cause is fixed.
  • Log errorMsg for diagnostics, but never log the secretkey.
  • For asynchronous operations, poll the Resource API Status endpoint with the returned jobId rather than re-issuing the create request, to avoid creating duplicates.