Delete node pool
curl --request DELETE \
--url https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id} \
--header 'X-API-Key: <api-key>' \
--header 'X-Project-ID: <x-project-id>'import requests
url = "https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}"
headers = {
"X-Project-ID": "<x-project-id>",
"X-API-Key": "<api-key>"
}
response = requests.delete(url, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {'X-Project-ID': '<x-project-id>', 'X-API-Key': '<api-key>'}
};
fetch('https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>",
"X-Project-ID: <x-project-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("X-Project-ID", "<x-project-id>")
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}")
.header("X-Project-ID", "<x-project-id>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["X-Project-ID"] = '<x-project-id>'
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed successfully"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Node pools
Delete Node Pool
Remove a pool and all its nodes. Each node is cordoned and drained (PodDisruptionBudgets are honoured) before its VM is terminated, one at a time; the operation runs asynchronously and stops — with the pool intact — if a node cannot be emptied.
The last pool of a cluster cannot be deleted, and the cluster keeps at least 2 worker nodes.
DELETE
/
api
/
v1
/
k8s
/
clusters
/
{cluster_id}
/
pools
/
{pool_id}
Delete node pool
curl --request DELETE \
--url https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id} \
--header 'X-API-Key: <api-key>' \
--header 'X-Project-ID: <x-project-id>'import requests
url = "https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}"
headers = {
"X-Project-ID": "<x-project-id>",
"X-API-Key": "<api-key>"
}
response = requests.delete(url, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {'X-Project-ID': '<x-project-id>', 'X-API-Key': '<api-key>'}
};
fetch('https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>",
"X-Project-ID: <x-project-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("X-Project-ID", "<x-project-id>")
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}")
.header("X-Project-ID", "<x-project-id>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rafftechnologies.com/api/v1/k8s/clusters/{cluster_id}/pools/{pool_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["X-Project-ID"] = '<x-project-id>'
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Operation completed successfully"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Updated August 24, 2026
Every node is cordoned and drained before its VM is terminated, one at a time. The last pool of a cluster cannot be deleted, and the cluster keeps at least 2 worker nodes.
Authorizations
API key for authentication. Each key is bound to a specific account.
Headers
Project ID. Required for all mutating operations (create, delete, power actions, resize).
Path Parameters
Cluster ID (short id, e.g. q7z7zg)
Node pool ID
Last modified on August 24, 2026