Compute service API reference
The Compute API reference documents every Nova endpoint with interactive request and response examples.
The Compute API (OpenStack Nova v2.1) manages servers (instances), flavors, images, key pairs, and server groups on Quake AI. See the upstream Nova API reference for the full specification. For error handling guidance, see the API error reference.
Authentication#
All requests require a valid Keystone token in the X-Auth-Token header. Obtain a token via POST /v3/auth/tokens against the Identity API.
Base URL#
https://compute.{region}.rumble.cloud/v2.1Replace {region} with your region identifier. Only us-east-1 is currently available. Discover the endpoint programmatically with openstack catalog show compute.
The {project_id} segment shown in the URL examples below is optional. Nova derives the project from your Keystone token, so the path segment is supported only for backward compatibility and admin cross-project queries. Your project UUID is available in the console under Account → Projects.
Microversions#
Quake AI runs OpenStack Antelope (2023.1) and supports Nova microversions 2.1 through 2.95. To request a specific microversion, include either header (Nova accepts both):
OpenStack-API-Version: compute 2.95
X-OpenStack-Nova-API-Version: 2.95Omitting both headers defaults to microversion 2.1.
Servers#
Manage compute instances. In these methods, {server_id} is the UUID of the instance.
List servers#
GET /v2.1/{project_id}/serversShow server details#
GET /v2.1/{project_id}/servers/{server_id}Create a server#
POST /v2.1/{project_id}/servers- Request body
{
"server": {
"name": "my-instance",
"flavorRef": "FLAVOR_ID",
"imageRef": "IMAGE_ID",
"networks": [{ "uuid": "NETWORK_ID" }],
"key_name": "my-keypair"
}
}Delete a server#
DELETE /v2.1/{project_id}/servers/{server_id}Server actions#
Actions are sent as POST /v2.1/{project_id}/servers/{server_id}/action with the action name as the JSON key.
| Action | Required state | Body |
|---|---|---|
os-start | SHUTOFF | {"os-start": null} |
os-stop | ACTIVE | {"os-stop": null} |
reboot | ACTIVE, SHUTOFF, ERROR | {"reboot": {"type": "SOFT"}} |
rebuild | ACTIVE, SHUTOFF, ERROR | {"rebuild": {"imageRef": "IMAGE_ID"}} |
resize | ACTIVE, SHUTOFF | {"resize": {"flavorRef": "FLAVOR_ID"}} |
confirmResize | VERIFY_RESIZE | {"confirmResize": null} |
revertResize | VERIFY_RESIZE | {"revertResize": null} |
Flavors#
Flavors define the compute, memory, and storage capacity of an instance. In these methods, {flavor_id} is the UUID of the flavor.
List flavors#
GET /v2.1/{project_id}/flavorsShow flavor details#
GET /v2.1/{project_id}/flavors/{flavor_id}Key pairs#
SSH key pairs used for instance access. In these methods, {keypair_name} is the name of the key pair.
List key pairs#
GET /v2.1/{project_id}/os-keypairsShow key pair details#
GET /v2.1/{project_id}/os-keypairs/{keypair_name}Create a key pair#
POST /v2.1/{project_id}/os-keypairsThe request body takes three forms.
Server-generated key pair. Omit public_key and Nova generates the pair. No microversion header is required, and the call returns HTTP 200. The response includes a private_key field. Nova returns the private key once at creation and does not store it, so save it from this response.
Request body:
{
"keypair": {
"name": "my-keypair"
}
}Response body:
{
"keypair": {
"name": "my-keypair",
"fingerprint": "04:8d:9a:1f:7b:e2:55:c3:60:a9:4d:1e:88:b7:33:5a",
"public_key": "ssh-ed25519 AAAA...",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
}
}Import an existing public key. Supply public_key and Nova registers it. No microversion header is required, and the response omits private_key.
Request body:
{
"keypair": {
"name": "my-keypair",
"public_key": "ssh-ed25519 AAAA..."
}
}Specify the key type. The type field (ssh or x509) is available from microversion 2.2. Send a microversion header; the call returns HTTP 201.
OpenStack-API-Version: compute 2.2Request body:
{
"keypair": {
"name": "my-keypair",
"type": "ssh"
}
}Delete a key pair#
DELETE /v2.1/{project_id}/os-keypairs/{keypair_name}Server groups#
Server groups define anti-affinity and affinity policies for instance placement.
List server groups#
GET /v2.1/{project_id}/os-server-groupsShow server group details#
GET /v2.1/{project_id}/os-server-groups/{server_group_id}Create a server group#
POST /v2.1/{project_id}/os-server-groupsThe request body takes two forms. New code should use the microversion 2.64 form.
Default microversion (policies). Microversions 2.1 through 2.63 take a policies array. Nova deprecated this form in microversion 2.64 but still accepts it.
Request body:
{
"server_group": {
"name": "my-group",
"policies": ["anti-affinity"]
}
}Microversion 2.64 and later (policy). Send a microversion header and use the singular policy field. The response adds a rules object that the legacy form omits.
OpenStack-API-Version: compute 2.64Request body:
{
"server_group": {
"name": "my-group",
"policy": "anti-affinity"
}
}Delete a server group#
DELETE /v2.1/{project_id}/os-server-groups/{server_group_id}Limits#
Query project quotas and current resource usage. The response contains two objects: rate (always empty on Antelope; application-layer rate limiting is not active) and absolute (resource quotas and usage counters).
Show project limits#
GET /v2.1/limitsSample response. The max* fields report this project's quota and the total* fields report current usage, so the values below are illustrative and vary between projects:
{
"limits": {
"rate": [],
"absolute": {
"maxTotalInstances": 256,
"maxTotalCores": -1,
"maxTotalRAMSize": 32768,
"maxServerMeta": 128,
"maxImageMeta": 128,
"maxPersonality": 5,
"maxPersonalitySize": 10240,
"maxTotalKeypairs": 100,
"maxServerGroups": 100,
"maxServerGroupMembers": 100,
"maxTotalFloatingIps": -1,
"maxSecurityGroups": -1,
"maxSecurityGroupRules": -1,
"totalRAMUsed": 8192,
"totalCoresUsed": 2,
"totalInstancesUsed": 1,
"totalFloatingIpsUsed": 0,
"totalSecurityGroupsUsed": 0,
"totalServerGroupsUsed": 0
}
}
}Query the value for your own project rather than copying the numbers above. To read your quota and usage, call this endpoint with your token.
Key fields#
| Field | Meaning |
|---|---|
rate | Always []. Application-layer rate limits were removed in the Rocky release (2018). |
maxTotalInstances | Maximum instances allowed in this project. |
maxTotalCores | Maximum vCPUs. -1 means no application-layer limit. |
maxTotalRAMSize | Maximum RAM in MiB. |
maxTotalKeypairs | Maximum key pairs. |
totalInstancesUsed | Current instance count. Compare against maxTotalInstances. |
totalCoresUsed | Current vCPU usage. |
totalRAMUsed | Current RAM usage in MiB. |
A value of -1 means no quota is enforced at the application layer. The resource may still be constrained by separate Neutron quotas or physical capacity.
For rate limit behavior and 429 handling, see API rate limits. For quota troubleshooting, see Quota and limits troubleshooting.
See also#
- Compute API error reference
- API rate limits: quotas vs. rate limits, 429 handling
- Instance lifecycle troubleshooting
- Instance connectivity troubleshooting
- Upstream Nova API reference