VPS.org API

Documentazione REST API

API di i servitori

Crea, ispezziuna, alimenta, ridimensiona e sguascia i vostri servituri VPS. I servituri sunnu identificati di u so uuid.

Punti finali 15
Percorsu di Base /api/v1/servers
OTTIENI /api/v1/servers/

Elencà tutti i servitori

Ritorna li servituri di lu vostru contu, u cchiù novu prima, 25 pi pagina. Li servituri ca vennu eliminati nun sunnu inclusi.

Permessi richiesti: servers:list

Parametri di dumanda

Parametri Tipu Obbligatoriu Descrizzioni
page integer No U numaru di pagina, a cuminciari di 1
page_size integer No Risultati per pagina (predefinitu 25, massimu 100)

Esempiu di dumanda

cURL
Python
JavaScript
PHP
curl -X GET "https://admin.vps.org/api/v1/servers/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests

url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.get(url, headers=headers)
for server in response.json()["results"]:
    print(server["uuid"], server["hostname"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
  headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' }
});

const data = await response.json();
console.log(data.results);
$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_API_TOKEN']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$data = json_decode(curl_exec($ch), true);
curl_close($ch);

foreach ($data['results'] as $server) {
    echo $server['hostname'] . ' ' . $server['status'] . "\n";
}

Esempiu di risposta

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
      "hostname": "web-01",
      "status": "on",
      "error_description": null,
      "location_name": "New Jersey",
      "plan_name": "1 vCPU / 2 GB RAM / 10 GB",
      "os_name": "Ubuntu",
      "ipv4_addresses": ["203.0.113.10"],
      "ipv6_addresses": ["2001:db8:2:dd::f9:6b"],
      "created_at": "2026-07-30T03:54:14.914364Z",
      "deployed": true
    },
    {
      "uuid": "2d7e9b40-6c1a-4f3e-8b5d-9a0c1e2f3b4d",
      "hostname": "db-01",
      "status": "queue",
      "error_description": null,
      "location_name": "New Jersey",
      "os_name": "Debian",
      "ipv4_addresses": [],
      "ipv6_addresses": [],
      "created_at": "2026-09-14T19:33:49.426508Z",
      "deployed": false
    }
  ]
}

Campi di risposta

Campu Tipu Descrizzioni
uuid string L'identificativu dû servituri usatu in ogni altru puntu finali dû servituri
hostname string U nomu di l'òspiti ca avete sceltu mentri criavate u servituri
status string Statu attuale. Vedi i valori di statu dû servituri sutta.
error_description string | null Dittagli di l'ultimu fallimentu quannu lu statu è erruri, altrimenti null
location_name string U nomu di l'ubizzioni unni u servituri hè in esecuzzioni
os_name string U nomu dû sistema operative, senza a versione
plan_name string Riassuntu di u pianu leggibile, per esempiu 1 vCPU / 2 GB RAM / 10 GB
ipv4_addresses array Indirizzi IPv4 comu stringhi. Vudu finu a quannu u servituri è dispiegatu, e pi piani senza IPv4.
ipv6_addresses array Indirizzi IPv6 comu stringhi. Vuidu nzinu a quannu u sirvitore è dispiegatu.
created_at datetime Ora di criazzioni (ISO 8601, UTC)
deployed boolean Veru quannu lu provisioning è finitu

Codici di Statu di Risposta

200 Lista di servitori recuperata cù successu
403 Token API mancante o nun validu, o u token nun havi li permessi richiesti
POST /api/v1/servers/

Creà un novu servitore

Metti in coda un novu servituri pi' lu dispiegamentu e lu ritruva immediatamenti cu la coda di statu. U provisioning cuntinua in fondu: polla u puntu finali di statu nzinu a quannu u dispiegamentu è veru. Quannu u servituri è prontu, li so dati di filu sunnu mandati via mail ô prupitari dû contu.

U vostru contu hà bisognu di un metudu di pagamentu salvatu. A sicunna di a storia di u vostru contu, una pre-autorizzazzioni temporania di circa una simana di u prezzu di u pianu (almenu 1 USD) pò esse posta supra a vostra carta prima ca u servituri sia creatu.

Permessi richiesti: servers:create

Parametri di u Corpu di a Richiesta

Parametri Tipu Obbligatoriu Descrizzioni
hostname string Iè Almìenu 3 caratteri. Sulu lettere, cifri, trattini e punti.
location_id integer Iè L'id di na pusizzioni attiva di l'API Locations
plan_uuid string Iè L'uuid di un pianu attivu di l'API Plans
operating_system_version_uuid string Iè L'uuid di n'entrata attiva ntâ lista di versioni di un sistema operative
ssh_key_uuids array No UUID di li chiavi SSH di l'API di chiavi SSH da installari supra lu sirvitori
ssh_key_ids array No L'id ntieri dî chiavi SSH, comu alternativa a ssh_key_uuids. Si tutti dui sunnu mandati, si usa ssh_key_ids.
ssh_key_uuid, ssh_key_id string, integer No Abbreviazioni pi na singula chiavi SSH
auth_method string No password, ssh_key o tutti dui. Predefinitu: password, o tutti dui quannu si furniscinu chiavi SSH.

Esempiu di dumanda

cURL
Python
JavaScript
PHP
curl -X POST "https://admin.vps.org/api/v1/servers/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "hostname": "web-01",
    "location_id": 1,
    "plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "ssh_key_uuids": ["YOUR_SSH_KEY_UUID"]
  }'
import requests

url = "https://admin.vps.org/api/v1/servers/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
data = {
    "hostname": "web-01",
    "location_id": 1,
    "plan_uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "operating_system_version_uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "ssh_key_uuids": ["YOUR_SSH_KEY_UUID"],
}

response = requests.post(url, headers=headers, json=data)
server = response.json()
print(response.status_code, server["uuid"], server["status"])
const response = await fetch('https://admin.vps.org/api/v1/servers/', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    hostname: 'web-01',
    location_id: 1,
    plan_uuid: '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
    operating_system_version_uuid: 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
    ssh_key_uuids: ['YOUR_SSH_KEY_UUID']
  })
});

const server = await response.json();
console.log(server.uuid, server.status);
$data = [
    'hostname' => 'web-01',
    'location_id' => 1,
    'plan_uuid' => '3bc2faf6-8f8b-4978-b62d-b52ed3f858e9',
    'operating_system_version_uuid' => 'c3418f90-80a0-4e00-a7e1-d0ab1822b941',
    'ssh_key_uuids' => ['YOUR_SSH_KEY_UUID']
];

$ch = curl_init('https://admin.vps.org/api/v1/servers/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_TOKEN',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server = json_decode(curl_exec($ch), true);
curl_close($ch);

Esempiu di risposta

201 Criatu cu l'uggettu dû servituri cumpletu discrittu nta Get Server Details. L'indirizzi e u vmid sunnu riempiti una vota chi lu dispiegamentu fini.

{
  "uuid": "5f0c8e2a-6b1d-4c3e-9a7f-2d4b6c8e0a1f",
  "hostname": "web-01",
  "vmid": null,
  "status": "queue",
  "error_description": null,
  "location": {
    "id": 1,
    "name": "New Jersey",
    "country_name": "United States",
    "is_active": true
  },
  "plan": {
    "uuid": "3bc2faf6-8f8b-4978-b62d-b52ed3f858e9",
    "cpu": 1,
    "ram": 2,
    "ram_unit": "GB",
    "disk_space": 10,
    "disk_space_total": 10240,
    "transfer": 500,
    "price": "3.50",
    "cpu_type_name": "Shared",
    "is_active": true,
    "hourly_price": "0.005",
    "monthly_price": "3.50",
    "is_gpu": false,
    "gpu_count": 0,
    "gpu_model": ""
  },
  "operating_system": {
    "id": 1,
    "name": "Ubuntu",
    "svg_icon": "<svg ...>",
    "versions": [ ... ]
  },
  "operating_system_version": {
    "uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "name": "24.04 LTS x64",
    "os_name": "Ubuntu",
    "os_svg_icon": "<svg ...>",
    "is_active": true
  },
  "ipv4_addresses": [],
  "ipv6_addresses": [],
  "deployed": false,
  "created_at": "2026-09-14T21:02:11.402113Z",
  "recent_actions": []
}

Codici di Statu di Risposta

201 Servituri creatu e in coda pi l'usu
400 Errori di validità, pi esempiu una pusizzioni inattiva, un pianu o na versione di sistema operative
402 Nudda manera di pagà in archiviu, fatture non pagate o a pre-autorizzazioni di carta di creditu rifiutata
403 Token API mancante o nun validu, o u token nun havi li permessi richiesti
429 U vostru contu ha ragghiuncitu u limitu di creazioni di u servituri
OTTIENI /api/v1/servers/{uuid}/

Ottene i dettagli di u servitore

Ritorna un servituri cu la so pusizzioni, u pianu, u sistema operative, l'indirizzi IP e li cincu azioni cchiù ricenti.

Permessi richiesti: servers:list

curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Esempiu di risposta

{
  "uuid": "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b",
  "hostname": "web-01",
  "vmid": 1042,
  "status": "on",
  "error_description": null,
  "location": {
    "id": 1,
    "name": "New Jersey",
    "country_name": "United States",
    "is_active": true
  },
  "plan": {
    "uuid": "14186969-fbaf-43e1-9ab2-b1f1aeb66674",
    "cpu": 1,
    "ram": 2,
    "ram_unit": "GB",
    "disk_space": 25,
    "disk_space_total": 25600,
    "transfer": 1,
    "price": "5.00",
    "cpu_type_name": "Shared",
    "is_active": true,
    "hourly_price": "0.007",
    "monthly_price": "5.00",
    "is_gpu": false,
    "gpu_count": 0,
    "gpu_model": ""
  },
  "operating_system": {
    "id": 1,
    "name": "Ubuntu",
    "svg_icon": "<svg ...>",
    "versions": [ ... ]
  },
  "operating_system_version": {
    "uuid": "c3418f90-80a0-4e00-a7e1-d0ab1822b941",
    "name": "24.04 LTS x64",
    "os_name": "Ubuntu",
    "os_svg_icon": "<svg ...>",
    "is_active": true
  },
  "ipv4_addresses": [
    {
      "ip": "203.0.113.10",
      "gateway": "203.0.113.1",
      "subnet": "203.0.113.0",
      "rdns": "web-01.example.com"
    }
  ],
  "ipv6_addresses": [
    {
      "ip": "2001:db8:2:dd::f9:6b",
      "gateway": "2001:db8:2:dd::f9:1",
      "subnet": "2001:db8:2:dd::f9:0",
      "rdns": "web-01.example.com"
    }
  ],
  "deployed": true,
  "created_at": "2026-07-30T03:54:14.914364Z",
  "recent_actions": [
    {
      "id": 17028,
      "action": "create",
      "action_display": "Create",
      "description": "Server deployed with VMID 1042",
      "user_email": "you@example.com",
      "created_at": "2026-07-30T03:54:32.860854Z"
    }
  ]
}

U marcatu di l'icona SVG e a lista di li versioni sunnu abbreviati chiù in là.

Campi di risposta

Campu Tipu Descrizzioni
vmid integer | null Numru di màchina virtuali, impostatu duranti u dispiegamentu
location object Uggettu di pusizzioni, comu riturnatu di l'API di pusizzioni
plan object L'uggettu Plan, comu riturnatu di l'API Plans
operating_system, operating_system_version object U sistema operative e la so virsioni installata, comu ritornata di l'API di sistemi operative
ipv4_addresses, ipv6_addresses array Un oggettu per indirizzu cù ip, gateway, subnet e rdns (u nome di l'host DNS inversu)
recent_actions array Finu a cincu azioni ricenti: id, action, action_display, description, user_email, created_at

Codici di Statu di Risposta

200 I dettagli di u servitore sò stati recuperati cù successu
404 Non truvatu, o appartiene a un altru contu
OTTIENI /api/v1/servers/{uuid}/status/

Otteni lu statu dû servituri

Una chiamata liggia pi pulling dopu ca criàte, accendete o ridimensionate un servituri.

curl -X GET "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/status/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "status": "on",
  "deployed": true,
  "resizing": false
}

Valori di statu dû servituri

Valori Descrizzioni
queue N'azzioni (dispigghiari, accende, ridiminziunari, ripristinari) è in coda o in corso
deploying Li servituri criati di lu pannellu di cuntrollu usanu stu statu; li servituri creati di l'API restanu in coda nzinu a chi sunnu pronti.
on Esecuzione
off Spentu
error L'ultima azzioni nun riesci. Vedi error_description.
suspended_payment Suspenditu a causa di fatturi non pagati
POST /api/v1/servers/{uuid}/power/

Controllu di l'energia dû servituri

Metti 'n coda n'azzioni di putenza. U statu dû servituri cancia a coda nzinu a chi l'azzioni sia finita.

Permessi richiesti: servers:power

Parametri di u Corpu di a Richiesta

Parametri Tipu Obbligatoriu Descrizzioni
action string Iè start: power on
shutdown: chiusura graziosa, forzata si l'ospite nun si ferma
restart: ciclu di putenza dura (arrestu, poi avviu)
stop: lu servituri attualmente fa lu stissu ciclu d'alimentazione di l'avviamentu. Usa shutdown pi lassari lu servituri spentu.

Esempiu di dumanda

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/power/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "restart"}'
import requests

server_uuid = "8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b"
url = f"https://admin.vps.org/api/v1/servers/{server_uuid}/power/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

response = requests.post(url, headers=headers, json={"action": "restart"})
print(response.json())

Esempiu di risposta

{
  "message": "Server restart queued"
}

Codici di Statu di Risposta

200 L'azzioni fu messa 'n coda
400 Azzioni mancante o nun supportata
402 start refused because the account has unpaid bills
404 Non truvatu, o appartiene a un altru contu
POST /api/v1/servers/{uuid}/resize/

Ridimensionà un servituri

Sposta u servituri nta n'autru pianu attivà. U novu pianu nun po aviri cchiù picca spazziu di chiḍḍu attuale, e lu corpu dâ dumanda deve includiri l'azzioni di rediminsioni. A capacità di l'ipervisori pi u novu pianu è cuntrullata prima di accoddarisi, adunca una dumanda rifiutata lassa u servituri senza canciari.

U servituri si chiuda mentri si ridiminziona e si riavvia dopu. Si lu ridiminzionamentu fallisci, u servituri si rimetti a lu pianu pricidenti e si riavvia si era in funzioni. A criscita dû discu nun si po annullà.

Permessi richiesti: servers:resize

Parametri di u Corpu di a Richiesta

Parametri Tipu Obbligatoriu Descrizzioni
action string Iè Devi èssiri ridimensionatu
new_plan_uuid string Iè L'uuid di lu pianu a spustari
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/resize/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "resize", "new_plan_uuid": "5e26a4a6-bd0c-467c-abca-da036c811c3f"}'
{
  "message": "Resize queued successfully"
}

Esempiu di rediminsioni rifiutata (409):

{
  "error": "Not enough hypervisor capacity for the selected plan; the server was not changed"
}

Codici di Statu di Risposta

200 L'azzioni fu messa 'n coda
400 Azzioni mancanti o new_plan_uuid, pianu nun validu o inattivàbbili, un pianu cu menu spazziu di discu, o un pianu GPU (li piani GPU nun ponnu èssiri ridiminziunati cu l'API)
404 Non truvatu, o appartiene a un altru contu
409 Un canciu di dimensione o di archiviazione hè gia' in via, o ùn ci hè micca abbastanza capacità di l'ipervisori pi u novu pianu
503 Non si po cuntrullari la capacità a stu mumentu. U sirvizziu nun fu canciatu; ripruvate cchiù tardu.
POST /api/v1/servers/{uuid}/reset-password/

Ripristina la password di root

Ghirà una nova password root, la riturna ntâ risposta e metti in coda u canciu ntô servituri. A nova password vi veni macari mandata pi email. U servituri deve èssiri dispiegatu. Nudda richiesta di corpu.

curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/reset-password/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "message": "Password reset queued. New password will also be emailed to you.",
  "password": "generated-password",
  "job_id": "b6f1c7e2-3a4d-4f5e-8b9c-0d1e2f3a4b5c"
}

Codici di Statu di Risposta

200 L'azzioni fu messa 'n coda
400 U sirvitore nun è ancora dispiegatu
404 Non truvatu, o appartiene a un altru contu
OTTIENI POST /api/v1/servers/{uuid}/rdns/

DNS inversu (PTR)

GET elenca u nomu di l'òspiti DNS inversu di ogni indirizzu IPv4 e IPv6 in u servituri. POST lu stabilisci pi un indirizzu. Mandannu un nomu di l'òspiti vudu, l'indirizzu si ripristina ô so nomu DNS inversu predefinitu.

Permessi richiesti: servers:update

Parametri di u Corpu di a Richiesta (POST)

Parametri Tipu Obbligatoriu Descrizzioni
ip string Iè Un indirizzu IPv4 o IPv6 assignatu a stu servituri
hostname string No U nomu di l'òspiti PTR. Lascialu vuòtu pi ripristinari u predefinitu.
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/rdns/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ip": "203.0.113.10", "hostname": "mail.example.com"}'
{
  "message": "Reverse DNS for 203.0.113.10 set to mail.example.com",
  "ip": "203.0.113.10",
  "hostname": "mail.example.com"
}

Risposta GET:

{
  "rdns": [
    {"ip": "203.0.113.10", "hostname": "mail.example.com"},
    {"ip": "2001:db8:2:dd::f9:6b", "hostname": "mail.example.com"}
  ]
}

Codici di Statu di Risposta

400 mancanu l'ip o u nomu di l'òspiti nun po' èssiri impostatu
404 L'indirizzu IP nun è assignatu a stu sirvitori
POST /api/v1/servers/{uuid}/exec/

Esegui un cumandu in un servituri

Esegue un cumandu di shell dintra lu servituri ntraversu l'agenti ospiti QEMU e aspitta ca finisci. U servituri deve èssiri dispiegatu e in esecuzzioni, e qemu-guest-agent deve èssiri installatu e in esecuzzioni ntô ospite.

Permessi richiesti: servers:exec

Parametri di u Corpu di a Richiesta

Parametri Tipu Obbligatoriu Descrizzioni
command string Iè Eseguiri a riga di cummandu cu /bin/sh -c, finu a 2000 carattiri
timeout integer No Sècunni di attesa pi lu comando, 1 à 300 (predefinitu 30)
curl -X POST "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/exec/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"command": "uptime", "timeout": 30}'
{
  "stdout": " 21:14:03 up 46 days,  2:10,  0 users,  load average: 0.08, 0.03, 0.01\n",
  "stderr": "",
  "exit_code": 0,
  "timed_out": false
}

Si lu cumandamentu è ancora in esecuzzioni quannu u tempu di rispittazione scade, la risposta hà timed_out impostatu a truexit_code impostatu a null.

Codici di Statu di Risposta

200 Comando finito o scaduto
400 U servituri nun è dispiegatu o nun hè in esecuzzioni, o i parametri nun sunnu validi
409 L'agginti ospiti QEMU nun hè in esecuzione supra lu sirvitori
503 Problema di cunnessione temporaniu. Ripruva dopu a testata Retry-After.
SCANCÀ /api/v1/servers/{uuid}/

Sguassà u servitore

Metti in coda u servituri pi l'eliminazione permanente. U servituri sparisce immediatamenti dâ lista e nun si po ripigghiari.

Permessi richiesti: servers:delete

curl -X DELETE "https://admin.vps.org/api/v1/servers/8c4f2a1e-5b3d-4e6f-9a7b-1c2d3e4f5a6b/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
{
  "message": "Server deletion queued"
}

Codici di Statu di Risposta

202 Accettatu: la richiesta fu messa in coda
404 Non truvatu, o appartiene a un altru contu
OTTIENI POST /api/v1/ssh-keys/

Chiavi SSH

Mantenni li chiavi pubblichi SSH ntô to contu, poi passa li so uuids comu ssh_key_uuids quannu criàvi un servituri. GET elenca li tue chiavi (25 pi pagina); POST ne agghiunge una.

Permessi richiesti: ssh-keys:list (GET), ssh-keys:create (POST)

Parametri di u Corpu di a Richiesta (POST)

Parametri Tipu Obbligatoriu Descrizzioni
name string Iè Un nomu pi riconosciri la chiavi, finu a 100 caratteri
public_key string Iè La chiavi pubblica ntô furmatu OpenSSH, pi esempiu lu cuntinutu di id_ed25519.pub

Esempiu di dumanda

cURL
Python
curl -X POST "https://admin.vps.org/api/v1/ssh-keys/" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop"}'
import requests

url = "https://admin.vps.org/api/v1/ssh-keys/"
headers = {"Authorization": "Bearer YOUR_API_TOKEN"}

with open("/home/you/.ssh/id_ed25519.pub") as f:
    data = {"name": "laptop", "public_key": f.read().strip()}

response = requests.post(url, headers=headers, json=data)
print(response.status_code, response.json()["uuid"])

Esempiu di risposta

{
  "id": 19,
  "uuid": "6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c",
  "name": "laptop",
  "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... you@laptop",
  "fingerprint": "0b:4c:9b:48:76:e7:1d:07:b9:ac:71:90:70:f7:9a:69",
  "created_at": "2026-08-23T19:16:11.547183Z",
  "last_used_at": null
}

Campi di risposta

Campu Tipu Descrizzioni
id, uuid integer, string Idintificaturi di chiavi. Usa uuid in ssh_key_uuids e ntô URL sutta; l'id funziona in ssh_key_ids.
fingerprint string Imprinta MD5 dâ chiavi, calcolata dâ piattaforma
last_used_at datetime | null Quannu la chiavi fu installata l'ultima vota nta nu servituri novu

Codici di Statu di Risposta

201 Chiavi agghiunta
400 U nomu manca, o a chiavi pubblica nun è una chiave publica SSH valida
OTTIENI SCANCÀ /api/v1/ssh-keys/{uuid}/

Riciviri o canciari na chiavi SSH

GET riturna una chiavi cu li campi supra. DELETE la liscia dû vostru contu e riturna 204 senza corpu. Canciannu na chiavi nun la lisciate di li servituri unni era gia installata. Li chiavi nun si ponnu canciari: canciate e riaggiungete.

Permessi richiesti: ssh-keys:list (GET), ssh-keys:delete (DELETE)

curl -X DELETE "https://admin.vps.org/api/v1/ssh-keys/6e1b9c52-3f8a-4d7e-a2c4-5b9d0e1f2a3c/" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Backuppi e istantanee

Criari nu backup o n'istantanea è puru n'azzioni dû servituri: