VPS.org API

REST API belgelendirmesi

Sunucular API'si

VPS sunucularınızı oluşturun, inceleyin, güçlendirin, yeniden boyutlandırın ve siliniz. Sunucular uuid'leri ile tanımlanır.

Uç noktalar 15
Temel Yol /api/v1/servers
ELDE ETMEK /api/v1/servers/

Tüm Sunucuları Listele

Hesabınızdaki sunucuları, sayfa başına 25'er olarak en yenisi öncelikle geri verir. Sililecek sunucular dahil edilmez.

İzin gerekiyor: servers:list

Sorgu Parametreleri

Parametreler Tip Gerekli Açıklama
page integer Hayır. Sayfa sayısı, 1'den başlayarak
page_size integer Hayır. Sayfa başına sonuçlar (varsayılan 25, maksimum 100)

Örnek Talep

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

Örnek Yanıt

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

Yanıt Alanları

Alan Tip Açıklama
uuid string Diğer her sunucu son noktasında kullanılan sunucu tanımlayıcısı
hostname string Sunucu oluştururken seçtiğiniz konut adı
status string Mevcut durum. Aşağıdaki Sunucu Durumu Değerlerine bakınız.
error_description string | null Durum hata olduğunda son hatanın ayrıntıları, aksi takdirde boş
location_name string Sunucunun çalıştığı konumun adı
os_name string İşletim sistemi adı, sürüm olmadan
plan_name string Okunabilir plan özeti, örneğin 1 vCPU / 2 GB RAM / 10 GB
ipv4_addresses array IPv4 adresleri diziler olarak. Sunucu kullanılana kadar ve IPv4 olmayan planlarda boş.
ipv6_addresses array IPv6 adresleri diziler olarak. Sunucu kullanılana kadar boş.
created_at datetime Yaratma zamanı (ISO 8601, UTC)
deployed boolean Provisioning bittikten sonra doğru

Yanıt Durum Kodları

200 Sunucu listesi başarıyla alındı.
403 Eksik veya geçersiz API token'ı, ya da token'ın gerekli izinleri yok
POST /api/v1/servers/

Yeni Sunucu Oluştur

Yeni bir sunucuyu dağıtım için kuyruğa koyar ve durumu ile birlikte hemen geri gönderir. Temin arka planda devam eder: durum son noktası dağıtılmış doğru olana kadar sorgulanır. Sunucu hazır olduğunda, giriş bilgileri hesap sahibine e-posta ile gönderilir.

Hesabınıza kaydedilmiş bir ödeme yöntemi gerekiyor. Hesabınızdaki geçmişe bağlı olarak, sunucu oluşturulmadan önce kartınızda plan fiyatının yaklaşık bir haftalık bir geçici ön onay tutarı (en az 1 USD) tutulabilir.

İzin gerekiyor: servers:create

İstek Gövdesi Parametreleri

Parametreler Tip Gerekli Açıklama
hostname string Evet En az 3 karakter. Sadece harfler, rakamlar, bağıntı ve noktalar.
location_id integer Evet Locations API'den aktif bir konum için id
plan_uuid string Evet Planlar API'sinden aktif bir planın uuid'i
operating_system_version_uuid string Evet İşletim sisteminin sürüm listesindeki aktif bir girişin uuid'i
ssh_key_uuids array Hayır. Sunucuya kurulacak SSH Anahtarlar API'sinden SSH anahtarlarının UUID'leri
ssh_key_ids array Hayır. Ssh_key_uuids'e alternatif olarak SSH anahtarlarının tam sayı kimlikleri. Eğer her ikisi de gönderilirse, ssh_key_ids kullanılır.
ssh_key_uuid, ssh_key_id string, integer Hayır. Tek bir SSH anahtarı için kısayol
auth_method string Hayır. parola, ssh_key veya her ikisi. Önceden belirlenmiş parola, ya da SSH anahtarları verildiği zaman her ikisi.

Örnek Talep

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

Örnek Yanıt

201 Get Server Details bölümünde tanımlanan tam sunucu nesnesi ile oluşturuldu. Adresler ve vmid, uygulama tamamlandığında doldurulur.

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

Yanıt Durum Kodları

201 Sunucu oluşturuldu ve dağıtım için kuyruğa konuldu
400 Güvenlik hatası, örneğin etkin olmayan bir yer, plan veya işletim sistemi sürümü
402 Dosyada ödeme yöntemi yok, ödenmemiş faturalar var ya da kart ön onayı reddedildi
403 Eksik veya geçersiz API token'ı, ya da token'ın gerekli izinleri yok
429 Hesabınız sunucu yaratım limitine ulaşmış durumda
ELDE ETMEK /api/v1/servers/{uuid}/

Sunucu Ayrıntılarını Al

Bir sunucuyu konumuyla, planıyla, işletim sistemiyle, IP adresleriyle ve en son beş eylemle geri döndürür.

İzin gerekiyor: servers:list

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

Örnek Yanıt

{
  "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 ikon işaretleme ve sürüm listesi burada kısaltılmıştır.

Yanıt Alanları

Alan Tip Açıklama
vmid integer | null Sanal makine numarası, dağıtım sırasında ayarlandı
location object Locations API tarafından geri döndürülen konum nesnesi
plan object Plan nesnesi, Planlar API'si tarafından geri döndürülmüştür
operating_system, operating_system_version object İşletim sistemi ve Operating Systems API tarafından geri döndürülen kurulu sürüm
ipv4_addresses, ipv6_addresses array IP, giriş, alt ağ ve rdns (ters DNS hostname) ile adres başına bir nesne
recent_actions array En son beş eyleme kadar: id, action, action_display, description, user_email, created_at

Yanıt Durum Kodları

200 Sunucu bilgileri başarıyla alındı.
404 Bulunamadı veya başka bir hesaba aittir
ELDE ETMEK /api/v1/servers/{uuid}/status/

Sunucu durumunu al

Bir sunucu yarattıktan, güçlendirdikten veya yeniden boyutlandırdıktan sonra sorgulamak için hafif bir çağrı.

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
}

Sunucu Durumu Değerleri

Değer Açıklama
queue Bir eylem (uygula, güçlendir, yeniden boyutlandır, geri yükle) kuyruğa konulmuş veya devam etmektedir
deploying Temin ediliyor. Kontrol panelinden oluşturulan sunucu bu durumu kullanır; API aracılığıyla oluşturulan sunucu hazır olana kadar kuyruğa girer.
on Koşuyorum.
off Kapatıldı
error Son eylem başarısız oldu. error_description'a bakınız.
suspended_payment Ödememiş faturalar yüzünden askıya alındı.
POST /api/v1/servers/{uuid}/power/

Sunucu güç kontrolü

Güç eylemi kuyruğuna koyar. Sunucu durumunun etkinlik tamamlanana kadar kuyruğa girmesi sağlanıyor.

İzin gerekiyor: servers:power

İstek Gövdesi Parametreleri

Parametreler Tip Gerekli Açıklama
action string Evet start: güç
shutdown: misafir durmazsa zorla kapatılacak
restart: sert güç döngüsü (durun, sonra başla)
stop: şu anda yeniden başlatma ile aynı güç döngüsünü yapıyor. Sunucuyu kapalı bırakmak için shutdown kullanın.

Örnek Talep

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

Örnek Yanıt

{
  "message": "Server restart queued"
}

Yanıt Durum Kodları

200 Etkinlik kuyruğa konuldu
400 Eksik veya desteklenmeyen eylem
402 başlatma reddedildi çünkü hesaba ödenmemiş faturalar var
404 Bulunamadı veya başka bir hesaba aittir
POST /api/v1/servers/{uuid}/resize/

Sunucu Boyutlarını Değiştir

Sunucuyu başka bir aktif plana taşır. Yeni plan mevcut plandan daha az disk alanı alamaz ve istenen maddede yeniden boyutlandırmak için bir eylem belirlenmiş olmalıdır. Yeni plan için hipervizor kapasitesi herhangi bir şey kuyruğa konmadan önce kontrol edilir, böylece reddedilen bir talep sunucuyu değiştirilmemiş bırakır.

Sunucu, boyut değiştirirken kapatılıp sonra tekrar başlatılır. Eğer boyut değiştirme başarısız olursa, sunucu önceki planına geri döndürülür ve çalıştığı takdirde yeniden başlatılır. Disk büyümesi geri alınamaz.

İzin gerekiyor: servers:resize

İstek Gövdesi Parametreleri

Parametreler Tip Gerekli Açıklama
action string Evet Yeniden boyutlandırılması gerekiyor
new_plan_uuid string Evet Geçilen planın uuid' i
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"
}

Reddedilen bir yeniden boyutlandırma örneği (409):

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

Yanıt Durum Kodları

200 Etkinlik kuyruğa konuldu
400 Eksik eylem veya new_plan_uuid, geçersiz veya etkisiz plan, daha az disk alanı olan bir plan veya bir GPU planı (GPU planları API üzerinden yeniden boyutlandırılamaz)
404 Bulunamadı veya başka bir hesaba aittir
409 Bir yeniden boyutlandırma veya depolama değişikliği çoktan devam ediyor, ya da yeni plan için yeterli hipervizor kapasitesi yok
503 Kapasite şu anda kontrol edilemedi. Sunucu değiştirilmedi, daha sonra tekrar deneyin.
POST /api/v1/servers/{uuid}/reset-password/

Root parolasını yeniden koy

Yeni bir root parolası oluşturur, bunu yanıtta döndürür ve değişikliği sunucuda kuyruğa alır. Yeni parola ayrıca size e-posta ile de gönderilir. Sunucunun dağıtılmış olması gerekir. İstek gövdesine gerek yoktur.

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

Yanıt Durum Kodları

200 Etkinlik kuyruğa konuldu
400 Sunucu henüz yüklenmemiştir
404 Bulunamadı veya başka bir hesaba aittir
ELDE ETMEK POST /api/v1/servers/{uuid}/rdns/

Ters DNS (PTR)

GET, sunucudaki her IPv4 ve IPv6 adresinin ters DNS ana bilgisayar adını listeler. POST, bunu bir adres için ayarlar. Boş bir ana bilgisayar adı göndermek, adresi varsayılan ters DNS adına sıfırlar.

İzin gerekiyor: servers:update

İstek Gövdesi Parametreleri (POST)

Parametreler Tip Gerekli Açıklama
ip string Evet Bu sunucuya ait bir IPv4 veya IPv6 adresi
hostname string Hayır. PTR konuk adı. Önbelleğe dönmek için boş bırakın.
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 cevabı:

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

Yanıt Durum Kodları

400 ip eksik, ya da hostname ayarlanamadı
404 IP adresi bu sunucuya ait değil
POST /api/v1/servers/{uuid}/exec/

Bir Sunucuda Komut Çalıştırma

Sunucu içinde QEMU misafir ajanından bir shell komutu çalıştır ve bitişini bekle. Sunucu dağıtılmış ve çalıştırılmış olmalı ve qemu-guest-agent misafirde kurulu ve çalıştırılmış olmalı.

İzin gerekiyor: servers:exec

İstek Gövdesi Parametreleri

Parametreler Tip Gerekli Açıklama
command string Evet Komut satırında /bin/sh -c ile çalıştır, 2000 karaktere kadar
timeout integer Hayır. Komut için bekleme saati, 1 ile 300 arasında (varsayılan 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
}

Eğer komut zaman aşımına uğradığında hala çalışıyorsa, cevap timed_out true olarak ayarlanır ve exit_code null olarak ayarlanır.

Yanıt Durum Kodları

200 Komut tamamlandı veya zaman aşımı oldu
400 Sunucu dağıtılmamıştır veya çalışmıyor, ya da geçersiz parametreleri vardır
409 QEMU misafir aracısı sunucuda çalışmıyor
503 Geçici bağlantı sorunu. Retry-After başlığından sonra tekrar deneyelim.
SİLMEK /api/v1/servers/{uuid}/

Sunucuyu Sil

Sunucuyu kalıcı olarak silmek için kuyruğa koyar. Sunucu listeden derhal kaybolur ve geri alınamaz.

İzin gerekiyor: 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"
}

Yanıt Durum Kodları

202 Kabul edildi: talebin kuyruğa konulması
404 Bulunamadı veya başka bir hesaba aittir
ELDE ETMEK POST /api/v1/ssh-keys/

SSH Anahtarlar

Kamu SSH anahtarlarını hesabınızda depolayın, sonra bir sunucu oluşturduğunuzda uuids'lerini ssh_key_uuids olarak gönderin. GET anahtarlarınızı listeler (sayfa başına 25); POST bir tane eklemektedir.

İzin gerekiyor: ssh-keys:list (GET), ssh-keys:create (POST)

İstek Gövdesi Parametreleri (POST)

Parametreler Tip Gerekli Açıklama
name string Evet Anahtarın tanımlanması için bir isim, 100 karaktere kadar
public_key string Evet OpenSSH biçiminde açık anahtar, örneğin id_ed25519.pub'un içeriği

Örnek Talep

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

Örnek Yanıt

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

Yanıt Alanları

Alan Tip Açıklama
id, uuid integer, string Anahtarın tanımlayıcıları. ssh_key_uuids ve aşağıdaki URL'de uuid kullanın; id ssh_key_ids'de çalışır.
fingerprint string Platform tarafından hesaplanan anahtar MD5 parmak izi
last_used_at datetime | null Anahtarın yeni bir sunucuya son ne zaman yüklendiği

Yanıt Durum Kodları

201 Anahtarın eklenmesi
400 Eksik isim, ya da açık anahtar geçerli bir SSH açık anahtarı değildir
ELDE ETMEK SİLMEK /api/v1/ssh-keys/{uuid}/

SSH Anahtarını Al veya Sil

GET, üstteki alanlarla bir anahtar geri verir. DELETE, hesabınızdan silmekte ve bedensiz 204 geri verir. Bir anahtarı silmek, onu daha önce yüklenmiş sunuculardan silmez. Anahtarları düzenleyemiyorsunuz: sil ve tekrar ekle.

İzin gerekiyor: 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"

Yedekleme ve Snapshot

Bir yedekleme veya bir görüntü oluşturmak da bir sunucu eylemidir: