VPS.org API

REST API Documentation

Server-API

Erstellen, prüfen, Strom, Größe ändern und löschen Sie Ihre VPS-Server. Server werden durch ihre uuid identifiziert.

Endpunkte 15
Basispfad /api/v1/servers
ERHALTEN /api/v1/servers/

Alle Server auflisten

Gibt die Server in Ihrem Konto zurück, die neuesten ersten, 25 pro Seite. Server, die gelöscht werden, werden nicht enthalten.

Erforderliche Genehmigung: servers:list

Abfrageparameter

Parameter Typ Erforderlich Description
page integer No Seitennummer, beginnend bei 1
page_size integer No Ergebnisse pro Seite (Standard 25, maximal 100)

Beispielanfrage

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";
}

Beispielantwort

{
  "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
    }
  ]
}

Antwortfelder

Feld Typ Description
uuid string Server-Kennung, die in jedem anderen Serverendpunkt verwendet wird
hostname string Hostname, den Sie beim Erstellen des Servers gewählt haben
status string Aktueller Zustand. Siehe Serverstatuswerte unten.
error_description string | null Details des letzten Fehlers bei Statusfehler, ansonsten null
location_name string Name des Standorts, in dem der Server läuft
os_name string Betriebssystemname, ohne Version
plan_name string Übersicht über die lesbaren Pläne, z.B. 1 vCPU / 2 GB RAM / 10 GB
ipv4_addresses array IPv4 Adressen als Strings. Leeren bis der Server bereitgestellt wird, und auf Plänen ohne IPv4.
ipv6_addresses array IPv6 Adressen als Strings. Leeren bis der Server bereitgestellt wird.
created_at datetime Erstellungszeit (ISO 8601, UTC)
deployed boolean Die Versorgung ist nach Beendigung der Versorgung richtig

Antwortstatuscodes

200 Serverliste erfolgreich abgerufen
403 Fehlendes oder ungültiges API-Token oder dem Token fehlt die erforderliche Berechtigung
POST /api/v1/servers/

Neuen Server erstellen

Wartet einen neuen Server für die Bereitstellung und gibt ihn sofort mit Statusqueue zurück. Die Bereitstellung läuft im Hintergrund weiter: Umfragen Sie den Statusendpunkt bis zur Bereitstellung ist wahr. Wenn der Server bereit ist, werden seine Login-Daten an den Kontoinhaber per E-Mail gesendet.

Ihr Konto benötigt eine gespeicherte Zahlungsmethode. Je nach Kontoverlauf kann ein temporärer Vorautorisierungs-Halter von etwa einer Woche des Planpreises (mindestens 1 USD) auf Ihrer Karte platziert werden, bevor der Server erstellt wird.

Erforderliche Genehmigung: servers:create

Anfragekörperparameter

Parameter Typ Erforderlich Description
hostname string Ja Mindestens 3 Zeichen. Buchstaben, Ziffern, Bindestriche und Perioden.
location_id integer Ja Die ID eines aktiven Standorts aus der Locations API
plan_uuid string Ja Die Funktion eines aktiven Plans aus der Plans API
operating_system_version_uuid string Ja Die Funktion eines aktiven Eintrags in der Versionsliste eines Betriebssystems
ssh_key_uuids array No UUIDs von SSH-Schlüsseln aus der SSH Keys API zum Installieren auf dem Server
ssh_key_ids array No Integer-IDs von SSH-Schlüsseln als Alternative zu ssh_key_uuids. Wenn beide gesendet werden, wird ssh_key_ids verwendet.
ssh_key_uuid, ssh_key_id string, integer No Kurzhand für einen einzigen SSH-Schlüssel
auth_method string No Passwort, ssh_key oder beides. Standardeinstellung für Passwort oder beides, wenn SSH-Schlüssel bereitgestellt werden.

Beispielanfrage

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);

Beispielantwort

201 Erstellt mit dem vollständigen Serverobjekt, das unter Get Server Details beschrieben wird. Adressen und vmid werden nach dem Ende der Bereitstellung ausgefüllt.

{
  "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": []
}

Antwortstatuscodes

201 Server erstellt und für die Bereitstellung in Warteschlange gestellt
400 Validierungsfehler, z.B. eine inaktive Position, Plan- oder Betriebssystemversion
402 Keine Zahlungsmethode auf Datei, unbezahlte Rechnungen, oder die Karte Vorautorisierung abgelehnt
403 Fehlendes oder ungültiges API-Token oder dem Token fehlt die erforderliche Berechtigung
429 Ihr Konto hat seine Server-Erstellungsgrenze erreicht
ERHALTEN /api/v1/servers/{uuid}/

Serverdetails abrufen

Gibt einen Server mit seinem Standort, Plan, Betriebssystem, IP-Adressen und den fünf neuesten Aktionen zurück.

Erforderliche Genehmigung: servers:list

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

Beispielantwort

{
  "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"
    }
  ]
}

Hier werden die SVG-Symbolmarkup und die Versionsliste gekürzt.

Antwortfelder

Feld Typ Description
vmid integer | null Virtuelle Maschinennummer, festgelegt während der Bereitstellung
location object Standortobjekt, wie von der Locations API zurückgegeben
plan object Planobjekt, wie von der Plans API zurückgegeben
operating_system, operating_system_version object Betriebssystem und die installierte Version, wie von der Betriebssystem-API zurückgegeben
ipv4_addresses, ipv6_addresses array Ein Objekt pro Adresse mit ip, Gateway, Subnet und rdns (der umgekehrte DNS-Hostname)
recent_actions array Bis zu fünf neueste Aktionen: id, action, action_display, Beschreibung, user_email, created_at

Antwortstatuscodes

200 Serverdetails erfolgreich abgerufen
404 Nicht gefunden, oder es gehört zu einem anderen Konto
ERHALTEN /api/v1/servers/{uuid}/status/

Serverstatus abrufen

Ein leichter Anruf für das Polling, nachdem Sie einen Server erstellen, betreiben oder size.

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
}

Serverstatuswerte

Wert Description
queue Eine Aktion (Deploy, Power, Größe ändern, wiederherstellen) wird in Warteschlange gesetzt oder läuft weiter
deploying Server, die aus dem Control Panel erstellt wurden, verwenden diesen Zustand; Server, die über die API erstellt wurden, bleiben in Warteschlange, bis sie bereit sind.
on Laufen
off Ausgeschaltet
error Die letzte Aktion ist fehlgeschlagen. Siehe error_description.
suspended_payment Aufgeschoben wegen unbezahlter Rechnungen
POST /api/v1/servers/{uuid}/power/

Steuerungsfunktion des Servers

Wartet eine Power-Aktion ab. Der Server-Status ändert sich in Warteschlange, bis die Aktion abgeschlossen ist.

Erforderliche Genehmigung: servers:power

Anfragekörperparameter

Parameter Typ Erforderlich Description
action string Ja start: Einschalten
shutdown: anmutige Abschaltung, abgezwungen, wenn der Gast nicht aufhört
restart: Hard Power Zyklus (Stopp, dann starten)
stop: führt derzeit den gleichen Stromkreislauf wie Neustart. Verwenden Sie Shutdown, um einen Server auszulassen.

Beispielanfrage

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())

Beispielantwort

{
  "message": "Server restart queued"
}

Antwortstatuscodes

200 Die Aktion wurde in die Warteschlange gesetzt.
400 Fehlte oder nicht unterstützte Aktion
402 start abgelehnt, weil das Konto hat unbezahlte Rechnungen
404 Nicht gefunden, oder es gehört zu einem anderen Konto
POST /api/v1/servers/{uuid}/resize/

Größe eines Servers ändern

Verschiebt den Server in einen anderen aktiven Plan. Der neue Plan kann nicht weniger Speicherplatz als der aktuelle haben, und der Request-Organ muss Aktionen enthalten, die auf die Größe ändern. Hypervisor Kapazität für den neuen Plan wird überprüft, bevor etwas in die Warteschlange gestoßen wird, so dass eine abgelehnte Anfrage den Server unverändert lässt.

Der Server wird heruntergefahren, während er verkleinert wird und danach wieder gestartet. Wenn die Größe nicht stimmt, wird der Server wieder auf den vorherigen Plan gesetzt und wieder gestartet, wenn er ausgeführt wird. Disk-Wachstum kann nicht rückgängig gemacht werden.

Erforderliche Genehmigung: servers:resize

Anfragekörperparameter

Parameter Typ Erforderlich Description
action string Ja Muss die Größe ändern
new_plan_uuid string Ja Die URUD des Plans, um zu bewegen
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"
}

Beispiel einer abgelehnten Größenänderung (409):

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

Antwortstatuscodes

200 Die Aktion wurde in die Warteschlange gesetzt.
400 Fehlt Aktion oder new_plan_uuid, ungültiger oder inaktiver Plan, ein Plan mit weniger Speicherplatz oder ein GPU-Plan (GPU-Pläne können nicht über die API verkleinert werden)
404 Nicht gefunden, oder es gehört zu einem anderen Konto
409 Eine Änderung der Größe oder des Speichers ist bereits im Gange, oder es gibt nicht genügend Hypervisorkapazität für den neuen Plan
503 Die Kapazität konnte im Moment nicht überprüft werden. Der Server wurde nicht geändert; später erneut versuchen.
POST /api/v1/servers/{uuid}/reset-password/

Root-Passwort zurücksetzen

Erzeugt ein neues Root-Passwort, gibt es in der Antwort zurück und wartet die Änderung auf dem Server. Das neue Passwort wird Ihnen ebenfalls per E-Mail zugesandt. Der Server muss bereitgestellt werden. Es wird kein Request Body benötigt.

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"
}

Antwortstatuscodes

200 Die Aktion wurde in die Warteschlange gesetzt.
400 Der Server ist noch nicht installiert
404 Nicht gefunden, oder es gehört zu einem anderen Konto
ERHALTEN POST /api/v1/servers/{uuid}/rdns/

Reverse DNS (PTR)

GET listet den umgekehrten DNS-Hostname jeder IPv4- und IPv6-Adresse auf dem Server auf. POST setzt ihn auf eine Adresse. Durch Senden eines leeren Hostnamens wird die Adresse auf den Standard- Reverse-DNS-Namen zurückgesetzt.

Erforderliche Genehmigung: servers:update

Anfragekörperparameter (POST)

Parameter Typ Erforderlich Description
ip string Ja Eine IPv4- oder IPv6-Adresse, die diesem Server zugewiesen ist
hostname string No Der PTR-Hostname. Lassen Sie leer, um auf die Standardeinstellung zurückzusetzen.
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"
}

GET-Antwort:

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

Antwortstatuscodes

400 ip fehlt, oder der Hostname konnte nicht gesetzt werden
404 Die IP-Adresse wird diesem Server nicht zugewiesen
POST /api/v1/servers/{uuid}/exec/

Führen Sie einen Befehl auf einem Server aus

Führt einen Shell-Befehl innerhalb des Servers über den QEMU-Gastagent aus und wartet auf den Abschluss. Der Server muss bereitgestellt und ausgeführt werden, und qemu-Gast-agent muss im Gast installiert und ausgeführt werden.

Erforderliche Genehmigung: servers:exec

Anfragekörperparameter

Parameter Typ Erforderlich Description
command string Ja Befehlszeile mit /bin/sh -c, bis zu 2000 Zeichen
timeout integer No Sekunden, um auf den Befehl zu warten, 1 bis 300 (Standard 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
}

Wenn der Befehl beim Ablauf des Timeouts noch läuft, hat die Antwort timed_out auf true gesetzt und exit_code auf null gesetzt.

Antwortstatuscodes

200 Befehl beendet oder abgelaufen
400 Server nicht bereitgestellt oder nicht ausgeführt, oder ungültige Parameter
409 Der QEMU-Gastagent läuft nicht auf dem Server
503 Temporäres Verbindungsproblem. Nach dem Retry-After-Header erneut testen.
LÖSCHEN /api/v1/servers/{uuid}/

Server löschen

Wartet den Server zum permanenten Löschen. Der Server verschwindet sofort aus der Liste und kann nicht wiederhergestellt werden.

Erforderliche Genehmigung: 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"
}

Antwortstatuscodes

202 Akzeptiert: die Anfrage wurde in die Warteschlange gestellt
404 Nicht gefunden, oder es gehört zu einem anderen Konto
ERHALTEN POST /api/v1/ssh-keys/

SSH-Schlüssel

Speichern Sie öffentliche SSH-Schlüssel in Ihrem Konto und geben Sie dann ihre Uuids als ssh_key_uuids, wenn Sie einen Server erstellen. GET listet Ihre Schlüssel (25 pro Seite); POST fügt eine hinzu.

Erforderliche Genehmigung: ssh-keys:list (GET), ssh-keys:create (POST)

Anfragekörperparameter (POST)

Parameter Typ Erforderlich Description
name string Ja Ein Name, um den Schlüssel zu erkennen, bis zu 100 Zeichen
public_key string Ja Der öffentliche Schlüssel im OpenSSH-Format, zum Beispiel der Inhalt von id_ed25519.pub

Beispielanfrage

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"])

Beispielantwort

{
  "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
}

Antwortfelder

Feld Typ Description
id, uuid integer, string Schlüsselidentifikatoren. Uuid in ssh_key_uuids und in der URL unten verwenden; id funktioniert in ssh_key_ids.
fingerprint string MD5-Fingerabdruck des Schlüssels, berechnet von der Plattform
last_used_at datetime | null Als der Schlüssel zuletzt auf einem neuen Server installiert wurde

Antwortstatuscodes

201 Schlüssel hinzugefügt
400 Fehlender Name oder der öffentliche Schlüssel ist kein gültiger öffentlicher Schlüssel SSH
ERHALTEN LÖSCHEN /api/v1/ssh-keys/{uuid}/

Einen SSH-Schlüssel abrufen oder löschen

GET gibt einen Schlüssel mit den oben genannten Feldern zurück. DELETE entfernt ihn aus Ihrem Konto und gibt 204 ohne Körper zurück. Das Löschen eines Schlüssels entfernt ihn nicht von Servern, auf denen er bereits installiert war. Schlüssel können nicht bearbeitet werden: Löschen und erneut hinzufügen.

Erforderliche Genehmigung: 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"

Sicherungen und Snapshots

Ein Backup oder Snapshot zu erstellen ist auch eine Server-Aktion: