Trên trang này
- Tổng quan
- Đặc tính theo dòng VPS
- Nhịp thao tác
- Mã lỗi riêng
- GET /cloudvps/products
- GET /cloudvps/os
- GET /cloudvps/addons
- POST /cloudvps/quote
- POST /cloudvps/buy
- GET /cloudvps/list
- GET /cloudvps/info
- POST /cloudvps/renew
- POST /cloudvps/change-cycle
- POST /cloudvps/upgrade
- POST /cloudvps/auto-renew
- POST /cloudvps/action
- POST /cloudvps/reinstall
- POST /cloudvps/change-ip
- POST /cloudvps/sync
- GET /cloudvps/console
- POST /cloudvps/delete
Tổng quan
Địa chỉ gốc của các endpoint trên trang này:
https://cloudmoon.net/api/v1| Endpoint | Việc | Quyền khoá |
|---|---|---|
GET /cloudvps/products |
Catalog VPS theo tháng: giá từng chu kỳ (cycles = chu kỳ thật sự mua được), features của gói (addon_on_order · upgrade … | Chỉ đọc |
GET /cloudvps/os |
Hệ điều hành. Truyền product_id ⇒ chỉ HĐH máy của gói đó cài được (dùng cho mua + cài lại). | Chỉ đọc |
GET /cloudvps/addons |
Giá addon CPU/RAM/Disk (1 đơn vị / chu kỳ; DISK 1 đơn vị = 10 GB) + trần: limits.order (mua kèm) · limits.upgrade (mỗi … | Chỉ đọc |
POST /cloudvps/quote |
BÁO GIÁ — không trừ tiền, không ghi gì, khoá chỉ đọc gọi được. Mua mới: {product_id, billing_cycle, addon_*}. Đơn có sẵ… | Chỉ đọc |
POST /cloudvps/buy |
Mua VPS theo tháng — BẤT ĐỒNG BỘ: trả HTTP 202 ngay kèm order_code, máy được tạo ở nền; hỏi /cloudvps/info?order_code= … | Toàn quyền |
GET /cloudvps/list |
Mọi VPS theo tháng của tài khoản (không kèm mật khẩu). Mặc định bỏ đơn đã xoá; ?status= active | pending_expired | expi… | Chỉ đọc |
GET /cloudvps/info |
Chi tiết một VPS + features + allowed_actions. Mỗi lần gọi tự hỏi lại trạng thái mới nhất của máy (tối đa 1 lần / 30 gi… | Chỉ đọc |
POST /cloudvps/renew |
Gia hạn một chu kỳ, trừ ví ngay. Giá ĐỘNG = max(giá đã trả, giá niêm yết hiện hành) — báo giá trước bằng /cloudvps/quot… | Toàn quyền |
POST /cloudvps/change-cycle |
Đổi sang chu kỳ DÀI HƠN = gia hạn luôn một kỳ mới, TRỪ TIỀN NGAY (amount = số thật đã trừ). Chỉ đơn features.change_cyc… | Toàn quyền |
POST /cloudvps/upgrade |
Nâng CPU/RAM/Disk máy đang chạy (chỉ đơn features.upgrade). Tiền = giá addon 1 chu kỳ × số chu kỳ còn lại tới hạn ĐÃ TR… | Toàn quyền |
POST /cloudvps/auto-renew |
Bật/tắt tự gia hạn của một VPS (tới hạn hệ thống tự trừ ví, giá động như gia hạn tay). | Toàn quyền |
POST /cloudvps/action |
Bật / tắt / khởi động lại. Gửi lệnh cho máy đã ở sẵn trạng thái đó vẫn THÀNH CÔNG; already: true khi hệ thống đo được m… | Toàn quyền |
POST /cloudvps/reinstall |
Cài lại hệ điều hành — XOÁ TOÀN BỘ DỮ LIỆU. os_id lấy từ /cloudvps/os?product_id=. Một lần / 60 phút / máy. Sau lệnh pr… | Toàn quyền |
POST /cloudvps/change-ip |
Đổi IP công khai, CÓ PHÍ (change_ip_price). Chỉ đơn features.change_ip. Máy mất mạng tới khi hệ thống tự khởi động lại … | Toàn quyền |
POST /cloudvps/sync |
Hỏi lại trạng thái THẬT của máy (IP · trạng thái chạy · máy mới/cài lại đã sẵn sàng chưa) rồi trả đơn đã làm mới. Khoá … | Chỉ đọc |
GET /cloudvps/console |
URL console trên trình duyệt (tên miền trung tính). Khoá TOÀN QUYỀN. Chưa sẵn ⇒ pending: true + retry_after (giây). Chỉ… | Toàn quyền |
POST /cloudvps/delete |
Xoá VPS — không hoàn tiền, không khôi phục. Bắt buộc confirm = đúng order_code. | Toàn quyền |
Giá đại lý: Danh mục, báo giá, mua, đổi chu kỳ và nâng cấp trả về (và trừ ví) giá đã trừ chiết khấu theo cấp đại lý; gia hạn giữ theo giá của đơn lúc mua; đổi IP một mức cho mọi tài khoản. — xem mục Tài khoản đại lý.
Đặc tính theo dòng VPS
Mỗi dòng máy hỗ trợ một bộ thao tác khác nhau. API nói rõ điều đó ở hai chỗ, và máy chủ chặn đúng theo hai chỗ ấy — tài liệu, phản hồi và hành vi không lệch nhau:
features— gói / máy có hỗ trợ việc này không (ở/cloudvps/productsvà mỗi đơn).allowed_actions— việc làm được ngay lúc này trên một đơn cụ thể, đã tính trạng thái đơn (đang khởi tạo, quá hạn, đã nâng cấp…).
| Dòng VPS · khu vực | Mua kèm cấu hình | Nâng cấp sau | Đổi chu kỳ | Đổi IP | Console | Chu kỳ (tháng) |
|---|---|---|---|---|---|---|
| Gold HCM · 6 gói Việt Nam |
1 · 2 · 3 · 6 · 12 · 24 · 36 | |||||
| Xeon · 35 gói (23 còn hàng) Mỹ · Anh · Pháp · Tây Ban Nha · Thụy Sĩ · Hà Lan · Iceland · Thổ Nhĩ Kỳ · Nga |
1 · 3 · 6 · 12 | |||||
| Gold · 55 gói (34 còn hàng) Mỹ · Anh · Pháp · Đức · Tây Ban Nha · Ý · Ba Lan · Hà Lan · Iceland · Thổ Nhĩ Kỳ · Nga |
1 · 3 · 6 · 12 | |||||
| Ryzen · 30 gói (20 còn hàng) Mỹ · Anh · Pháp · Đức · Tây Ban Nha · Ý · Thụy Sĩ · Ba Lan · Hà Lan · Thổ Nhĩ Kỳ |
1 · 3 · 6 · 12 | |||||
| Store · 28 gói (21 còn hàng) Mỹ · Anh · Pháp · Đức · Tây Ban Nha · Ý · Thụy Sĩ · Ba Lan · Hà Lan · Nga |
1 · 3 · 6 · 12 | |||||
| Amd · 45 gói (36 còn hàng) Anh · Pháp · Đức · Tây Ban Nha · Ý · Thụy Sĩ · Ba Lan · Hà Lan · Nga |
1 · 3 · 6 · 12 | |||||
| Xeon 2 · 112 gói (107 còn hàng) Anh · Mỹ · Úc · Canada · Đức · Pháp · Hongkong · Indonesia · Ý · Nhật · Malaysia · Hà Lan · Singapore · Thailand · Hàn Quốc |
1 · 3 · 6 · 12 · 24 · 36 | |||||
| Gpu · 3 gói (2 còn hàng) Pháp · Hà Lan · Iceland |
1 · 3 · 6 · 12 |
Mọi dòng đều bật/tắt/khởi động lại, cài lại hệ điều hành và tự gia hạn được. Bảng dựng trực tiếp từ danh mục /cloudvps/products — gói tạm hết hàng vẫn được tính (in_stock: false, đặt mua nhận 409 OUT_OF_STOCK), gói ngừng bán tự rời khỏi bảng. Muốn thuê máy trả theo giờ, xem API Cloud VPS theo giờ.
Các khoá của features
| Khoá | true nghĩa là |
|---|---|
addon_on_order | Mua kèm CPU / RAM / Disk ngay lúc đặt (addon_cpu · addon_ram · addon_disk, trần ở addon_limits). Chỉ có ở danh mục gói. |
upgrade | Nâng CPU / RAM / Disk cho máy đang chạy (/cloudvps/upgrade). |
change_cycle | Đổi sang chu kỳ dài hơn (/cloudvps/change-cycle). Máy đã nâng cấp thì không đổi được nữa. |
change_ip | Đổi IP công khai, có phí (change_ip_price). |
console | Mở màn hình máy trên trình duyệt (/cloudvps/console). |
reinstall · power · auto_renew | Cài lại hệ điều hành · bật / tắt / khởi động lại · tự gia hạn. |
Giá trị của allowed_actions
start · stop · restart · reinstall · renew · change_cycle · upgrade · change_ip · console · sync · auto_renew · delete — tên nào vắng mặt thì lệnh tương ứng sẽ bị chối (NOT_SUPPORTED, REBUILDING, RENEW_REQUIRED…). Danh sách chưa tính nhịp giữa hai lệnh trên cùng máy (429 COOLDOWN).
Nhịp thao tác trên cùng một máy
Để máy kịp đổi trạng thái, các lệnh trên cùng một máy phải cách lệnh trước một khoảng tối thiểu (cùng luật với web). Các việc trong cùng một dòng dùng chung một đồng hồ. Gửi sớm hơn ⇒ 429 COOLDOWN (header Retry-After cho biết còn bao nhiêu giây); gửi trong lúc máy đang xử lý lệnh khác ⇒ 429 IN_PROGRESS.
| Lệnh | Cách lệnh trước trên cùng máy |
|---|---|
| Bật · Tắt · Khởi động lại · Gia hạn · Đổi chu kỳ | 1 phút |
| Nâng cấp · Xoá | 5 phút |
| Đổi IP | 10 giây |
Làm mới trạng thái (/cloudvps/sync) | 20 giây (tính riêng) |
| Bật/tắt tự gia hạn | 5 giây (tính riêng) |
| Cài lại hệ điều hành | 1 lần / 60 phút |
Mã lỗi riêng
Ngoài các mã lỗi chung của mọi endpoint, trang này còn có các mã dưới đây. Hãy rẽ nhánh theo code.
| HTTP | code | Ý nghĩa | Nên làm gì |
|---|---|---|---|
| 400 | NOT_SUPPORTED |
Gói / máy này không hỗ trợ thao tác được yêu cầu, hoặc đơn thuộc loại khác (VPS theo giờ gọi vào /cloudvps/… và ngược lại). | Đọc features và allowed_actions trước khi gọi; đơn khác loại thì dùng đúng đường mà msg chỉ. |
| 400 | CONFIRM_REQUIRED |
Lệnh xoá thiếu trường xác nhận. | Gửi confirm bằng đúng order_code. |
| 409 | OUT_OF_STOCK |
Gói tạm hết hàng (trong danh mục gói mang in_stock: false). |
Chọn gói khác — thêm ?in_stock=1 vào danh mục để chỉ thấy gói còn hàng. |
| 409 | REBUILDING |
Máy đang khởi tạo / chờ bàn giao, hoặc đang cài lại hệ điều hành. | Hỏi /cloudvps/info tới khi provision_status = ready. |
| 409 | ORDER_EXPIRED |
Đơn đã hết hạn hẳn — tài nguyên đã giải phóng. | Không thao tác được nữa; mua máy mới. |
| 409 | ORDER_DELETED |
Đơn đã bị xoá. | Không thao tác được nữa. |
| 409 | RENEW_REQUIRED |
Dịch vụ đang tạm ngưng vì quá hạn. | Gia hạn (/cloudvps/renew) rồi thao tác lại. |
| 409 | LISTED_ON_MARKETPLACE |
Máy đang được rao bán trên chợ — xoá và đổi chu kỳ bị chặn. | Huỷ tin rao trên web rồi gửi lại. |
| 429 | COOLDOWN |
Một máy vừa nhận lệnh cùng nhóm — cần nghỉ giữa hai lệnh. | Chờ Retry-After giây. |
| 429 | IN_PROGRESS |
Máy đang xử lý một lệnh khác — hoặc lệnh mua vừa nhận chưa tạo xong máy. | Chờ Retry-After giây rồi gửi lại. |
| 503 | SYNC_FAILED |
Chưa lấy được trạng thái máy lúc này. | Thử lại sau ít phút. |
| 503 | CONSOLE_UNAVAILABLE |
Chưa mở được console lúc này. | Thử lại sau ít phút. |
| 503 | MAINTENANCE |
Khu vực của gói / máy này đang bảo trì. | Thử lại sau. |
/cloudvps/products
Chỉ đọcCatalog VPS theo tháng: giá từng chu kỳ (cycles = chu kỳ thật sự mua được), features của gói (addon_on_order · upgrade · change_cycle · change_ip · console · reinstall · power · auto_renew), trần mua kèm, giá đổi IP. Gói tạm hết hàng VẪN có trong danh sách với in_stock: false (đặt mua sẽ nhận 409 OUT_OF_STOCK) — thêm ?in_stock=1 để chỉ lấy gói còn hàng. Lọc ?region=.
GET https://cloudmoon.net/api/v1/cloudvps/products| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
region |
query | không | mã khu vực, vd VN |
in_stock |
query | không | 1 = chỉ gói còn hàng (mặc định: cả gói tạm hết hàng, in_stock: false) |
curl 'https://cloudmoon.net/api/v1/cloudvps/products' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/cloudvps/products",
headers={"X-API-Key": "ak_..."},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/products", {
headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps/products');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"items": [
{
"product_id": 526,
"product_code": "415",
"name": "VN03-1-1-20",
"group_name": "vn03",
"region_code": "VN",
"cpu": "1",
"ram": "1",
"disk": "20",
"ip": "1",
"bandwidth": "",
"traffic": "",
"allow_addon": 1,
"in_stock": true,
"cycles": [
"onemonth",
"threemonth",
"oneyear"
],
"pricing": {
"onemonth": {
"amount": 70000,
"amount_original": 70000,
"billing_cycle": "1 Tháng"
}
},
"features": {
"addon_on_order": true,
"upgrade": true,
"change_cycle": true,
"change_ip": false,
"console": true,
"reinstall": true,
"power": true,
"auto_renew": true
},
"addon_limits": {
"cpu": 4,
"ram": 8,
"disk": 10,
"disk_unit_gb": 10
},
"change_ip_price": null
}
],
"total": 1,
"discount_percent": 0
}
}/cloudvps/os
Chỉ đọcHệ điều hành. Truyền product_id ⇒ chỉ HĐH máy của gói đó cài được (dùng cho mua + cài lại).
GET https://cloudmoon.net/api/v1/cloudvps/os| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
product_id |
query | không | id số trong /cloudvps/products (nên luôn truyền) |
curl 'https://cloudmoon.net/api/v1/cloudvps/os?product_id=526' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/cloudvps/os",
headers={"X-API-Key": "ak_..."},
params={"product_id": "526"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/os?product_id=526", {
headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps/os?product_id=526');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"items": [
{
"os_id": 17,
"os_name": "Linux Ubuntu 22.04",
"os_type": "linux",
"icon": "/frontend/assets/images/ubuntu.png"
}
],
"total": 1
}
}/cloudvps/addons
Chỉ đọcGiá addon CPU/RAM/Disk (1 đơn vị / chu kỳ; DISK 1 đơn vị = 10 GB) + trần: limits.order (mua kèm) · limits.upgrade (mỗi lượt nâng cấp).
GET https://cloudmoon.net/api/v1/cloudvps/addonsKhông có tham số — chỉ cần header X-API-Key.
curl 'https://cloudmoon.net/api/v1/cloudvps/addons' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/cloudvps/addons",
headers={"X-API-Key": "ak_..."},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/addons", {
headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps/addons');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"items": [
{
"type_addon": "addon_cpu",
"name": "CPU",
"pricing": {
"onemonth": {
"amount": 50000,
"amount_original": 50000
}
}
}
],
"discount_percent": 0,
"limits": {
"order": {
"cpu": 4,
"ram": 8,
"disk": 10
},
"upgrade": {
"cpu": 10,
"ram": 10,
"disk": 10
},
"disk_unit_gb": 10
},
"note": "amount = giá 1 đơn vị addon / chu kỳ"
}
}/cloudvps/quote
Chỉ đọcBÁO GIÁ — không trừ tiền, không ghi gì, khoá chỉ đọc gọi được. Mua mới: {product_id, billing_cycle, addon_*}. Đơn có sẵn: {order_code, type: renew | change_cycle | upgrade | change_ip}. Dùng ĐÚNG hàm tính tiền + chốt của lệnh thật. Mua mới kèm available_balance (= số dư − tiền mọi lệnh mua/thuê VPS còn chờ tạo máy) và enough so với số ấy — đúng phép lệnh mua chối 402.
POST https://cloudmoon.net/api/v1/cloudvps/quote| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
product_id |
body | không | mua mới |
billing_cycle |
body | không | mua mới / change_cycle |
order_code |
body | không | đơn có sẵn |
type |
body | không | renew | change_cycle | upgrade | change_ip |
addon_cpu |
body | không | số nguyên ≥ 0 |
addon_ram |
body | không | — |
addon_disk |
body | không | đơn vị 10 GB |
Chạy thử Lệnh đọc — gửi kèm X-Sandbox: 1 vẫn chạy như thường (không đổi gì). Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu.
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/quote' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX","type":"renew"}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/quote",
headers={"X-API-Key": "ak_..."},
json={"order_code": "090926CLOUDQCLIENFZGKOX", "type": "renew"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/quote", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX", type: "renew" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/quote', ['order_code' => '090926CLOUDQCLIENFZGKOX', 'type' => 'renew']);
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX",
"type": "renew"
}{
"status": "success",
"msg": "OK",
"data": {
"type": "renew",
"amount": 70000,
"currency": "VND",
"balance": 954112,
"enough": true,
"order_code": "090926CLOUDQCLIENFZGKOX",
"billing_cycle": "onemonth",
"time_expire_moon": "2026-10-08",
"new_time_expire_moon": "2026-11-08"
}
}/cloudvps/buy
Toàn quyềnMua VPS theo tháng — BẤT ĐỒNG BỘ: trả HTTP 202 ngay kèm order_code, máy được tạo ở nền; hỏi /cloudvps/info?order_code= tới khi provision_status = ready (failed kèm charged: false = chưa trừ tiền). Kiểm đủ TRƯỚC khi nhận lệnh: gói · còn hàng (gói in_stock: false ⇒ 409 OUT_OF_STOCK) · chu kỳ · HĐH · addon · số dư KHẢ DỤNG (= số dư − giá các đơn đang chờ tạo máy). Trần: 3 đơn chờ, 10 lượt mua/giờ — GỘP với lệnh thuê VPS theo giờ (429). Đơn mua qua API không tính hoa hồng giới thiệu. Thử miễn phí: header X-Sandbox: 1.
POST https://cloudmoon.net/api/v1/cloudvps/buy| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
Idempotency-Key |
header | không | KHUYÊN DÙNG — gửi lại cùng khoá ⇒ đúng order_code cũ, không mua hai lần |
product_id |
body | có | id số trong /cloudvps/products |
os_id |
body | có | từ /cloudvps/os?product_id= |
billing_cycle |
body | có | một trong cycles của gói |
addon_cpu |
body | không | chỉ gói features.addon_on_order, trần addon_limits |
addon_ram |
body | không | GB |
addon_disk |
body | không | đơn vị 10 GB |
auto_renew |
body | không | true/false, mặc định true |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Kịch bản lỗi (X-Sandbox-Scenario): INSUFFICIENT_BALANCE (402) · OUT_OF_STOCK (409) · TOO_MANY_PENDING (429) · RATE_LIMITED (429) · BUSY (429) · SERVICE_DISABLED (503) · MAINTENANCE (503) · FAILED (500) · PROVISION_FAILED (lệnh vẫn nhận, info về sau báo failed).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/buy' \
-H 'X-API-Key: ak_...' \
-H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
-H 'Content-Type: application/json' \
-d '{"product_id":526,"os_id":17,"billing_cycle":"onemonth","auto_renew":false}'import uuid
import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/buy",
headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
json={"product_id": 526, "os_id": 17, "billing_cycle": "onemonth", "auto_renew": False},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
import { randomUUID } from "node:crypto";
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/buy", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({ product_id: 526, os_id: 17, billing_cycle: "onemonth", auto_renew: false }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/buy', ['product_id' => 526, 'os_id' => 17, 'billing_cycle' => 'onemonth', 'auto_renew' => false], bin2hex(random_bytes(16)));
print_r($kq);{
"product_id": 526,
"os_id": 17,
"billing_cycle": "onemonth",
"auto_renew": false
}{
"status": "success",
"msg": "Đã nhận lệnh mua — máy đang được tạo",
"data": {
"order_code": "071026CLOUDABCDEFGHIJKL",
"status": "queued",
"provision_status": "queued",
"product_id": 526,
"billing_cycle": "onemonth",
"os_id": 17,
"addons": {
"cpu": 0,
"ram": 0,
"disk": 0
},
"price_buy": 66500,
"auto_renew": false,
"note": "Máy đang được tạo ở nền — hỏi GET /cloudvps/info?order_code= để biết khi nào sẵn sàng"
}
}/cloudvps/list
Chỉ đọcMọi VPS theo tháng của tài khoản (không kèm mật khẩu). Mặc định bỏ đơn đã xoá; ?status= active | pending_expired | expired | deleted. Phân trang.
GET https://cloudmoon.net/api/v1/cloudvps/list| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
status |
query | không | Lọc theo trạng thái đơn |
limit |
query | không | 1-200, mặc định 50 |
page |
query | không | Trang, tính từ 1 |
curl 'https://cloudmoon.net/api/v1/cloudvps/list' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/cloudvps/list",
headers={"X-API-Key": "ak_..."},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/list", {
headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps/list');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"items": [
{
"order_code": "090926CLOUDQCLIENFZGKOX",
"name": "VN03-1-1-20",
"product_id": "415",
"ip": "103.95.x.x",
"cpu": "1",
"ram": "1",
"disk": "20",
"os_id": 3,
"os_name": "Linux Ubuntu 22.04",
"vps_status": "running",
"provision_status": "ready",
"allow_addon": 1,
"allow_change_billing_cycle": 1,
"price_buy": 70000,
"price_renew": 70000,
"billing_cycle": "onemonth",
"renew_auto": "off",
"order_status": "active",
"market_status": 0,
"time_buy": "2026-09-09",
"time_expire_moon": "2026-10-08",
"plan": {
"product_id": 526,
"name": "VN03-1-1-20",
"region": "VN"
},
"features": {
"upgrade": true,
"change_cycle": true,
"change_ip": false,
"console": true,
"reinstall": true,
"power": true,
"auto_renew": true
},
"allowed_actions": [
"start",
"stop",
"restart",
"reinstall",
"renew",
"change_cycle",
"upgrade",
"console",
"sync",
"auto_renew",
"delete"
],
"upgrade_limits": {
"cpu": 10,
"ram": 10,
"disk": 10,
"disk_unit_gb": 10
}
}
],
"page": 1,
"limit": 50,
"total": 1
}
}/cloudvps/info
Chỉ đọcChi tiết một VPS + features + allowed_actions. Mỗi lần gọi tự hỏi lại trạng thái mới nhất của máy (tối đa 1 lần / 30 giây / máy — trong khoảng ấy trả số vừa lấy); /list thì không. username/password/port CHỈ kèm khi khoá TOÀN QUYỀN và provision_status = ready (đang khởi tạo / cài lại HĐH thì chưa có).
GET https://cloudmoon.net/api/v1/cloudvps/info| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
order_code |
query | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
Chạy thử Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu.
curl 'https://cloudmoon.net/api/v1/cloudvps/info?order_code=090926CLOUDQCLIENFZGKOX' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/cloudvps/info",
headers={"X-API-Key": "ak_..."},
params={"order_code": "090926CLOUDQCLIENFZGKOX"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/info?order_code=090926CLOUDQCLIENFZGKOX", {
headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps/info?order_code=090926CLOUDQCLIENFZGKOX');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"ip": "103.95.x.x",
"os_name": "Linux Ubuntu 22.04",
"vps_status": "running",
"provision_status": "ready",
"price_renew": 70000,
"order_status": "active",
"time_expire_moon": "2026-10-08",
"features": {
"upgrade": true,
"change_cycle": true,
"change_ip": false,
"console": true,
"reinstall": true,
"power": true,
"auto_renew": true
},
"allowed_actions": [
"start",
"stop",
"restart",
"reinstall",
"renew",
"change_cycle",
"upgrade",
"console",
"sync",
"auto_renew",
"delete"
],
"username": "root",
"password": "S3cret-pass",
"port": 22,
"dang_cai_lai": false,
"credentials_note": null
}
}/cloudvps/renew
Toàn quyềnGia hạn một chu kỳ, trừ ví ngay. Giá ĐỘNG = max(giá đã trả, giá niêm yết hiện hành) — báo giá trước bằng /cloudvps/quote. Đơn hết hạn hẳn (expired) / đã xoá bị chối.
POST https://cloudmoon.net/api/v1/cloudvps/renew| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
Idempotency-Key |
header | không | chống trừ tiền hai lần khi gửi lại |
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): INSUFFICIENT_BALANCE (402) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · IDEMPOTENCY_PENDING (409) · COOLDOWN (429) · IN_PROGRESS (429) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/renew' \
-H 'X-API-Key: ak_...' \
-H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX"}'import uuid
import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/renew",
headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
json={"order_code": "090926CLOUDQCLIENFZGKOX"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
import { randomUUID } from "node:crypto";
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/renew", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/renew', ['order_code' => '090926CLOUDQCLIENFZGKOX'], bin2hex(random_bytes(16)));
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX"
}{
"status": "success",
"msg": "Gia hạn VPS thành công",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"amount": 70000,
"billing_cycle": "onemonth",
"time_expire_moon": "2026-11-08"
}
}/cloudvps/change-cycle
Toàn quyềnĐổi sang chu kỳ DÀI HƠN = gia hạn luôn một kỳ mới, TRỪ TIỀN NGAY (amount = số thật đã trừ). Chỉ đơn features.change_cycle (chưa từng nâng cấp).
POST https://cloudmoon.net/api/v1/cloudvps/change-cycle| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
Idempotency-Key |
header | không | Chuỗi ngẫu nhiên duy nhất cho mỗi lệnh — gửi lại cùng giá trị không trừ tiền lần hai |
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
billing_cycle |
body | có | chu kỳ trong cycles của gói, dài hơn chu kỳ hiện tại |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): INSUFFICIENT_BALANCE (402) · NOT_SUPPORTED (400) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · LISTED_ON_MARKETPLACE (409) · IDEMPOTENCY_PENDING (409) · COOLDOWN (429) · IN_PROGRESS (429) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/change-cycle' \
-H 'X-API-Key: ak_...' \
-H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX","billing_cycle":"threemonth"}'import uuid
import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/change-cycle",
headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
json={"order_code": "090926CLOUDQCLIENFZGKOX", "billing_cycle": "threemonth"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
import { randomUUID } from "node:crypto";
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/change-cycle", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX", billing_cycle: "threemonth" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/change-cycle', ['order_code' => '090926CLOUDQCLIENFZGKOX', 'billing_cycle' => 'threemonth'], bin2hex(random_bytes(16)));
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX",
"billing_cycle": "threemonth"
}{
"status": "success",
"msg": "Đổi chu kỳ và gia hạn thành công",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"billing_cycle": "threemonth",
"amount": 200000,
"time_expire_moon": "2027-01-08"
}
}/cloudvps/upgrade
Toàn quyềnNâng CPU/RAM/Disk máy đang chạy (chỉ đơn features.upgrade). Tiền = giá addon 1 chu kỳ × số chu kỳ còn lại tới hạn ĐÃ TRẢ (đếm theo tháng lịch, tối thiểu 1). Lỗi FAILED sau khi trừ tiền: đừng gửi lại, liên hệ hỗ trợ.
POST https://cloudmoon.net/api/v1/cloudvps/upgrade| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
Idempotency-Key |
header | không | Chuỗi ngẫu nhiên duy nhất cho mỗi lệnh — gửi lại cùng giá trị không trừ tiền lần hai |
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
addon_cpu |
body | không | số nguyên ≥ 0, tối đa 10/lượt |
addon_ram |
body | không | GB |
addon_disk |
body | không | đơn vị 10 GB |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): INSUFFICIENT_BALANCE (402) · NOT_SUPPORTED (400) · REBUILDING (409) · RENEW_REQUIRED (409) · ORDER_EXPIRED (409) · IDEMPOTENCY_PENDING (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · MAINTENANCE (503) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/upgrade' \
-H 'X-API-Key: ak_...' \
-H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX","addon_ram":1}'import uuid
import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/upgrade",
headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
json={"order_code": "090926CLOUDQCLIENFZGKOX", "addon_ram": 1},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
import { randomUUID } from "node:crypto";
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/upgrade", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX", addon_ram: 1 }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/upgrade', ['order_code' => '090926CLOUDQCLIENFZGKOX', 'addon_ram' => 1], bin2hex(random_bytes(16)));
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX",
"addon_ram": 1
}{
"status": "success",
"msg": "Nâng cấp VPS thành công",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"cpu": 0,
"ram": 1,
"disk": 0,
"amount": 50000,
"total_charged": 50000,
"cycles_charged": 1
}
}/cloudvps/auto-renew
Toàn quyềnBật/tắt tự gia hạn của một VPS (tới hạn hệ thống tự trừ ví, giá động như gia hạn tay).
POST https://cloudmoon.net/api/v1/cloudvps/auto-renew| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
enabled |
body | có | true | false (boolean JSON) |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): NOT_SUPPORTED (400) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · COOLDOWN (429) · IN_PROGRESS (429) · SERVER_ERROR (500).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/auto-renew' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX","enabled":false}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/auto-renew",
headers={"X-API-Key": "ak_..."},
json={"order_code": "090926CLOUDQCLIENFZGKOX", "enabled": False},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/auto-renew", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX", enabled: false }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/auto-renew', ['order_code' => '090926CLOUDQCLIENFZGKOX', 'enabled' => false]);
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX",
"enabled": false
}{
"status": "success",
"msg": "Đã tắt tự gia hạn",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"renew_auto": "off"
}
}/cloudvps/action
Toàn quyềnBật / tắt / khởi động lại. Gửi lệnh cho máy đã ở sẵn trạng thái đó vẫn THÀNH CÔNG; already: true khi hệ thống đo được máy đã ở sẵn trạng thái ấy (không phải lượt nào cũng đo được) — muốn biết máy đang chạy hay tắt thì đọc vps_status ở /info. Nhịp: 60 giây/máy.
POST https://cloudmoon.net/api/v1/cloudvps/action| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
action |
body | có | start | stop | restart |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): NOT_SUPPORTED (400) · REBUILDING (409) · RENEW_REQUIRED (409) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · MAINTENANCE (503) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/action' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX","action":"restart"}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/action",
headers={"X-API-Key": "ak_..."},
json={"order_code": "090926CLOUDQCLIENFZGKOX", "action": "restart"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/action", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX", action: "restart" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/action', ['order_code' => '090926CLOUDQCLIENFZGKOX', 'action' => 'restart']);
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX",
"action": "restart"
}{
"status": "success",
"msg": "Khởi động lại VPS thành công",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"action": "restart",
"already": false
}
}/cloudvps/reinstall
Toàn quyềnCài lại hệ điều hành — XOÁ TOÀN BỘ DỮ LIỆU. os_id lấy từ /cloudvps/os?product_id=. Một lần / 60 phút / máy. Sau lệnh provision_status = rebuilding tới khi máy mới sống.
POST https://cloudmoon.net/api/v1/cloudvps/reinstall| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
os_id |
body | có | — |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): REBUILDING (409) · RENEW_REQUIRED (409) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · MAINTENANCE (503) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/reinstall' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX","os_id":17}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/reinstall",
headers={"X-API-Key": "ak_..."},
json={"order_code": "090926CLOUDQCLIENFZGKOX", "os_id": 17},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/reinstall", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX", os_id: 17 }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/reinstall', ['order_code' => '090926CLOUDQCLIENFZGKOX', 'os_id' => 17]);
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX",
"os_id": 17
}{
"status": "success",
"msg": "Đang cài lại hệ điều hành — hỏi /cloudvps/info để biết khi nào xong",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"os_id": 17,
"os_name": "Linux Ubuntu 22.04",
"provision_status": "rebuilding"
}
}/cloudvps/change-ip
Toàn quyềnĐổi IP công khai, CÓ PHÍ (change_ip_price). Chỉ đơn features.change_ip. Máy mất mạng tới khi hệ thống tự khởi động lại (~5-7 phút) — đừng tự restart ngay.
POST https://cloudmoon.net/api/v1/cloudvps/change-ip| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
Idempotency-Key |
header | không | Chuỗi ngẫu nhiên duy nhất cho mỗi lệnh — gửi lại cùng giá trị không trừ tiền lần hai |
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): INSUFFICIENT_BALANCE (402) · NOT_SUPPORTED (400) · REBUILDING (409) · RENEW_REQUIRED (409) · ORDER_EXPIRED (409) · IDEMPOTENCY_PENDING (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · MAINTENANCE (503) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/change-ip' \
-H 'X-API-Key: ak_...' \
-H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDBPTWQAXHVFOE"}'import uuid
import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/change-ip",
headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
json={"order_code": "090926CLOUDBPTWQAXHVFOE"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
import { randomUUID } from "node:crypto";
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/change-ip", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({ order_code: "090926CLOUDBPTWQAXHVFOE" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/change-ip', ['order_code' => '090926CLOUDBPTWQAXHVFOE'], bin2hex(random_bytes(16)));
print_r($kq);{
"order_code": "090926CLOUDBPTWQAXHVFOE"
}{
"status": "success",
"msg": "Đổi IP thành công. IP mới: 103.77.x.x. Hệ thống đang khởi động lại VPS, máy sẽ vào được sau khoảng 5-7 phút.",
"data": {
"order_code": "090926CLOUDBPTWQAXHVFOE",
"ip_old": "103.77.x.1",
"ip_new": "103.77.x.2",
"amount": 20000,
"restarting": true
}
}/cloudvps/sync
Chỉ đọcHỏi lại trạng thái THẬT của máy (IP · trạng thái chạy · máy mới/cài lại đã sẵn sàng chưa) rồi trả đơn đã làm mới. Khoá chỉ đọc gọi được. Nhịp: 20 giây/máy.
POST https://cloudmoon.net/api/v1/cloudvps/sync| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): ORDER_DELETED (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · MAINTENANCE (503) · SYNC_FAILED (503).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/sync' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX"}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/sync",
headers={"X-API-Key": "ak_..."},
json={"order_code": "090926CLOUDQCLIENFZGKOX"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/sync", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/sync', ['order_code' => '090926CLOUDQCLIENFZGKOX']);
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX"
}{
"status": "success",
"msg": "Đã cập nhật trạng thái mới nhất",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"vps_status": "running",
"provision_status": "ready",
"allowed_actions": [
"start",
"stop",
"restart"
]
}
}/cloudvps/console
Toàn quyềnURL console trên trình duyệt (tên miền trung tính). Khoá TOÀN QUYỀN. Chưa sẵn ⇒ pending: true + retry_after (giây). Chỉ đơn features.console.
GET https://cloudmoon.net/api/v1/cloudvps/console| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
order_code |
query | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): NOT_SUPPORTED (400) · REBUILDING (409) · RENEW_REQUIRED (409) · COOLDOWN (429) · BUSY (429) · MAINTENANCE (503) · CONSOLE_UNAVAILABLE (503).
curl 'https://cloudmoon.net/api/v1/cloudvps/console?order_code=090926CLOUDQCLIENFZGKOX' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/cloudvps/console",
headers={"X-API-Key": "ak_..."},
params={"order_code": "090926CLOUDQCLIENFZGKOX"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/console?order_code=090926CLOUDQCLIENFZGKOX", {
headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps/console?order_code=090926CLOUDQCLIENFZGKOX');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX",
"console_url": "https://console.systemcloudvps.com/vnc.html?token=...",
"pending": false,
"retry_after": null
}
}/cloudvps/delete
Toàn quyềnXoá VPS — không hoàn tiền, không khôi phục. Bắt buộc confirm = đúng order_code.
POST https://cloudmoon.net/api/v1/cloudvps/delete| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
order_code |
body | có | Mã đơn (order_code) — lấy từ lệnh mua hoặc /list |
confirm |
body | có | gõ lại đúng order_code |
Chạy thử Gửi kèm X-Sandbox: 1: máy chủ kiểm như lượt thật rồi trả kết quả mô phỏng cùng khuôn — không trừ tiền, không đổi gì. Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu. Kịch bản lỗi (X-Sandbox-Scenario): REBUILDING (409) · ORDER_DELETED (409) · LISTED_ON_MARKETPLACE (409) · COOLDOWN (429) · IN_PROGRESS (429) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps/delete' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"090926CLOUDQCLIENFZGKOX","confirm":"090926CLOUDQCLIENFZGKOX"}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/cloudvps/delete",
headers={"X-API-Key": "ak_..."},
json={"order_code": "090926CLOUDQCLIENFZGKOX", "confirm": "090926CLOUDQCLIENFZGKOX"},
timeout=30,
)
print(r.status_code, r.json())// Node.js 18+ — lưu thành tệp .mjs
const res = await fetch("https://cloudmoon.net/api/v1/cloudvps/delete", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "090926CLOUDQCLIENFZGKOX", confirm: "090926CLOUDQCLIENFZGKOX" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps/delete', ['order_code' => '090926CLOUDQCLIENFZGKOX', 'confirm' => '090926CLOUDQCLIENFZGKOX']);
print_r($kq);{
"order_code": "090926CLOUDQCLIENFZGKOX",
"confirm": "090926CLOUDQCLIENFZGKOX"
}{
"status": "success",
"msg": "Đã xóa VPS",
"data": {
"order_code": "090926CLOUDQCLIENFZGKOX"
}
}