Add worker nodes
Adds one or more worker nodes to an existing Managed Kubernetes cluster without a full cluster-update request. The rest of the cluster (other nodes, autoscaling groups) is left untouched.
The cluster must be in "ACTIVE" status. The operation is asynchronous: the method returns 202 with the cluster payload where the new nodes appear in a transitional status ("PROVISIONING", then "JOINING"). Poll a node via GET /v1/kubernetes/{kubernetesId}/nodes/{nodeId} or the cluster GET until it reaches the "ACTIVE" status. To select hardware configurations for worker nodes, use the /v1/kubernetes-configs endpoint.
Optional Kubernetes labels and taints are applied to the node after it joins the cluster.
Request
- Base URLhttps://api.emma.ms/external
- AuthHTTP bearer
Path parameters
ID of the Kubernetes cluster
Request body
Example request
{
"nodes": [
{
"name": "worker-extra",
"dataCenterId": "gcp-europe-west4-a",
"vCpuType": "shared",
"vCpu": 2,
"ramGb": 4,
"volumeType": "ssd",
"volumeGb": 16,
"acceleratorTypeId": "7bf9d828-e3e8-496f-9901-9045640bb287",
"accelerators": 1,
"instanceType": "on_demand",
"labels": [
{
"key": "emma.ms/pool",
"value": "batch"
}
],
"taints": [
{
"key": "dedicated",
"value": "batch",
"effect": "NoSchedule"
}
]
}
]
}Response
Request accepted; the nodes are being provisioned
Example response
{
"id": 108379,
"createdAt": "2026-03-16T07:54:14.066",
"createdById": 2394,
"createdByName": "Automation User",
"modifiedAt": "2026-03-16T08:09:34.354",
"modifiedByName": "Automation User",
"modifiedById": 2427,
"name": "default-k8s-managed-cluster-name",
"version": "1.35",
"deploymentLocation": "eu",
"k8sConnectionType": "direct_connect",
"domainName": null,
"status": "ENV_DEPLOYMENT",
"controlPlaneStatus": "CREATING",
"cost": {
"unit": "MONTHS",
"currency": "EUR",
"price": 77.4160050040314
},
"nodeGroups": [
{
"name": "autonodegroup",
"nodes": [
{
"id": 108406,
"createdAt": "2026-03-16T09:21:45.235",
"name": "pfpuyr-autonodegroup",
"status": "DRAFT",
"instanceType": "on_demand",
"nodeStatus": "ACTIVE",
"provider": {
"id": 78,
"name": "GCP"
},
"location": {
"id": 77,
"name": "St. Ghislain",
"country": "Belgium",
"continent": "Europe",
"region": "EMEA",
"latitude": 50.44816,
"longitude": 3.81886
},
"dataCenter": {
"id": "gcp-europe-west1-b",
"name": "europe-west1-b",
"providerName": "GCP",
"providerId": 78,
"locationId": 77,
"locationName": "St. Ghislain"
},
"os": {
"id": 48,
"family": "Linux",
"type": "Ubuntu",
"architecture": "x86-64",
"version": "24.04"
},
"cloudNetworkType": "multi-cloud",
"vCpuType": "shared",
"vCpu": 2,
"ramGb": 4,
"disks": [
{
"id": 108407,
"name": "volume-bz0b1n",
"sizeGb": 16,
"typeId": 2,
"type": "ssd",
"isBootable": true
}
],
"networks": null,
"cost": {
"unit": "MONTHS",
"currency": "EUR",
"price": 38.708004
},
"securityGroup": null,
"accelerator": null,
"localDisks": null
}
],
"status": "CREATING",
"scalingPolicy": "ENABLED"
},
{
"name": "Nodes",
"nodes": [
{
"id": 108380,
"createdAt": "2026-03-16T07:54:14.085",
"name": "lsydyf-node",
"status": "DRAFT",
"instanceType": "on_demand",
"nodeStatus": "ACTIVE",
"provider": {
"id": 78,
"name": "GCP"
},
"location": {
"id": 77,
"name": "St. Ghislain",
"country": "Belgium",
"continent": "Europe",
"region": "EMEA",
"latitude": 50.44816,
"longitude": 3.81886
},
"dataCenter": {
"id": "gcp-europe-west1-b",
"name": "europe-west1-b",
"providerName": "GCP",
"providerId": 78,
"locationId": 77,
"locationName": "St. Ghislain"
},
"os": {
"id": 48,
"family": "Linux",
"type": "Ubuntu",
"architecture": "x86-64",
"version": "24.04"
},
"cloudNetworkType": "multi-cloud",
"vCpuType": "shared",
"vCpu": 2,
"ramGb": 4,
"disks": [
{
"id": 108381,
"name": "volume-kivy61",
"sizeGb": 16,
"typeId": 2,
"type": "ssd",
"isBootable": true
}
],
"networks": null,
"cost": {
"unit": "MONTHS",
"currency": "EUR",
"price": 28257
},
"securityGroup": null,
"accelerator": null,
"localDisks": null
}
],
"status": "ACTIVE",
"scalingPolicy": "SCALE_UP_ONLY"
}
],
"autoscalingConfigs": [
{
"groupName": "autonodegroup",
"dataCenterId": "gcp-europe-west1-b",
"minimumNodes": 1,
"maximumNodes": 2,
"targetNodes": 1,
"minimumVCpus": 1,
"maximumVCpus": null,
"targetVCpus": null,
"nodeGroupPriceLimit": 50,
"useOnDemandInstancesInsteadOfSpots": true,
"spotPercent": 50,
"spotMarkup": 0,
"userLabels": [
{
"key": "workload",
"value": "batch"
}
],
"configurationPriorities": [
{
"vCpuType": "shared",
"vCpu": 2,
"ramGb": 4,
"volumeGb": 16,
"volumeType": "ssd",
"priority": "high"
}
],
"limitsNotice": null
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.