VPS.org API

Tài liệu API REST

API máy chủ

Tạo, kiểm tra, khởi động, thay đổi kích thước và xóa máy chủ VPS của bạn. Máy chủ được xác định bởi uuid của chúng.

Điểm cuối 15
Đường cơ sở /api/v1/servers
LẤY /api/v1/servers/

Liệt kê tất cả máy chủ

Trả lại các máy chủ trong tài khoản của bạn, mới nhất trước, 25 trên mỗi trang. Các máy chủ đang bị xoá không được bao gồm.

Cần quyền: servers:list

Tham số truy vấn

Tham số Kiểu Yêu cầu Mô tả
page integer Không Số trang, bắt đầu từ 1
page_size integer Không Kết quả trên trang (mặc định 25, tối đa 100)

Ví dụ về yêu cầu

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

Ví dụ về câu trả lời

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

Các trường phản hồi

Địa điểm Kiểu Mô tả
uuid string Định danh máy chủ được dùng trong mỗi điểm cuối máy chủ khác
hostname string Tên máy bạn chọn khi tạo máy phục vụ
status string Tình trạng hiện tại. Xem Giá trị Tình trạng Máy chủ bên dưới.
error_description string | null Chi tiết về sự thất bại cuối cùng khi trạng thái là lỗi, nếu không thì rỗng
location_name string Tên của vị trí mà máy phục vụ chạy
os_name string Tên hệ điều hành, không có phiên bản
plan_name string Tóm tắt kế hoạch đọc được, ví dụ 1 vCPU / 2 GB RAM / 10 GB
ipv4_addresses array Địa chỉ IPv4 như chuỗi. Thiếu cho đến khi máy chủ được triển khai, và trên các kế hoạch không có IPv4.
ipv6_addresses array Địa chỉ IPv6 dưới dạng chuỗi. Trống cho đến khi máy phục vụ được triển khai.
created_at datetime Thời gian tạo (ISO 8601, UTC)
deployed boolean Thật khi đã hoàn tất việc chuẩn bị

Mã trạng thái phản hồi

200 Đã truy xuất danh sách máy chủ thành công
403 Thiếu hoặc không hợp lệ token API, hoặc token không có quyền cần thiết
POST /api/v1/servers/

Tạo máy chủ mới

Đang xếp hàng một máy phục vụ mới để triển khai và trả lại ngay lập tức với hàng đợi trạng thái. Việc cung cấp tiếp tục ở nền: hỏi điểm cuối trạng thái cho đến khi triển khai là đúng. Khi máy phục vụ sẵn sàng, các chi tiết đăng nhập của nó sẽ được gửi qua thư điện tử cho chủ tài khoản.

Tài khoản của bạn cần phải có một phương thức thanh toán đã lưu. Tùy thuộc vào lịch sử tài khoản của bạn, một khoản tiền tạm thời được giữ trước khi cấp quyền khoảng một tuần của giá gói (ít nhất là 1 USD) có thể được đặt vào thẻ của bạn trước khi máy chủ được tạo.

Cần quyền: servers:create

Các tham số thân yêu cầu

Tham số Kiểu Yêu cầu Mô tả
hostname string Đúng Ít nhất 3 ký tự, chỉ chữ cái, số, dấu gạch ngang và dấu chấm.
location_id integer Đúng ID của vị trí đang hoạt động từ API Locations
plan_uuid string Đúng Uuid của một kế hoạch đang hoạt động từ API Plans
operating_system_version_uuid string Đúng Uuid của mục đang hoạt động trong danh sách phiên bản của hệ điều hành
ssh_key_uuids array Không UUID của khóa SSH từ API khóa SSH để cài đặt trên máy chủ
ssh_key_ids array Không Số ID số nguyên của khóa SSH, thay thế cho ssh_key_uuids. Nếu cả hai đều được gửi, ssh_key_ids sẽ được sử dụng.
ssh_key_uuid, ssh_key_id string, integer Không Tên viết tắt cho một khóa SSH
auth_method string Không mật khẩu, ssh_ key hoặc cả hai. Mặc định là mật khẩu, hoặc cả hai khi cung cấp khóa SSH.

Ví dụ về yêu cầu

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

Ví dụ về câu trả lời

201 Tạo với đối tượng máy chủ đầy đủ được mô tả trong Get Server Details. Địa chỉ và vmid được điền khi triển khai kết thúc.

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

Mã trạng thái phản hồi

201 Máy phục vụ đã được tạo và xếp hàng để triển khai
400 Lỗi xác thực, ví dụ như một vị trí không hoạt động, kế hoạch hoặc phiên bản hệ điều hành
402 Không có phương thức thanh toán trong hồ sơ, hóa đơn chưa thanh toán, hoặc việc cấp phép trước đã bị từ chối
403 Thiếu hoặc không hợp lệ token API, hoặc token không có quyền cần thiết
429 Tài khoản của bạn đã đạt giới hạn tạo máy chủ
LẤY /api/v1/servers/{uuid}/

Lấy thông tin chi tiết máy chủ

Trả lại một máy chủ với vị trí, kế hoạch, hệ điều hành, địa chỉ IP và năm hành động gần đây nhất.

Cần quyền: servers:list

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

Ví dụ về câu trả lời

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

Đánh dấu biểu tượng SVG và danh sách các phiên bản được rút ngắn ở đây.

Các trường phản hồi

Địa điểm Kiểu Mô tả
vmid integer | null Số máy ảo, đặt khi triển khai
location object Đối tượng vị trí, như API vị trí trả lại
plan object Đối tượng kế hoạch, như API kế hoạch trả lại
operating_system, operating_system_version object Hệ điều hành và phiên bản cài đặt, như được trả lại bởi API Hệ điều hành
ipv4_addresses, ipv6_addresses array Một đối tượng cho mỗi địa chỉ với ip, cổng ra, mạng con và rdns (tên máy DNS ngược)
recent_actions array Cho đến năm hành động gần đây nhất: id, action, action_ display, description, user_ email, created_ at

Mã trạng thái phản hồi

200 Đã truy xuất thành công thông tin chi tiết máy chủ
404 Không tìm thấy, hoặc nó thuộc về tài khoản khác
LẤY /api/v1/servers/{uuid}/status/

Nhận trạng thái máy chủ

Một cuộc gọi nhẹ để hỏi sau khi bạn tạo, khởi động hoặc thay đổi kích thước máy chủ.

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
}

Giá trị trạng thái máy chủ

Giá trị Mô tả
queue Một thao tác (triển khai, bật/tắt nguồn, thay đổi kích thước, khôi phục) đang chờ xử lý hoặc đang được thực hiện
deploying Đang được cung cấp. Các máy chủ được tạo từ bảng điều khiển sử dụng trạng thái này; các máy chủ được tạo qua API sẽ ở trong hàng đợi cho đến khi sẵn sàng.
on Chạy
off Tắt điện
error Hành động cuối cùng thất bại. Xem error_ description.
suspended_payment Tạm ngưng vì chưa trả tiền
POST /api/v1/servers/{uuid}/power/

Điều khiển năng lượng máy chủ

Đang xếp hàng một hành động năng lượng. Tình trạng máy chủ thay đổi thành xếp hàng cho đến khi hành động hoàn thành.

Cần quyền: servers:power

Các tham số thân yêu cầu

Tham số Kiểu Yêu cầu Mô tả
action string Đúng start: bật
shutdown: tắt máy một cách thanh lịch, buộc tắt nếu khách không dừng lại
restart: chu kỳ năng lượng cứng (dừng, sau đó bắt đầu)
stop: hiện đang thực hiện chu kỳ tắt điện giống như khởi động lại. Dùng shutdown để tắt máy phục vụ.

Ví dụ về yêu cầu

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

Ví dụ về câu trả lời

{
  "message": "Server restart queued"
}

Mã trạng thái phản hồi

200 Hành động đã được xếp hàng
400 Hành động thiếu hoặc không được hỗ trợ
402 bắt đầu bị từ chối vì tài khoản có hóa đơn chưa thanh toán
404 Không tìm thấy, hoặc nó thuộc về tài khoản khác
POST /api/v1/servers/{uuid}/resize/

Thay đổi kích thước máy chủ

Đổi máy phục vụ sang một kế hoạch hoạt động khác. Kế hoạch mới không thể có ít không gian đĩa hơn kế hoạch hiện tại, và cơ thể yêu cầu phải bao gồm hành động được đặt để thay đổi kích thước. Khả năng của máy phục vụ cho kế hoạch mới được kiểm tra trước khi xếp bất cứ thứ gì vào hàng, vì vậy yêu cầu bị từ chối sẽ để máy phục vụ không thay đổi.

Máy phục vụ sẽ bị tắt khi nó đang được thay đổi kích cỡ và khởi động lại sau đó. Nếu thay đổi kích cỡ thất bại, máy phục vụ sẽ được đặt lại vào kế hoạch trước và khởi động lại nếu nó đang chạy. Không thể hủy sự tăng trưởng đĩa.

Cần quyền: servers:resize

Các tham số thân yêu cầu

Tham số Kiểu Yêu cầu Mô tả
action string Đúng Phải thay đổi kích thước
new_plan_uuid string Đúng Uuid của kế hoạch cần chuyển tớ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"
}

Ví dụ về một sự thay đổi kích thước bị từ chối (409):

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

Mã trạng thái phản hồi

200 Hành động đã được xếp hàng
400 Thiếu hành động hoặc new_plan_uuid, kế hoạch không hợp lệ hoặc không hoạt động, kế hoạch có ít không gian đĩa, hoặc kế hoạch GPU (kế hoạch GPU không thể thay đổi kích thước thông qua API)
404 Không tìm thấy, hoặc nó thuộc về tài khoản khác
409 Một thay đổi kích thước hay lưu trữ đã được tiến hành, hoặc không có đủ dung lượng hypervisor cho kế hoạch mới
503 Không thể kiểm tra dung lượng lúc này. Máy phục vụ không thay đổi, hãy thử lại sau.
POST /api/v1/servers/{uuid}/reset-password/

Đặt lại mật khẩu root

Tạo mật khẩu root mới, trả lại nó trong câu trả lời và xếp thay đổi vào hàng trên máy phục vụ. Mật khẩu mới cũng sẽ được gửi qua thư điện tử cho bạn. Máy phục vụ phải được triển khai. Không cần cơ thể yêu cầu.

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

Mã trạng thái phản hồi

200 Hành động đã được xếp hàng
400 Máy phục vụ chưa được triển khai
404 Không tìm thấy, hoặc nó thuộc về tài khoản khác
LẤY POST /api/v1/servers/{uuid}/rdns/

DNS ngược (PTR)

GET liệt kê tên máy DNS ngược của mỗi địa chỉ IPv4 và IPv6 trên máy phục vụ. POST đặt nó cho một địa chỉ. Gửi tên máy trống sẽ đặt lại địa chỉ thành tên DNS ngược mặc định.

Cần quyền: servers:update

Các tham số thân yêu cầu (POST)

Tham số Kiểu Yêu cầu Mô tả
ip string Đúng Địa chỉ IPv4 hoặc IPv6 được gán cho máy phục vụ này
hostname string Không Tên máy PTR. Để trống để phục hồi mặc định.
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"
}

Trả lời GET:

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

Mã trạng thái phản hồi

400 không có IP, hoặc không thể đặt tên máy
404 Địa chỉ IP không được gán cho máy phục vụ này
POST /api/v1/servers/{uuid}/exec/

Chạy một lệnh trên máy phục vụ

Chạy một lệnh shell bên trong máy phục vụ qua đại diện khách QEMU và đợi nó kết thúc. Máy phục vụ phải được triển khai và chạy, và qemu- guest- agent phải được cài đặt và chạy trong khách.

Cần quyền: servers:exec

Các tham số thân yêu cầu

Tham số Kiểu Yêu cầu Mô tả
command string Đúng Chạy dòng lệnh với /bin/sh -c, tối đa 2000 ký tự
timeout integer Không Giây đợi lệnh, từ 1 đến 300 (mặc định là 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ếu lệnh vẫn đang chạy khi thời gian hết hạn, câu trả lời có timed_out được đặt là true và exit_code được đặt là null.

Mã trạng thái phản hồi

200 Lệnh đã hoàn thành hoặc quá thời gian
400 Máy phục vụ không được triển khai hay không chạy, hoặc tham số không hợp lệ
409 Đặc vụ khách QEMU không chạy trên máy phục vụ
503 Rắc rối kết nối tạm thời. Thử lại sau đầu mục Thử lại sau.
XÓA BỎ /api/v1/servers/{uuid}/

Xóa máy chủ

Đang xếp máy phục vụ vào hàng đợi để xoá vĩnh viễn. Máy phục vụ sẽ biến mất ngay lập tức khỏi danh sách và không thể phục hồi.

Cần quyền: 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"
}

Mã trạng thái phản hồi

202 Chấp nhận: yêu cầu đã được xếp hàng
404 Không tìm thấy, hoặc nó thuộc về tài khoản khác
LẤY POST /api/v1/ssh-keys/

Chìa khóa SSH

Lưu khóa SSH công cộng trong tài khoản của bạn, sau đó truyền uuids của chúng như ssh_key_uuids khi bạn tạo máy chủ. GET liệt kê khóa của bạn (25 trên mỗi trang); POST thêm một.

Cần quyền: ssh-keys:list (GET), ssh-keys:create (POST)

Các tham số thân yêu cầu (POST)

Tham số Kiểu Yêu cầu Mô tả
name string Đúng Tên để nhận dạng khóa, tối đa 100 ký tự
public_key string Đúng Chìa khóa công khai theo định dạng OpenSSH, ví dụ như nội dung của id_ed25519.pub

Ví dụ về yêu cầu

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

Ví dụ về câu trả lời

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

Các trường phản hồi

Địa điểm Kiểu Mô tả
id, uuid integer, string Định danh khóa. Dùng uuid trong ssh_ key_ uuids và trong URL bên dưới; id hoạt động trong ssh_ key_ ids.
fingerprint string Dấu vân tay MD5 của khóa, tính bởi nền tảng
last_used_at datetime | null Khi nào khóa được cài đặt lần cuối trên máy chủ mới

Mã trạng thái phản hồi

201 Khóa đã thêm
400 Thiếu tên, hoặc chìa khóa công khai không phải là một chìa khóa công khai SSH hợp lệ
LẤY XÓA BỎ /api/v1/ssh-keys/{uuid}/

Lấy hoặc xóa khóa SSH

GET trả về một chìa khóa với các trường trên. DELETE lấy nó ra khỏi tài khoản của bạn và trả lại 204 không có cơ thể. Xoá một chìa khóa không lấy nó ra khỏi máy chủ mà nó đã được cài đặt. Chìa khóa không thể sửa đổi: xóa và thêm lại.

Cần quyền: 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"

Bản sao và ảnh chụp

Tạo bản sao lưu hay chụp ảnh cũng là hành động của máy chủ: