VPS.org API

Dokumentimi i API REST

API-ja e serverëve

Krijo, kontrollo, fuqizo, ndrysho madhësinë dhe elemino serverat e tu VPS. Serverat identifikohen nga uuid e tyre.

Pikat fundore 15
Shtegu Bazë /api/v1/servers
MERR /api/v1/servers/

Listo të gjithë serverët

Kthen serverat në llogarinë tuaj, më të riun në fillim, 25 për faqe. Serverat që po eleminohen nuk përfshihen.

Të drejta të nevojshme: servers:list

Parametrat e pyetjes

Parametrat Lloji E detyrueshme Përshkrimi
page integer Jo. Numri i faqes, duke filluar nga 1
page_size integer Jo. Rezultatet për faqe (e paracaktuar 25, maksimum 100)

Shembull Kërkese

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

Shembull Përgjigjeje

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

Fushat e Përgjigjes

Fusha Lloji Përshkrimi
uuid string Identifikuesi i serverit përdoret në çdo pikë përfundimtare të serverit
hostname string Emri i host që keni zgjedhur kur keni krijuar serverin
status string Gjendja aktuale. Shiko vlerat e gjendjes së serverit më poshtë.
error_description string | null Detaje të dështimit të fundit kur gjendja është gabim, përndryshe null
location_name string Emri i pozicionit ku serveri është duke funksionuar
os_name string Emri i sistemit operativ, pa version
plan_name string Përmbledhja e lexueshme e planit, për shembull 1 vCPU / 2 GB RAM / 10 GB
ipv4_addresses array Adresat IPv4 si stringa. Bosh deri sa serveri të instalohet dhe në planet pa IPv4.
ipv6_addresses array Adresat IPv6 si stringa. Bosh deri sa serveri të instalohet.
created_at datetime Ora e krijimit (ISO 8601, UTC)
deployed boolean E vërtetë kur provizioni përfundon

Kodet e Statusit të Përgjigjes

200 Lista e serverëve u mor me sukses
403 Token i munguar apo i pavlefshëm API, ose token nuk ka të drejtat e kërkuara
POST /api/v1/servers/

Krijo Server të Ri

Lidh në radhë një server të ri për shpërndarje dhe e kthen menjëherë me rendin e gjendjes. Provisioning vazhdon në sfond: pyet pikën e fundit të gjendjes derisa shpërndarja të jetë e vërtetë. Kur serveri është gati, detajet e hyrjes i dërgohen me email pronarit të llogarisë.

Llogaria juaj ka nevojë për një metodë të ruajtur pagese. Në varësi të historisë së llogarisë suaj, një paraautorizim i përkohshëm prej rreth një jave të çmimit të planit (të paktën 1 USD) mund të vendoset në kartën tuaj para se të krijohet serveri.

Të drejta të nevojshme: servers:create

Parametrat e Trupit të Kërkesës

Parametrat Lloji E detyrueshme Përshkrimi
hostname string Po Së paku 3 karaktere. Vetëm shkronja, shifra, vijëza dhe pika.
location_id integer Po ID e një pozicioni aktiv nga API e pozicioneve
plan_uuid string Po UID i një plani aktiv nga API e Planit
operating_system_version_uuid string Po UID i një hyrjeje aktive në listën e versioneve të sistemit operativ
ssh_key_uuids array Jo. UUID e çelësave SSH nga API e çelësave SSH për t'u instaluar në server
ssh_key_ids array Jo. ID të plotë të kyçeve SSH, si alternativë ndaj ssh_key_uuids. Nëse të dyja dërgohen, përdoret ssh_key_ids.
ssh_key_uuid, ssh_key_id string, integer Jo. Shkurtim për një kyç të vetëm SSH
auth_method string Jo. fjalëkalimi, kyçi_ssh ose të dyja. E paracaktuar në fjalëkalim, ose në të dy kur janë dhënë kyçet SSH.

Shembull Kërkese

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

Shembull Përgjigjeje

201 Krijuar me objektin e plotë të serverit të përshkruar në Get Server Details. Adresat dhe vmid mbushen sapo përfundon vendosja.

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

Kodet e Statusit të Përgjigjes

201 Serveri u krijua dhe u vendos në radhë për shpërndarje
400 Gabim validimi, për shembull një vendndodhje joaktive, plan apo version i sistemit operativ
402 Asnjë metodë pagese në dosje, faturat e papaguara apo autorizimi paraprak i kartës është refuzuar
403 Token i munguar apo i pavlefshëm API, ose token nuk ka të drejtat e kërkuara
429 Profili juaj ka arritur kufirin e krijimit të serverit
MERR /api/v1/servers/{uuid}/

Merr Detajet e Serverit

Kthen një server me pozicionin e tij, planin, sistemin operativ, adresat IP dhe pesë veprimet më të fundit.

Të drejta të nevojshme: servers:list

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

Shembull Përgjigjeje

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

SVG icon markup and the versions list are shortened here.

Fushat e Përgjigjes

Fusha Lloji Përshkrimi
vmid integer | null Numri i makinës virtuale, i caktuar gjatë instalimit
location object Objekti i pozicionit, siç kthehet nga API e pozicioneve
plan object Objekti i planit, siç kthehet nga API e planeve
operating_system, operating_system_version object Sistemi operativ dhe versioninstaluar, siç kthehet nga API e Sistemeve Operative
ipv4_addresses, ipv6_addresses array Një objekt për adresë me ip, gateway, subnet dhe rdns (emri i kundërt i host DNS)
recent_actions array Deri në pesë veprime të fundit: id, action, action_display, description, user_email, created_at

Kodet e Statusit të Përgjigjes

200 Detajet e serverit u morën me sukses
404 Nuk u gjet ose i përket një llogarie tjetër
MERR /api/v1/servers/{uuid}/status/

Gjendja e serverit

Një thirrje e lehtë për sondazh pasi krijoni, aktivizoni apo ndryshoni madhësinë e një serveri.

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
}

Serveri

Vlera Përshkrimi
queue Një veprim (zhvillim, fuqizim, ripërmasa, rikthim) është në pritje ose në proces
deploying Serverët e krijuar nga paneli i kontrollit përdorin këtë gjendje; serverët e krijuar nëpërmjet API mbeten në radhë derisa të jenë gati.
on Duke ekzekutuar
off Fikur
error Veprimi i fundit dështoi. Shiko error_description.
suspended_payment Pezulluar për shkak të faturave të papaguara
POST /api/v1/servers/{uuid}/power/

Kontrollo energjinë e serverit

Vendos në radhë një veprim energjie. Gjendja e serverit ndryshon në radhë deri sa veprimi të përfundojë.

Të drejta të nevojshme: servers:power

Parametrat e Trupit të Kërkesës

Parametrat Lloji E detyrueshme Përshkrimi
action string Po start: Fute
shutdown: mbyllje e mirëfilltë, e detyruar nëse mysafirja nuk ndalet
restart: hard power cycle (stop, pastaj fill)
stop: aktualisht kryen të njëjtin cikl energjie si rinisja. Përdor shutdown për të lënë një server të fikur.

Shembull Kërkese

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

Shembull Përgjigjeje

{
  "message": "Server restart queued"
}

Kodet e Statusit të Përgjigjes

200 Veprimi u vendos në rradhë
400 Veprimi mungon ose nuk suportohet
402 filluesi u refuzua sepse llogaria ka fatura të papaguara
404 Nuk u gjet ose i përket një llogarie tjetër
POST /api/v1/servers/{uuid}/resize/

Ripërmasa server

Lëviz serverin në një plan tjetër aktiv. Plani i ri nuk mund të ketë më pak hapësirë disk se ai aktual dhe trupi i kërkesës duhet të përfshijë veprimin e caktuar për të ripërmasuar. Kapaciteti i hypervisor për planin e ri kontrollohet para se të vendoset ndonjë gjë në radhë, kështu që një kërkesë e refuzuar e lë serverin të pandryshuar.

Serveri mbyllet ndërsa ndryshohet madhësia e tij dhe rinis pastaj. Nëse ndryshimi i madhësisë dështon, serveri kthehet në planin e mëparshëm dhe rinis përsëri nëse ishte në funksionim. Rritja e diskës nuk mund të anullohet.

Të drejta të nevojshme: servers:resize

Parametrat e Trupit të Kërkesës

Parametrat Lloji E detyrueshme Përshkrimi
action string Po Duhet të ripërmarrje
new_plan_uuid string Po UID e planit për t'u lëvizur tek
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"
}

Shembull i një ripërmarrjeje të refuzuar (409):

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

Kodet e Statusit të Përgjigjes

200 Veprimi u vendos në rradhë
400 Mungon veprimi ose new_plan_uuid, plan i pavlefshëm apo i inaktiv, një plan me më pak hapësirë në disk, ose një plan GPU (planet GPU nuk mund të ripërmarrë nëpërmjet API)
404 Nuk u gjet ose i përket një llogarie tjetër
409 Një ndryshim i ripërmarrjes apo ruajtjes është tashmë në proces, ose nuk ka kapacitet të mjaftueshëm hypervisor për planin e ri
503 Kapaciteti nuk mund të kontrollohet tani. Serveri nuk është ndryshuar; provo përsëri më vonë.
POST /api/v1/servers/{uuid}/reset-password/

Rivendos fjalëkalimin root

Gjenerat një fjalëkalim të ri root, e kthen atë në përgjigje dhe e vendos ndryshimin në server. Fjalëkalimi i ri gjithashtu ju dërgohet me email. Serveri duhet të jetë i instaluar. Nuk është i nevojshëm asnjë trup kërkese.

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

Kodet e Statusit të Përgjigjes

200 Veprimi u vendos në rradhë
400 Serveri nuk është vendosur ende
404 Nuk u gjet ose i përket një llogarie tjetër
MERR POST /api/v1/servers/{uuid}/rdns/

DNS e kundërt (PTR)

GET liston emrin e kundërt DNS të host për çdo adresë IPv4 dhe IPv6 në server. POST e vendos atë për një adresë. Dërgimi i një host bosh e rivendos adresën tek emri i paracaktuar i kundërt DNS.

Të drejta të nevojshme: servers:update

Parametrat e Trupit të Kërkesës (POST)

Parametrat Lloji E detyrueshme Përshkrimi
ip string Po Një adresë IPv4 ose IPv6 i caktuar këtij serveri
hostname string Jo. Emri i host PTR. Lëre bosh për të rivendosur në të paracaktuarin.
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"
}

Përgjigja GET:

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

Kodet e Statusit të Përgjigjes

400 mungon IP, ose emri i host nuk mund të vendoset
404 Adresa IP nuk i është caktuar këtij serveri
POST /api/v1/servers/{uuid}/exec/

Ekzekuto një komandë në server

Ekzekuton një komandë shell brenda serverit nëpërmjet agjentit të mysafirëve QEMU dhe pret që të përfundojë. Serveri duhet të jetë i vendosur dhe në funksionim, dhe qemu-guest-agent duhet të jetë instaluar dhe në funksionim në mysafir.

Të drejta të nevojshme: servers:exec

Parametrat e Trupit të Kërkesës

Parametrat Lloji E detyrueshme Përshkrimi
command string Po Ekzekuto komandën në rresht me /bin/sh -c, deri në 2000 karaktere
timeout integer Jo. Sekondat për pritje të komandës, nga 1 deri në 300 (e paracaktuar 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
}

Nëse komanda është ende në ekzekutim kur të skadojë koha, përgjigjet do të kenë timed_out të vendosur në true dhe exit_code të vendosur në null.

Kodet e Statusit të Përgjigjes

200 Komanda përfundoi ose kohëzgjatja përfundoi
400 Serveri nuk është instaluar apo nuk është në funksionim, ose parametrat janë të pavlefshëm
409 Agjenti i mysafirëve QEMU nuk është në execution në server
503 Problem i përkohshëm lidhjeje. Përpiqu përsëri pas header Retry-After.
FSHIR /api/v1/servers/{uuid}/

Fshij Serverin

Rreshton serverin për eleminim të përhershëm. Serveri zhduket menjëherë nga lista dhe nuk mund të rimerret.

Të drejta të nevojshme: 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"
}

Kodet e Statusit të Përgjigjes

202 U pranua: kërkesa u vendos në rradhë
404 Nuk u gjet ose i përket një llogarie tjetër
MERR POST /api/v1/ssh-keys/

Kyçët SSH

Ruaj çelësat publikë SSH në llogarinë tënde, pastaj kalo uuids e tyre si ssh_key_uuids kur krijon një server. GET liston çelësat tuaj (25 për faqe); POST shton një.

Të drejta të nevojshme: ssh-keys:list (GET), ssh-keys:create (POST)

Parametrat e Trupit të Kërkesës (POST)

Parametrat Lloji E detyrueshme Përshkrimi
name string Po Një emër për të njohur kyçin, deri në 100 karakterë
public_key string Po Kyçi publik në formatin OpenSSH, për shembull përmbajtja e id_ed25519.pub

Shembull Kërkese

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

Shembull Përgjigjeje

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

Fushat e Përgjigjes

Fusha Lloji Përshkrimi
id, uuid integer, string Identifikuesit e kyçit. Përdor uuid në ssh_key_uuids dhe në URL-në më poshtë; id punon në ssh_key_ids.
fingerprint string Gjurma e gishtit MD5 e kyçit, e llogaritur nga platforma
last_used_at datetime | null Kur kyçi u instalua për herë të fundit në një server të ri

Kodet e Statusit të Përgjigjes

201 Kyçi i shtuar
400 Mungon emri ose kyçi publik nuk është kyç i vlefshëm SSH
MERR FSHIR /api/v1/ssh-keys/{uuid}/

Merr apo elemino një kyç SSH

GET kthen një kyç me fushat e mësipërme. DELETE e heq atë nga llogaria juaj dhe kthen 204 pa trup. Fshirja e një kyçi nuk e heq atë nga serverat ku është instaluar. Kyçi nuk mund të ndryshohet: fshihet dhe shtohet përsëri.

Të drejta të nevojshme: 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"

Backup dhe Instant

Krijimi i një backup ose një snapshot është gjithashtu një veprim serveri: