Get more quota¶
Quotas are per region. When a project needs more than its limits allow in a region, ask for an increase there. Your provider reviews the request, and once it's approved the new limits apply straight away.
You need to be an owner or admin of the organisation to file a request. Anyone who can see the project can read its quota and its requests.
The examples use the variables set in Make your first calls: BASE, BREQWATR_API_KEY, ORG_ID and PROJECT_ID.
1. Check the quota¶
Pick the region from GET /regions and read the project's quota there:
export REGION_ID=yul1
curl -s "$BASE/orgs/$ORG_ID/projects/$PROJECT_ID/regions/$REGION_ID/quota" \
-H "Authorization: Bearer $BREQWATR_API_KEY" | jq
{
"data": {
"region": "yul1",
"provisioned": true,
"dimensions": {
"ram_gb": { "used": 60, "limit": 64 },
"storage_gb": { "used": 100, "limit": 500 },
"instances": { "used": 6, "limit": null },
"vcpus": { "used": 24, "limit": null },
"floating_ips": { "used": 1, "limit": 5 }
}
}
}
Here RAM is nearly used up. A null limit means unlimited, so instances and vcpus can't be increased.
If provisioned is false, the project hasn't been used in this region yet, and the limits shown are the ones it will start with.
If the cloud can't be read, the request answers 503 quota_unavailable with Retry-After. Wait that many seconds and try again.
2. File the request¶
Send the amount to add to each dimension, not the new limit, and say why you need it:
request=$(curl -s -X POST "$BASE/orgs/$ORG_ID/projects/$PROJECT_ID/quota_increase_requests" \
-H "Authorization: Bearer $BREQWATR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"region": "yul1", "reason": "Two new storefronts", "add": {"ram_gb": 64}}')
echo "$request" | jq
export REQUEST_ID=$(echo "$request" | jq -r '.data.id')
The request answers 201, with its address in Location. It stores the limit you'll end up with, worked out from the current one: 64 GB plus 64 GB is 128 GB.
{
"data": {
"id": "c41e8b07-2fd6-49a3-b1e8-5d06a7c3f912",
"region": "yul1",
"status": "pending",
"requested": { "ram_gb": 128 },
"reason": "Two new storefronts",
"review_note": null,
"created_at": "2026-09-14T15:04:05Z",
"updated_at": "2026-09-14T15:04:05Z"
}
}
A project can have one open request per region. While one is pending or needs_info, another for the same region answers 422 validation_failed. A missing reason does too, as does a request with nothing to add, including one that only asks to add to an unlimited dimension:
{
"code": "validation_failed",
"status": 422,
"errors": [
{ "field": "base", "message": "an open quota increase request already exists for this project" }
]
}
3. Follow it through review¶
Read the request until its status changes:
curl -s "$BASE/orgs/$ORG_ID/projects/$PROJECT_ID/quota_increase_requests/$REQUEST_ID" \
-H "Authorization: Bearer $BREQWATR_API_KEY" | jq
| Status | Meaning |
|---|---|
pending |
Waiting for review |
approved |
The new limits are in effect. Read the quota again to see them |
rejected |
Declined. review_note says why |
needs_info |
The reviewer has a question in review_note. Answer it as step 4 shows |
Review is done by people, so check back from time to time rather than polling every few seconds. GET /orgs/{org_id}/projects/{project_id}/quota_increase_requests lists every request for the project, in every region, newest first.
4. Answer a question¶
When the status is needs_info, read review_note, then send the reason and the amounts again with your answer:
curl -s -X PATCH "$BASE/orgs/$ORG_ID/projects/$PROJECT_ID/quota_increase_requests/$REQUEST_ID" \
-H "Authorization: Bearer $BREQWATR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"reason": "Two new storefronts, each running four 8 GB instances", "add": {"ram_gb": 64}}' | jq
The request goes back to pending, its review note is cleared, and it keeps its region. The amounts are worked out again from the current limits.
Only a request in needs_info can be changed. Any other status answers 409 not_editable.