Skip to main content

Node Pools API

The Node Pools API lets a Connect account see how its node pools scale and change their size, autoscaler and power schedule. See Node pools and autoscaler for how the autoscaler decides.

Make sure to read the Get Started document to understand how the API works.

Note: These endpoints accept user tokens and OAuth tokens with the scopes listed per operation. Environment tokens are not accepted.

Access​

You see the pools whose region is a private region enabled on one of your Connect accounts. Every account member can read them; changes need an account admin. A request for a pool you cannot see answers 403.

List node pools​

GET /api/public/v1/node-pools — scope quave:read.

ParameterTypeRequiredDescription
regionStringNoOnly this region. Omit to list every region where you have pools.

Response:

{
"nodePools": [
{
"region": "acme-prod",
"name": "acme-prod-workers",
"nodeRegion": "acme-prod",
"provider": "aws",
"role": "worker",
"instanceType": "m6i.xlarge",
"stateful": false,
"powerState": "Running",
"access": { "scope": "operator", "capabilities": { "view": true, "editScaling": true, "editPower": true, "nodePower": false, "editDisks": false } },
"autoscaler": {
"autoscale": true,
"min": 2,
"max": 6,
"currentNodes": 3,
"desiredNodes": 3,
"lastDecision": { "action": "noop", "reason": "…", "at": "2026-10-15T12:19:30.000Z" },
"utilization": null,
"scaleUpTargets": { "cpuPercent": 70, "memoryPercent": 75 },
"scaleDownThresholds": { "cpuPercent": 35, "memoryPercent": 37 },
"scaleDownWindow": { "seconds": 600, "belowSince": null, "elapsedSeconds": null, "remainingSeconds": null },
"atMin": false,
"pendingProvisionRequests": 0
}
}
]
}

scaleDownThresholds are half of each target, rounded down. The list does not measure utilization (null); get one pool for it. When a region cannot be reached, it is listed in unavailableRegions.

Get a node pool​

GET /api/public/v1/node-pool — scope quave:read.

ParameterTypeRequiredDescription
regionStringYesRegion of the pool (from the list).
nameStringYesPool name.

Returns the list fields plus:

FieldDescription
autoscaler.utilizationPool CPU and memory average measured when you call this endpoint, with the same calculation the autoscaler uses (available: false when node metrics are missing; absent on stateful pools).
specProvider, region, role, node type (nodeTemplate.instanceType, bootVolumeSizeGb), scaling, power and, for stateful pools, volumeBinding.
nodesOne item per node: slot, nodeName, phase, autoscaleManaged, appPodCount, resources (capacity, allocatable and allocated, as on the Nodes page) and, on stateful pools, volume and powerOverride.
eventsThe 20 most recent pool events (type, action, severity, node, eventTime).

Update scaling​

PATCH /api/public/v1/node-pool/scaling — scope quave:write:config.

Send region, name and only the fields to change: min, max, autoscale, scaleDownAction (Terminate or Stop), cpuUtilizationTargetPercent, memoryUtilizationTargetPercent (1–100), pendingPodsGracePeriodSeconds and scaleDownStabilizationSeconds (0–86400). The other settings keep their value. min cannot be above max.

{ "region": "acme-prod", "name": "acme-prod-workers", "min": 1 }

Update power​

PATCH /api/public/v1/node-pool/power — scope quave:write:config.

FieldDescription
modenormal (autoscaling), schedule or override.
timezone, stop, startFor schedule: IANA timezone and two cron expressions.
overrideFor override: Running or Suspended.

A suspended pool stops its VMs and the workloads on them.

Update data disk autogrow (stateful pools)​

PATCH /api/public/v1/node-pool/disk-autogrow — scope quave:write:config.

Send region, name, enabled and optionally triggerUsedRatio (0.5–0.95), minFreeGb, stepPercent (AWS needs at least 25), maxSizeGb (required when enabled) and cooldownMinutes.

Stop or start a node (stateful pools)​

POST /api/public/v1/node-pool/node-power — scope quave:write:dangerous.

Send region, name, slot (from nodes[].slot) and power (Suspended or Running). A stopped node keeps its data disk; its workloads stay down until it starts.

Grow a data disk (stateful pools)​

POST /api/public/v1/node-pool/disk-grow — scope quave:write:dangerous.

Send region, volumeName (from nodes[].volume.name) and at least one of:

  • sizeGb: the new size, above the current size. Disks never shrink, and AWS allows a limited number of changes per disk in 24 hours.
  • vpusPerGB (OCI disks only): the disk performance level in volume performance units per GB: 0 (lower cost), 10 (balanced, the OCI default), 20 (higher performance, the Quave standard) or 30 to 120 in steps of 10 (ultra high). OCI applies it online, after the grow when both are sent. OCI bills the level on the provider account that owns the disk.

A request with neither field answers 400.