Quotas
Every project has a limit per resource type. A request that would take the project over one of its limits is refused with 403 Forbidden and the quota_exceeded error; nothing is created. Deleting or stopping resources frees their share again.
Limits apply per project. To raise one, contact support with the project ID and the quota key you need more of.
Quota keys
| Key | Counts | Unit |
|---|---|---|
cpu-dedicated | vCPUs of instances | core |
ram-dedicated | Memory of instances | GiB |
gpu-<model> | GPUs of one model, e.g. gpu-nvidia-h100-sxm5 | gpu |
volumes-ssd | Size of SSD volumes | GiB |
volumes-hdd | Size of HDD volumes | GiB |
snapshots-ssd | Size of SSD snapshots | GiB |
snapshots-hdd | Size of HDD snapshots | GiB |
s3-storage | Data stored by the project's S3 users | byte |
ipv4 | Public IPv4 addresses | address |
load-balancers | Load balancers | count |
kubernetes-clusters | Kubernetes clusters | count |
A snapshot counts with the provisioned size of its source volume at the time it was taken.
s3-storage is enforced by the object storage itself rather than by the API: it is applied as the storage quota of the project's S3 users, and uploads beyond it are rejected by the S3 endpoint.
Quota Schema
keyString - The quota key, see Quota keys.capacityInteger - The project's limit for this key.-1means unlimited.usedInteger - How much of the limit is currently in use.flavorsArray - The flavors currently drawing on this key and how much each uses. Recomputed periodically, so it can briefly lag the key'sused.flavor_nameString - The instance type for compute keys (e.g.vcpu-4_memory-8g), the storage class for storage keys, or the kind of consumer (ephemeral,floating,load-balancer,kubernetes) for the rest.product_nameString - Human-readable name of the resource, e.g.vCPU.unitString - The unit ofused, see Quota keys.usedInteger - How much this flavor uses.
used can be higher than capacity when a limit was lowered after the resources were created. Existing resources are kept; new requests for that key are refused until usage drops below the limit.
Get Quotas
Returns the active project's limit and current usage for every quota key.
GET /compute/v1/quotas (HTTP 200 - OK)
Response body
{
"quotas": [
{
"key": "cpu-dedicated",
"capacity": 4,
"used": 4,
"flavors": [
{
"flavor_name": "vcpu-4_memory-8g",
"product_name": "vCPU",
"unit": "core",
"used": 4
}
]
},
{
"key": "volumes-ssd",
"capacity": 240,
"used": 0,
"flavors": []
}
]
}
Quota Exceeded Error
A create or resize request that would exceed a limit returns 403 Forbidden. code is always quota_exceeded, and quota says which limit was hit:
keyString - The quota key that would be exceeded, as listed by Get Quotas.limitInteger - The project's limit for this key.usedInteger - How much of the limit is already in use.requestedInteger - How much the rejected request asked for.
{
"code": "quota_exceeded",
"message": "Project quota exceeded for 'cpu-dedicated': requested 4, 4 of 4 already in use",
"quota": {
"key": "cpu-dedicated",
"limit": 4,
"used": 4,
"requested": 4
}
}
Match on code and quota.key rather than on message, whose text may change.