Delete backup series
curl --request DELETE \
--url https://api.rafftechnologies.com/api/v1/backups/{id}/chain \
--header 'X-API-Key: <api-key>' \
--header 'X-Project-ID: <x-project-id>'import requests
url = "https://api.rafftechnologies.com/api/v1/backups/{id}/chain"
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/backups/{id}/chain', 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/backups/{id}/chain",
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/backups/{id}/chain"
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/backups/{id}/chain")
.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/backups/{id}/chain")
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>"
}Backups
Delete Backup Series
Delete an entire backup series — every restore point that the given backup belongs to. The series is identified by passing the UUID of any backup row in it; all sibling restore points (and the underlying storage) are removed in one call.
Use this when a single restore point can’t be removed on its own because it has older restore points it depends on. The single-backup Delete backup endpoint returns a clear error in that case and points here.
DELETE
/
api
/
v1
/
backups
/
{id}
/
chain
Delete backup series
curl --request DELETE \
--url https://api.rafftechnologies.com/api/v1/backups/{id}/chain \
--header 'X-API-Key: <api-key>' \
--header 'X-Project-ID: <x-project-id>'import requests
url = "https://api.rafftechnologies.com/api/v1/backups/{id}/chain"
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/backups/{id}/chain', 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/backups/{id}/chain",
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/backups/{id}/chain"
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/backups/{id}/chain")
.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/backups/{id}/chain")
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>"
}Updated May 14, 2026
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
UUID of any backup row in the series to remove.
Last modified on May 14, 2026