Skip to content

Compute API error reference

Reference · Updated Sep 2026

Coming from another cloud?

▸AWS·EC2 Error Codes

This Quake AI feature maps to AWS’s EC2 Error Codes.

▸DigitalOcean·API Errors

This Quake AI feature maps to DigitalOcean’s API Errors.

Compute API error reference

This page documents common error responses from the Compute API (Nova v2.1), explains what they mean operationally, and provides next-step actions. Use this reference when your API call returns an unexpected status code or when an instance enters an error state.

HTTP status codes#

StatusMeaningTypical causeRetryable?Next action
400 Bad RequestThe request body is malformed or missing required fieldsInvalid JSON, missing name or flavorRef in server createNoCheck request syntax against the Compute API reference
401 UnauthorizedAuthentication failedToken missing, expired, malformed, or revoked. The 401 body is identical for all four cases.NoRe-issue your token: openstack token issue
403 ForbiddenAuthorization failedQuota exceeded, action not permitted for your roleNoCheck quota: openstack quota show --usage. See quota troubleshooting
404 Not FoundThe resource does not existWrong instance ID, instance already deletedNoVerify the resource ID: openstack server list
409 ConflictThe action conflicts with the resource's current stateInstance in wrong state for the requested action (e.g., reboot while in BUILD)ConditionalCheck instance status; wait for state transition, then retry
413 Over LimitQuota exceededResource quota reached (instances, cores, RAM)NoCheck quota: openstack quota show --usage. Free resources or request increase
429 Too Many RequestsAPI rate limit exceededToo many requests in a short time window (enforced at the gateway layer)YesWait and retry with exponential backoff. Check for a Retry-After header
500 Internal Server ErrorServer-side failurePlatform-side issueYesRetry after a brief delay. If persistent, escalate to support
503 Service UnavailableService temporarily overloadedMaintenance or capacity issueYesRetry with exponential backoff

Nova returns the same 401 body whether the token is missing, expired, malformed, or revoked, so the response does not tell you which case you hit. If openstack token issue succeeds and the request still returns 401, the most common remaining cause is a stale environment variable that points to a different project's token.

Example error response#

JSON
{
  "forbidden": {
    "code": 403,
    "message": "Quota exceeded for resources: ['instances']. Requested 1, but already used 10 of 10 instances"
  }
}

The Compute API (Nova) returns errors as JSON envelopes, as shown above. Not every Quake AI service does: the Image service (Glance) returns error bodies as HTML. Branch on the HTTP status code rather than parsing the response body. For the Glance status codes, see Image API error responses. For the Instance API action endpoints and their async state transitions, see Instance API response codes.

Server fault interpretation#

When an instance enters the ERROR state, the fault field in the server response contains diagnostic information.

Reading the fault object#

The fault field is not a recognized column for openstack server show, so -c fault fails with No recognized column names in ['fault']. Read the field from JSON output instead:

bash
openstack server show YOUR_INSTANCE -f json | jq .fault

Nova populates fault only when the server is in ERROR status. On ACTIVE, SHUTOFF, and other states the field is null, which is expected. The raw Compute API returns the same data: GET /v2.1/servers/{server_id} includes a top-level fault object when the status is ERROR.

The fault object includes:

  • message: description of the failure
  • code: HTTP status code associated with the failure
  • created: timestamp when the fault occurred

Common fault messages#

Fault messageMeaningResolution
"No valid host was found"The scheduler cannot place the instance on any compute hostTry a smaller flavor. Check quota. If all flavors fail, file a support ticket; capacity may be constrained.
"Build of instance aborted: Volume did not finish being created"The boot volume (Block Storage) timed out during creationCheck for orphaned volumes (openstack volume list). Delete and retry with image-based boot.
"Exceeded maximum number of retries"The scheduler retried placement and failed after retryingLikely a capacity issue. Wait and retry, or try a different flavor.
"PortBindingFailed"The Networking service (Neutron) cannot bind the instance's portVerify your network exists and is accessible: openstack network list. Recreate the instance on a working network.
"Build of instance aborted: block_device_mapping is not valid"The block device configuration is invalidCheck your volume or image reference. Verify the specified image or volume exists and is accessible.

State-conflict handling#

Instance lifecycle actions are only valid in certain states. Sending an action to an instance in the wrong state returns HTTP 409 Conflict.

ActionRequired stateCommon conflict scenario
rebootACTIVE, SHUTOFF, ERRORInstance in BUILD; wait for build to complete
startSHUTOFFInstance already ACTIVE
stopACTIVEInstance already SHUTOFF or in BUILD
resizeACTIVE, SHUTOFFInstance in VERIFY_RESIZE (must confirm or revert first)
deleteAny (except DELETED)Instance in DELETING; already being deleted
rebuildACTIVE, SHUTOFF, ERRORInstance in BUILD; wait for build to complete

Handling 409 responses#

  1. Check current instance status:
bash
openstack server show YOUR_INSTANCE -c status -c task_state
  1. Wait for the current operation to complete. The task_state field shows what the instance is doing (e.g., spawning, rebooting, resize_migrating).

  2. Once task_state is None and the instance is in a valid state for your action, retry.

Key pair errors#

Key pair operations return specific errors that are commonly misdiagnosed, especially during instance creation.

ErrorHTTP statusCauseResolution
"Invalid key_name provided."400Instance create references a key pair name that does not exist in the project, or the name is malformed (invalid characters or too long)List available key pairs: openstack keypair list. Create or import the key pair before launching, and confirm the name uses only alphanumeric characters, dashes, and underscores.
"Key pair with key pair name already exists"409Creating a key pair with a name that is already in useChoose a different name, or delete the existing key pair first if it is no longer needed.
"Invalid key_type"400Unsupported key type specified during creationUse ssh (default) or x509.
"Keypair data is invalid"400Imported public key is malformed or uses an unsupported formatVerify the public key file format. Regenerate with ssh-keygen -t ed25519 if needed.

For SSH connectivity failures after the instance is running (timeouts, permission denied, wrong username), see the instance connectivity runbook.

When the Compute API returns 403 Forbidden with a quota message, the request was valid but your project lacks capacity.

Quota exceeded for resources: ['instances'] (HTTP 403)
Quota exceeded for resources: ['cores', 'ram'] (HTTP 403)

Resolution:

  1. Check quota usage: openstack quota show --usage
  2. Identify the exhausted resource
  3. Clean up unused instances or request a quota increase

Quake AI-specific quota names#

openstack quota show --usage lists quota names beyond the upstream Nova and Cinder catalog. The Compute API returns 403 Forbidden against these limits the same way it does for the standard quotas.

QuotaScopeNotes
compute_unitsComputeQuake AI capacity metric gated separately from cores and ram. Each flavor carries a per-instance compute_units cost, so you can exhaust compute_units while cores and ram still have headroom.
volumes_Flash_PremiumBlock StorageVolume count for the Flash_Premium volume type. Other volume types follow the same volumes_<type> pattern.
gigabytes_Flash_PremiumBlock StorageCapacity in GB for the Flash_Premium volume type.
snapshots_Flash_PremiumBlock StorageSnapshot count for the Flash_Premium volume type.

A limit of -1 means unlimited. Read these values with openstack quota show --usage; the GET /v2.1/limits endpoint does not expose the Quake AI-specific quota names.

See the quota and limits troubleshooting page for detailed recovery procedures.

When to escalate#

Escalate to support when:

  • An instance is stuck in ERROR state and the fault message does not point to a quota, capacity, or configuration issue you can resolve
  • A 500 or 503 error persists after multiple retries with backoff over 5 minutes
  • The fault object, read with openstack server show YOUR_INSTANCE -f json | jq .fault, describes a failure you cannot interpret
  • Instance behavior contradicts the documented state machine (e.g., an ACTIVE instance that accepts no actions)

Escalation-ready evidence checklist#

When a Compute API error is not self-resolvable, collect this evidence before filing a support ticket:

ItemCommand
Instance ID, status, faultopenstack server show YOUR_INSTANCE -f json | jq '{id, status, fault}'
Console log (last 50 lines)openstack console log show YOUR_INSTANCE --lines 50
Request detailsNote the exact API call, parameters, and timestamp
Quota usageopenstack quota show --usage
Token validityopenstack token issue (confirms auth is working)

See also#

Quick answers

Was this page helpful?