Tham chiếu API

API Cloud VPS theo giờ

VPS tính tiền THEO GIỜ: trả trước từng giờ từ số dư, không chu kỳ, không gia hạn — xoá máy là dừng tính tiền. Danh mục gói (giá Linux/Windows mỗi giờ, GPU, hạn mức lưu lượng), báo giá, thuê máy bất đồng bộ (HTTP 202 rồi hỏi /cloudvps-hourly/info), bật/tắt/khởi động lại, cài lại hệ điều hành, console, trần chi tiêu tự xoá máy, sổ trừ tiền từng giờ, xoá. Giá như nhau với mọi tài khoản. Giao dịch qua API không tính hoa hồng giới thiệu.

Trên trang này
  1. Tổng quan
  2. Tính tiền theo giờ
  3. Hạn mức lưu lượng
  4. Đặc tính theo dòng
  5. Luật riêng của VPS theo giờ
  6. Nhịp thao tác
  7. Mã lỗi riêng
  8. GET /cloudvps-hourly/products
  9. GET /cloudvps-hourly/os
  10. POST /cloudvps-hourly/quote
  11. POST /cloudvps-hourly/buy
  12. GET /cloudvps-hourly/list
  13. GET /cloudvps-hourly/info
  14. GET /cloudvps-hourly/charges
  15. POST /cloudvps-hourly/action
  16. POST /cloudvps-hourly/reinstall
  17. POST /cloudvps-hourly/limits
  18. POST /cloudvps-hourly/sync
  19. GET /cloudvps-hourly/console
  20. POST /cloudvps-hourly/delete

Tổng quan

Địa chỉ gốc của các endpoint trên trang này:

Base URL
https://cloudmoon.net/api/v1
EndpointViệcQuyền khoá
GET /cloudvps-hourly/products Danh mục VPS theo giờ: giá MỖI GIỜ cho Linux (price_hour) và Windows (price_hour_windows, đã gồm bản quyền; null = gói … Chỉ đọc
GET /cloudvps-hourly/os Hệ điều hành: ?product_id= ⇒ HĐH thuê được cho gói, kèm price_hour theo HĐH · ?order_code= ⇒ HĐH cài lại được cho máy đ… Chỉ đọc
POST /cloudvps-hourly/quote BÁO GIÁ thuê một máy — không trừ tiền, khoá chỉ đọc gọi được. CÙNG bộ kiểm với lệnh thuê: báo giá được thì lệnh thuê ch… Chỉ đọc
POST /cloudvps-hourly/buy Thuê một VPS theo giờ — BẤT ĐỒNG BỘ: trả HTTP 202 kèm order_code, máy được tạo ở nền; hỏi /cloudvps-hourly/info?order_c… Toàn quyền
GET /cloudvps-hourly/list VPS theo giờ của tài khoản (không kèm mật khẩu). Mặc định máy đang chạy; ?status=deleted xem máy đã xoá (kèm deleted_re… Chỉ đọc
GET /cloudvps-hourly/info Chi tiết một VPS theo giờ (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): billing (… Chỉ đọc
GET /cloudvps-hourly/charges Sổ trừ tiền TỪNG GIỜ của một máy, mới nhất trước (result: paid · insufficient_balance · pending · refunded — hoàn vì má… Chỉ đọc
POST /cloudvps-hourly/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-hourly/reinstall Cài lại hệ điều hành — XOÁ TOÀN BỘ DỮ LIỆU. os_id lấy từ /cloudvps-hourly/os?order_code=. Một lần / 10 phút / máy. Sau … Toàn quyền
POST /cloudvps-hourly/limits Đặt TRẦN CHI TIÊU cho một máy: max_amount (tổng tiền) và/hoặc max_hours (số giờ), 0 = không giới hạn. Trần nào chạm trư… Toàn quyền
POST /cloudvps-hourly/sync Hỏi lại trạng thái THẬT của máy (IP · chạy/tắt · 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… Chỉ đọc
GET /cloudvps-hourly/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-hourly/delete XOÁ máy = DỪNG TÍNH TIỀN ngay (không hoàn phần giờ đã trả, không khôi phục). Bắt buộc confirm = đúng order_code. Đi đượ… Toàn quyền

Giá đại lý: Giá theo giờ như nhau với mọi tài khoản — không có chiết khấu đại lý. — xem mục Tài khoản đại lý.

Tính tiền theo giờ

VPS theo giờ không có chu kỳ hay ngày hết hạn: máy trả trước từng giờ từ số dư ví của tài khoản, giá như nhau với mọi tài khoản.

  • Giờ đầu bị trừ lúc máy bắt đầu được tạo — lệnh thuê còn queued thì chưa trừ đồng nào (xem trường charged ở mục Lệnh mua & theo dõi). Mỗi giờ tiếp theo hệ thống tự trừ đúng mốc billing.paid_until.
  • Tắt máy vẫn tính tiền — máy vẫn giữ tài nguyên. Muốn dừng tính tiền thì xoá máy (POST /cloudvps-hourly/delete): có hiệu lực ngay, kể cả lúc máy đang khởi tạo, và không phải chờ nhịp.
  • Ví không đủ trả giờ kế tiếp ⇒ máy bị XOÁ, dữ liệu trên máy mất và không khôi phục được. Hệ thống gửi báo khi ví chỉ còn đủ dưới 3 giờ cho mọi máy theo giờ đang chạy; /cloudvps-hourly/info trả khối wallet (balance · hourly_total · hours_affordable) để bạn tự canh.
  • Trần chi tiêu — max_amount (tổng tiền) và/hoặc max_hours (số giờ), đặt lúc thuê hoặc sau đó bằng /cloudvps-hourly/limits; 0 là không giới hạn. Chạm trần nào trước thì máy bị xoá theo trần đó — không bao giờ thu vượt trần.
  • Máy không khởi tạo được (lỗi phía hạ tầng): hệ thống tự huỷ máy và hoàn toàn bộ số đã trừ vào số dư — deleted_reason: provisioning_failed, các dòng ở /cloudvps-hourly/charges mang refunded, billing.hours_paid và total_paid về 0.

Khối billing của mỗi máy

price_hour giá mỗi giờ · hours_paid / total_paid số giờ và số tiền đã trả (ròng — đã trừ phần hoàn) · paid_until đã trả tới · seconds_left số giây tới lượt trừ kế · status (running · deleting = đã ngừng tính tiền, đang gỡ máy · deleted) · max_amount · max_hours · started_at · stopped_at.

Vì sao máy bị xoá — deleted_reason

Giá trịNghĩa
customerBạn xoá (qua API hoặc trên web).
insufficient_balanceVí không đủ trả giờ kế tiếp.
max_amount · max_hoursChạm trần chi tiêu bạn đã đặt.
provisioning_failedMáy không khởi tạo được — đã hoàn toàn bộ.
bandwidth(chỉ ở đơn cũ) Xoá vì vượt hạn mức lưu lượng. Nay vượt hạn mức là tạm dừng, không xoá — xem mục dưới.
systemLý do khác phía hệ thống — liên hệ hỗ trợ kèm order_code.

Hạn mức lưu lượng

Một số dòng máy có hạn mức lưu lượng đi ra — gói mang bandwidth_limit khác null ở danh mục ({base_gb, gb_per_hour}); gói null không giới hạn.

  • Hạn mức ≈ 20 GB nền + gb_per_hour × số giờ đã trả. Mỗi giờ trả thêm cộng thêm hạn mức. Chỉ tính chiều đi ra; chiều vào không tính. gb_per_hour ở danh mục đã làm tròn tới 0,1 GB — hạn mức chính xác của từng máy là bandwidth.limit_mb (sau giờ kế tiếp: next_limit_mb) ở /cloudvps-hourly/info.
  • Hệ thống đo định kỳ (khoảng 10 phút một lần). Vượt hạn mức ⇒ máy bị tạm dừng (tắt), không bị xoá — vẫn tính tiền mỗi giờ như máy đang tắt.
  • Máy tự bật lại khi hạn mức đã vượt lượng đã dùng và đã qua ít nhất một giờ kể từ lúc dừng. Trong lúc tạm dừng: bật · khởi động lại · cài lại nhận 409 BANDWIDTH_PAUSED; tắt và xoá vẫn làm được.
  • /cloudvps-hourly/info trả khối bandwidth: used_out_mb · limit_mb · next_limit_mb (hạn mức sau giờ kế tiếp) · checked_at · paused · resume_at (mốc sớm nhất máy tự bật lại).

Đặc tính theo dòng

Mỗi dòng máy hỗ trợ một bộ việc khác nhau — API ghi ở features (power · reinstall · console) của gói / máy, còn allowed_actions cho biết việc làm được ngay lúc này trên một máy cụ thể.

Dòng · khu vựcConsoleWindowsGPUHạn mức lưu lượng
Xeon Hour · 9 gói
Việt Nam
Xeon Hour · 168 gói (155 còn hàng)
Mỹ · Anh · Pháp · Đức · Tây Ban Nha · Ba Lan · Thụy Điển · Hà Lan · Canada · Mexico · Brazil · Chile · Úc · Singapore · Nhật · Hàn Quốc · Ấn Độ · Israel · Nam Phi
gói đủ RAM
GPU Hour · 14 gói (0 còn hàng)
Mỹ · Đức · Singapore · Nhật · Ấn Độ
NVIDIA A16 · NVIDIA A40

Mọi dòng đều bật/tắt/khởi động lại, cài lại hệ điều hành, đặt trần chi tiêu và xoá được. Windows có giá riêng (price_hour_windows, đã gồm bản quyền) và có thể đòi gói đủ RAM. Bảng dựng trực tiếp từ danh mục /cloudvps-hourly/products — gói tạm hết hàng vẫn được tính (in_stock: false, thuê nhận 409 OUT_OF_STOCK).

Giá trị của allowed_actions

start · stop · restart · reinstall · console · sync · limits · delete — tên nào vắng mặt thì lệnh tương ứng sẽ bị chối (NOT_SUPPORTED, REBUILDING, BANDWIDTH_PAUSED…). Máy đang khởi tạo chỉ còn sync · limits · delete — đặt trần chi tiêu được ngay từ lúc này. Ngay sau lệnh thuê, lúc máy chưa có, lệnh theo order_code (trừ info) nhận 429 IN_PROGRESS — chờ Retry-After rồi gửi lại.

Luật riêng của VPS theo giờ

  • Không có chu kỳ, gia hạn, tự gia hạn, đổi chu kỳ, nâng cấp, đổi IP hay chuyển quyền — các việc ấy chỉ có ở VPS theo tháng. Đơn theo giờ gọi vào /cloudvps/… (và ngược lại) ⇒ 400 NOT_SUPPORTED kèm đường đúng.
  • Cài lại hệ điều hành được nhiều hơn VPS tháng (xem mục Nhịp thao tác) vì máy theo giờ thường dùng để thử. Gói có giá Windows riêng chỉ cài lại được hệ điều hành cùng họ với máy (Linux ↔ Linux, Windows ↔ Windows) — danh sách đúng ở GET /cloudvps-hourly/os?order_code=….
  • Lệnh thuê không tự chống bấm đúp theo thời gian: hai lệnh giống hệt gửi liền nhau là hai máy. Chống gửi lặp bằng Idempotency-Key.
  • Trần lệnh thuê: tối đa 3 lệnh đang chờ tạo máy và 10 lượt mỗi giờ, tính gộp với lệnh mua Cloud VPS theo tháng (429 TOO_MANY_PENDING · 429 RATE_LIMITED); số dư khả dụng trừ tiền các lệnh còn chờ.
  • Máy đã xoá không khôi phục được; thông tin đơn vẫn đọc được ở /cloudvps-hourly/info và /cloudvps-hourly/list?status=deleted.

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ệnhCách lệnh trước trên cùng máy
Bật · Tắt · Khởi động lại1 phút
Làm mới trạng thái (/cloudvps-hourly/sync)20 giây (tính riêng)
Cài lại hệ điều hành1 lần / 10 phút
Xoá · đặt trần chi tiêukhông phải chờ (chỉ một lệnh mỗi lúc trên cùng máy (429 IN_PROGRESS))

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.

HTTPcodeÝ nghĩaNê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-hourly/info tới khi provision_status = ready.
409 BANDWIDTH_PAUSED Máy đang tạm dừng vì đã dùng hết hạn mức lưu lượng đi ra — bật, khởi động lại, cài lại đều bị chặn. Chờ tới bandwidth.resume_at (máy tự bật lại); tắt và xoá vẫn làm được.
409 ORDER_DELETED Đơn đã bị xoá. Không thao tác được nữa.
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.
GET

/cloudvps-hourly/products

Chỉ đọc

Danh mục VPS theo giờ: giá MỖI GIỜ cho Linux (price_hour) và Windows (price_hour_windows, đã gồm bản quyền; null = gói không bán Windows), GPU, thành phố, hạn mức lưu lượng đi ra (bandwidth_limit; null = không giới hạn), features. Gói tạm hết hàng vẫn có trong danh sách với in_stock: false. Lọc ?region= · ?in_stock=1.

GET https://cloudmoon.net/api/v1/cloudvps-hourly/products
Tham sốVị tríBắt buộcMô tả
region query không mã khu vực, vd VN · SG · US
in_stock query không 1 = chỉ gói còn hàng
Yêu cầu
curl 'https://cloudmoon.net/api/v1/cloudvps-hourly/products' \
  -H 'X-API-Key: ak_...'
Yêu cầu
import requests

r = requests.get(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/products",
    headers={"X-API-Key": "ak_..."},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/products", {
  headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps-hourly/products');
print_r($kq);
Phản hồi
{
    "status": "success",
    "msg": "OK",
    "data": {
        "items": [
            {
                "product_id": 544,
                "product_code": "433",
                "name": "VN11-1-1-20",
                "group_name": "vn11",
                "region_code": "vn",
                "city": "Hà Nội",
                "cpu": "1",
                "ram": "1",
                "disk": "20",
                "ip": "1",
                "bandwidth": "200 Mbps",
                "traffic": "Unlimited",
                "gpu": null,
                "in_stock": true,
                "price_hour": 580,
                "price_hour_windows": 580,
                "bandwidth_limit": null,
                "features": {
                    "power": true,
                    "reinstall": true,
                    "console": true
                }
            },
            {
                "product_id": 668,
                "product_code": "557",
                "name": "SG11-1-2-55",
                "group_name": "sg11",
                "region_code": "sg",
                "city": "Singapore",
                "cpu": "1",
                "ram": "2",
                "disk": "55",
                "ip": "1",
                "bandwidth": "1 Gbps (chia sẻ)",
                "traffic": "3 GB/giờ",
                "gpu": null,
                "in_stock": true,
                "price_hour": 760,
                "price_hour_windows": 1980,
                "bandwidth_limit": {
                    "base_gb": 20,
                    "gb_per_hour": 3
                },
                "features": {
                    "power": true,
                    "reinstall": true,
                    "console": false
                }
            }
        ],
        "total": 2,
        "currency": "VND"
    }
}
GET

/cloudvps-hourly/os

Chỉ đọc

Hệ điều hành: ?product_id= ⇒ HĐH thuê được cho gói, kèm price_hour theo HĐH · ?order_code= ⇒ HĐH cài lại được cho máy đó (gói có giá Windows riêng thì chỉ HĐH cùng họ Linux/Windows với máy).

GET https://cloudmoon.net/api/v1/cloudvps-hourly/os
Tham sốVị tríBắt buộcMô tả
product_id query không id số trong /cloudvps-hourly/products (HĐH thuê được)
order_code query không mã đơn (HĐH cài lại được)

Chạy thử Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu.

Yêu cầu
curl 'https://cloudmoon.net/api/v1/cloudvps-hourly/os?product_id=668' \
  -H 'X-API-Key: ak_...'
Yêu cầu
import requests

r = requests.get(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/os",
    headers={"X-API-Key": "ak_..."},
    params={"product_id": "668"},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/os?product_id=668", {
  headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps-hourly/os?product_id=668');
print_r($kq);
Phản hồi
{
    "status": "success",
    "msg": "OK",
    "data": {
        "items": [
            {
                "os_id": 9,
                "os_name": "Linux Ubuntu 24.04",
                "os_type": "linux",
                "icon": "/frontend/assets/images/ubuntu.png",
                "price_hour": 760
            },
            {
                "os_id": 2,
                "os_name": "Windows Server 2022 Trial 180 days",
                "os_type": "windows",
                "icon": "/frontend/assets/images/windows.png",
                "price_hour": 1980
            }
        ],
        "total": 2
    }
}
POST

/cloudvps-hourly/quote

Chỉ đọc

BÁO GIÁ thuê một máy — không trừ tiền, khoá chỉ đọc gọi được. CÙNG bộ kiểm với lệnh thuê: báo giá được thì lệnh thuê chỉ còn hỏng vì số dư hoặc hết máy đúng lúc ấy. available_balance = số dư − tiền mọi lệnh mua/thuê VPS còn chờ tạo máy (gộp Cloud VPS tháng + theo giờ).

POST https://cloudmoon.net/api/v1/cloudvps-hourly/quote
Tham sốVị tríBắt buộcMô tả
product_id body có id số trong /cloudvps-hourly/products
os_id body có từ /cloudvps-hourly/os?product_id=
max_amount body không trần tổng tiền (đ), 0 = không giới hạn
max_hours body không trần số giờ, 0 = không giới hạn

Chạy thử Lệnh đọc — gửi kèm X-Sandbox: 1 vẫn chạy như thường (không đổi gì).

Yêu cầu
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps-hourly/quote' \
  -H 'X-API-Key: ak_...' \
  -H 'Content-Type: application/json' \
  -d '{"product_id":668,"os_id":9}'
Yêu cầu
import requests

r = requests.post(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/quote",
    headers={"X-API-Key": "ak_..."},
    json={"product_id": 668, "os_id": 9},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/quote", {
  method: "POST",
  headers: {
    "X-API-Key": "ak_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ product_id: 668, os_id: 9 }),
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps-hourly/quote', ['product_id' => 668, 'os_id' => 9]);
print_r($kq);
Thân yêu cầu
{
    "product_id": 668,
    "os_id": 9
}
Phản hồi
{
    "status": "success",
    "msg": "OK",
    "data": {
        "type": "buy",
        "product_id": 668,
        "os_id": 9,
        "os_type": "linux",
        "price_hour": 760,
        "first_charge": 760,
        "currency": "VND",
        "balance": 954112,
        "available_balance": 954112,
        "enough": true,
        "hours_affordable": 1255,
        "max_amount": 0,
        "max_hours": 0
    }
}
POST

/cloudvps-hourly/buy

Toàn quyền

Thuê một VPS theo giờ — BẤT ĐỒNG BỘ: trả HTTP 202 kèm order_code, máy được tạo ở nền; hỏi /cloudvps-hourly/info?order_code= tới khi provision_status = ready (failed kèm charged: false = chưa trừ tiền). Trừ trước GIỜ ĐẦU khi máy bắt đầu được tạo; sau đó hệ thống tự trừ mỗi giờ, ví không đủ ⇒ máy bị XOÁ. Nên đặt max_amount / max_hours để máy tự xoá khi chạm trần. Trần: 3 lệnh chờ tạo máy (GỘP với lệnh mua Cloud VPS tháng), 10 lượt/giờ (429); số dư KHẢ DỤNG trừ tiền các lệnh còn chờ. Nhà dựng hỏng máy ⇒ hệ thống tự huỷ + hoàn toàn bộ (deleted_reason: provisioning_failed). Thử miễn phí: header X-Sandbox: 1.

POST https://cloudmoon.net/api/v1/cloudvps-hourly/buy
Tham sốVị tríBắt buộcMô tả
Idempotency-Key header không KHUYÊN DÙNG — gửi lại cùng khoá ⇒ đúng order_code cũ, không thuê hai máy
product_id body có id số trong /cloudvps-hourly/products
os_id body có từ /cloudvps-hourly/os?product_id=
max_amount body không trần tổng tiền (đ) — 0 = không giới hạn, khác 0 thì ≥ 2 giờ tiền
max_hours body không trần số giờ — 0 = không giới hạn, khác 0 thì ≥ 2

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

Yêu cầu
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps-hourly/buy' \
  -H 'X-API-Key: ak_...' \
  -H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
  -H 'Content-Type: application/json' \
  -d '{"product_id":668,"os_id":9,"max_hours":24}'
Yêu cầu
import uuid
import requests

r = requests.post(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/buy",
    headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
    json={"product_id": 668, "os_id": 9, "max_hours": 24},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// 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-hourly/buy", {
  method: "POST",
  headers: {
    "X-API-Key": "ak_...",
    "Content-Type": "application/json",
    "Idempotency-Key": randomUUID(),
  },
  body: JSON.stringify({ product_id: 668, os_id: 9, max_hours: 24 }),
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps-hourly/buy', ['product_id' => 668, 'os_id' => 9, 'max_hours' => 24], bin2hex(random_bytes(16)));
print_r($kq);
Thân yêu cầu
{
    "product_id": 668,
    "os_id": 9,
    "max_hours": 24
}
Phản hồi
{
    "status": "success",
    "msg": "Đã nhận lệnh thuê — máy đang được tạo",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "status": "queued",
        "provision_status": "queued",
        "product_id": 668,
        "os_id": 9,
        "price_hour": 760,
        "max_amount": 0,
        "max_hours": 24,
        "note": "Máy đang được tạo ở nền — hỏi GET /cloudvps-hourly/info?order_code= để biết khi nào sẵn sàng"
    }
}
GET

/cloudvps-hourly/list

Chỉ đọc

VPS theo giờ của tài khoản (không kèm mật khẩu). Mặc định máy đang chạy; ?status=deleted xem máy đã xoá (kèm deleted_reason). Phân trang.

GET https://cloudmoon.net/api/v1/cloudvps-hourly/list
Tham sốVị tríBắt buộcMô tả
status query không active (mặc định) | deleted
limit query không 1-200, mặc định 50
page query không Trang, tính từ 1
Yêu cầu
curl 'https://cloudmoon.net/api/v1/cloudvps-hourly/list' \
  -H 'X-API-Key: ak_...'
Yêu cầu
import requests

r = requests.get(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/list",
    headers={"X-API-Key": "ak_..."},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/list", {
  headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps-hourly/list');
print_r($kq);
Phản hồi
{
    "status": "success",
    "msg": "OK",
    "data": {
        "items": [
            {
                "order_code": "081026CLOUDVBHZQXKMNTRA",
                "name": "SG11-1-2-55",
                "ip": "203.0.113.25",
                "cpu": "1",
                "ram": "2",
                "disk": "55",
                "os_id": 9,
                "os_name": "Linux Ubuntu 24.04",
                "vps_status": "running",
                "provision_status": "ready",
                "order_status": "active",
                "time_buy": "2026-10-08",
                "plan": {
                    "product_id": 668,
                    "name": "SG11-1-2-55",
                    "region": "sg",
                    "city": "Singapore",
                    "gpu": null
                },
                "billing": {
                    "price_hour": 760,
                    "hours_paid": 3,
                    "total_paid": 2280,
                    "paid_until": "2026-10-08T13:05:00+07:00",
                    "seconds_left": 1834,
                    "status": "running",
                    "max_amount": 0,
                    "max_hours": 24,
                    "started_at": "2026-10-08T10:05:00+07:00",
                    "stopped_at": null
                },
                "bandwidth": {
                    "used_out_mb": 812,
                    "limit_mb": 29696,
                    "next_limit_mb": 32768,
                    "checked_at": "2026-10-08T12:30:00+07:00",
                    "paused": false,
                    "resume_at": null
                },
                "deleted_reason": null,
                "features": {
                    "power": true,
                    "reinstall": true,
                    "console": false
                },
                "allowed_actions": [
                    "start",
                    "stop",
                    "restart",
                    "reinstall",
                    "sync",
                    "limits",
                    "delete"
                ]
            }
        ],
        "page": 1,
        "limit": 50,
        "total": 1
    }
}
GET

/cloudvps-hourly/info

Chỉ đọc

Chi tiết một VPS theo giờ (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): billing (đơn giá · giờ đã trả · tổng đã trả · trả tới · số giây tới lượt trừ kế · trần) · bandwidth (dòng có hạn mức lưu lượng; paused + resume_at khi máy tạm dừng vì vượt hạn mức) · wallet (ví còn đủ trả bao nhiêu giờ cho mọi máy giờ đang chạy) · features · allowed_actions. username/password/port CHỈ kèm khi khoá TOÀN QUYỀN và provision_status = ready.

GET https://cloudmoon.net/api/v1/cloudvps-hourly/info
Tham sốVị tríBắt buộcMô 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.

Yêu cầu
curl 'https://cloudmoon.net/api/v1/cloudvps-hourly/info?order_code=081026CLOUDVBHZQXKMNTRA' \
  -H 'X-API-Key: ak_...'
Yêu cầu
import requests

r = requests.get(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/info",
    headers={"X-API-Key": "ak_..."},
    params={"order_code": "081026CLOUDVBHZQXKMNTRA"},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/info?order_code=081026CLOUDVBHZQXKMNTRA", {
  headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps-hourly/info?order_code=081026CLOUDVBHZQXKMNTRA');
print_r($kq);
Phản hồi
{
    "status": "success",
    "msg": "OK",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "name": "SG11-1-2-55",
        "ip": "203.0.113.25",
        "cpu": "1",
        "ram": "2",
        "disk": "55",
        "os_id": 9,
        "os_name": "Linux Ubuntu 24.04",
        "vps_status": "running",
        "provision_status": "ready",
        "order_status": "active",
        "time_buy": "2026-10-08",
        "plan": {
            "product_id": 668,
            "name": "SG11-1-2-55",
            "region": "sg",
            "city": "Singapore",
            "gpu": null
        },
        "billing": {
            "price_hour": 760,
            "hours_paid": 3,
            "total_paid": 2280,
            "paid_until": "2026-10-08T13:05:00+07:00",
            "seconds_left": 1834,
            "status": "running",
            "max_amount": 0,
            "max_hours": 24,
            "started_at": "2026-10-08T10:05:00+07:00",
            "stopped_at": null
        },
        "bandwidth": {
            "used_out_mb": 812,
            "limit_mb": 29696,
            "next_limit_mb": 32768,
            "checked_at": "2026-10-08T12:30:00+07:00",
            "paused": false,
            "resume_at": null
        },
        "deleted_reason": null,
        "features": {
            "power": true,
            "reinstall": true,
            "console": false
        },
        "allowed_actions": [
            "start",
            "stop",
            "restart",
            "reinstall",
            "sync",
            "limits",
            "delete"
        ],
        "wallet": {
            "balance": 951832,
            "hourly_total": 760,
            "hours_affordable": 1252
        },
        "username": "root",
        "password": "S3cret-pass",
        "port": 22,
        "credentials_note": null
    }
}
GET

/cloudvps-hourly/charges

Chỉ đọc

Sổ trừ tiền TỪNG GIỜ của một máy, mới nhất trước (result: paid · insufficient_balance · pending · refunded — hoàn vì máy không khởi tạo được) + tổng.

GET https://cloudmoon.net/api/v1/cloudvps-hourly/charges
Tham sốVị tríBắt buộcMô tả
order_code query có Mã đơn (order_code) — lấy từ lệnh mua hoặc /list
limit query không 1-200, mặc định 48

Chạy thử Nhận cả mã SANDBOX… của lệnh mua chạy thử ⇒ trả máy mẫu.

Yêu cầu
curl 'https://cloudmoon.net/api/v1/cloudvps-hourly/charges?order_code=081026CLOUDVBHZQXKMNTRA' \
  -H 'X-API-Key: ak_...'
Yêu cầu
import requests

r = requests.get(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/charges",
    headers={"X-API-Key": "ak_..."},
    params={"order_code": "081026CLOUDVBHZQXKMNTRA"},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/charges?order_code=081026CLOUDVBHZQXKMNTRA", {
  headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps-hourly/charges?order_code=081026CLOUDVBHZQXKMNTRA');
print_r($kq);
Phản hồi
{
    "status": "success",
    "msg": "OK",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "items": [
            {
                "from": "2026-10-08T12:05:00+07:00",
                "to": "2026-10-08T13:05:00+07:00",
                "amount": 760,
                "result": "paid",
                "created_at": "2026-10-08T12:05:31+07:00"
            }
        ],
        "total": 1,
        "summary": {
            "price_hour": 760,
            "hours_paid": 3,
            "total_paid": 2280
        }
    }
}
POST

/cloudvps-hourly/action

Toàn quyền

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á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. TẮT máy vẫn tính tiền theo giờ — xoá máy để dừng tính tiền. Nhịp: 60 giây/máy. Máy đang tạm dừng vì vượt hạn mức lưu lượng ⇒ start/restart nhận 409 BANDWIDTH_PAUSED.

POST https://cloudmoon.net/api/v1/cloudvps-hourly/action
Tham sốVị tríBắt buộcMô 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): REBUILDING (409) · BANDWIDTH_PAUSED (409) · ORDER_DELETED (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · MAINTENANCE (503) · FAILED (400).

Yêu cầu
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps-hourly/action' \
  -H 'X-API-Key: ak_...' \
  -H 'Content-Type: application/json' \
  -d '{"order_code":"081026CLOUDVBHZQXKMNTRA","action":"restart"}'
Yêu cầu
import requests

r = requests.post(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/action",
    headers={"X-API-Key": "ak_..."},
    json={"order_code": "081026CLOUDVBHZQXKMNTRA", "action": "restart"},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/action", {
  method: "POST",
  headers: {
    "X-API-Key": "ak_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ order_code: "081026CLOUDVBHZQXKMNTRA", action: "restart" }),
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps-hourly/action', ['order_code' => '081026CLOUDVBHZQXKMNTRA', 'action' => 'restart']);
print_r($kq);
Thân yêu cầu
{
    "order_code": "081026CLOUDVBHZQXKMNTRA",
    "action": "restart"
}
Phản hồi
{
    "status": "success",
    "msg": "Khởi động lại VPS thành công",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "action": "restart",
        "already": false
    }
}
POST

/cloudvps-hourly/reinstall

Toàn quyền

Cài lại hệ điều hành — XOÁ TOÀN BỘ DỮ LIỆU. os_id lấy từ /cloudvps-hourly/os?order_code=. Một lần / 10 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-hourly/reinstall
Tham sốVị tríBắt buộcMô 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) · BANDWIDTH_PAUSED (409) · ORDER_DELETED (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · MAINTENANCE (503) · FAILED (400).

Yêu cầu
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps-hourly/reinstall' \
  -H 'X-API-Key: ak_...' \
  -H 'Content-Type: application/json' \
  -d '{"order_code":"081026CLOUDVBHZQXKMNTRA","os_id":9}'
Yêu cầu
import requests

r = requests.post(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/reinstall",
    headers={"X-API-Key": "ak_..."},
    json={"order_code": "081026CLOUDVBHZQXKMNTRA", "os_id": 9},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/reinstall", {
  method: "POST",
  headers: {
    "X-API-Key": "ak_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ order_code: "081026CLOUDVBHZQXKMNTRA", os_id: 9 }),
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps-hourly/reinstall', ['order_code' => '081026CLOUDVBHZQXKMNTRA', 'os_id' => 9]);
print_r($kq);
Thân yêu cầu
{
    "order_code": "081026CLOUDVBHZQXKMNTRA",
    "os_id": 9
}
Phản hồi
{
    "status": "success",
    "msg": "Đang cài lại hệ điều hành — hỏi /cloudvps-hourly/info để biết khi nào xong",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "os_id": 9,
        "os_name": "Linux Ubuntu 24.04",
        "provision_status": "rebuilding"
    }
}
POST

/cloudvps-hourly/limits

Toàn quyền

Đặt TRẦN CHI TIÊU cho một máy: max_amount (tổng tiền) và/hoặc max_hours (số giờ), 0 = không giới hạn. Trần nào chạm trước thì máy bị XOÁ theo trần đó — không bao giờ thu vượt trần. Trần thấp hơn (đã tiêu + một giờ) bị chối kèm con số nhỏ nhất hợp lệ. Gửi một trường thì trường kia giữ nguyên.

POST https://cloudmoon.net/api/v1/cloudvps-hourly/limits
Tham sốVị tríBắt buộcMô tả
order_code body có Mã đơn (order_code) — lấy từ lệnh mua hoặc /list
max_amount body không trần tổng tiền (đ), 0 = không giới hạn
max_hours body không trần số giờ, 0 = không giới hạn

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) · IN_PROGRESS (429).

Yêu cầu
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps-hourly/limits' \
  -H 'X-API-Key: ak_...' \
  -H 'Content-Type: application/json' \
  -d '{"order_code":"081026CLOUDVBHZQXKMNTRA","max_amount":20000}'
Yêu cầu
import requests

r = requests.post(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/limits",
    headers={"X-API-Key": "ak_..."},
    json={"order_code": "081026CLOUDVBHZQXKMNTRA", "max_amount": 20000},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/limits", {
  method: "POST",
  headers: {
    "X-API-Key": "ak_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ order_code: "081026CLOUDVBHZQXKMNTRA", max_amount: 20000 }),
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps-hourly/limits', ['order_code' => '081026CLOUDVBHZQXKMNTRA', 'max_amount' => 20000]);
print_r($kq);
Thân yêu cầu
{
    "order_code": "081026CLOUDVBHZQXKMNTRA",
    "max_amount": 20000
}
Phản hồi
{
    "status": "success",
    "msg": "Đã lưu hạn mức",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "max_amount": 20000,
        "max_hours": 24,
        "hours_paid": 3,
        "total_paid": 2280
    }
}
POST

/cloudvps-hourly/sync

Chỉ đọc

Hỏi lại trạng thái THẬT của máy (IP · chạy/tắt · 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-hourly/sync
Tham sốVị tríBắt buộcMô 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).

Yêu cầu
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps-hourly/sync' \
  -H 'X-API-Key: ak_...' \
  -H 'Content-Type: application/json' \
  -d '{"order_code":"081026CLOUDVBHZQXKMNTRA"}'
Yêu cầu
import requests

r = requests.post(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/sync",
    headers={"X-API-Key": "ak_..."},
    json={"order_code": "081026CLOUDVBHZQXKMNTRA"},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/sync", {
  method: "POST",
  headers: {
    "X-API-Key": "ak_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ order_code: "081026CLOUDVBHZQXKMNTRA" }),
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps-hourly/sync', ['order_code' => '081026CLOUDVBHZQXKMNTRA']);
print_r($kq);
Thân yêu cầu
{
    "order_code": "081026CLOUDVBHZQXKMNTRA"
}
Phản hồi
{
    "status": "success",
    "msg": "Đã cập nhật trạng thái mới nhất",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "name": "SG11-1-2-55",
        "ip": "203.0.113.25",
        "cpu": "1",
        "ram": "2",
        "disk": "55",
        "os_id": 9,
        "os_name": "Linux Ubuntu 24.04",
        "vps_status": "running",
        "provision_status": "ready",
        "order_status": "active",
        "time_buy": "2026-10-08",
        "plan": {
            "product_id": 668,
            "name": "SG11-1-2-55",
            "region": "sg",
            "city": "Singapore",
            "gpu": null
        },
        "billing": {
            "price_hour": 760,
            "hours_paid": 3,
            "total_paid": 2280,
            "paid_until": "2026-10-08T13:05:00+07:00",
            "seconds_left": 1834,
            "status": "running",
            "max_amount": 0,
            "max_hours": 24,
            "started_at": "2026-10-08T10:05:00+07:00",
            "stopped_at": null
        },
        "bandwidth": {
            "used_out_mb": 812,
            "limit_mb": 29696,
            "next_limit_mb": 32768,
            "checked_at": "2026-10-08T12:30:00+07:00",
            "paused": false,
            "resume_at": null
        },
        "deleted_reason": null,
        "features": {
            "power": true,
            "reinstall": true,
            "console": false
        },
        "allowed_actions": [
            "start",
            "stop",
            "restart",
            "reinstall",
            "sync",
            "limits",
            "delete"
        ]
    }
}
GET

/cloudvps-hourly/console

Toàn quyền

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ỉ máy features.console.

GET https://cloudmoon.net/api/v1/cloudvps-hourly/console
Tham sốVị tríBắt buộcMô 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) · BANDWIDTH_PAUSED (409) · COOLDOWN (429) · BUSY (429) · MAINTENANCE (503) · CONSOLE_UNAVAILABLE (503).

Yêu cầu
curl 'https://cloudmoon.net/api/v1/cloudvps-hourly/console?order_code=081026CLOUDVBHZQXKMNTRA' \
  -H 'X-API-Key: ak_...'
Yêu cầu
import requests

r = requests.get(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/console",
    headers={"X-API-Key": "ak_..."},
    params={"order_code": "081026CLOUDVBHZQXKMNTRA"},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/console?order_code=081026CLOUDVBHZQXKMNTRA", {
  headers: { "X-API-Key": "ak_..." },
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('GET', '/v1/cloudvps-hourly/console?order_code=081026CLOUDVBHZQXKMNTRA');
print_r($kq);
Phản hồi
{
    "status": "success",
    "msg": "OK",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "console_url": "https://console.systemcloudvps.com/vnc.html?token=...",
        "pending": false,
        "retry_after": null
    }
}
POST

/cloudvps-hourly/delete

Toàn quyền

XOÁ máy = DỪNG TÍNH TIỀN ngay (không hoàn phần giờ đã trả, không khôi phục). Bắt buộc confirm = đúng order_code. Đi được cả lúc máy đang khởi tạo; gỡ máy có thể trễ vài phút (status: deleting) nhưng tiền đã ngừng tính.

POST https://cloudmoon.net/api/v1/cloudvps-hourly/delete
Tham sốVị tríBắt buộcMô 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): ORDER_DELETED (409) · IN_PROGRESS (429) · FAILED (400).

Yêu cầu
curl -X POST 'https://cloudmoon.net/api/v1/cloudvps-hourly/delete' \
  -H 'X-API-Key: ak_...' \
  -H 'Content-Type: application/json' \
  -d '{"order_code":"081026CLOUDVBHZQXKMNTRA","confirm":"081026CLOUDVBHZQXKMNTRA"}'
Yêu cầu
import requests

r = requests.post(
    "https://cloudmoon.net/api/v1/cloudvps-hourly/delete",
    headers={"X-API-Key": "ak_..."},
    json={"order_code": "081026CLOUDVBHZQXKMNTRA", "confirm": "081026CLOUDVBHZQXKMNTRA"},
    timeout=30,
)
print(r.status_code, r.json())
Yêu cầu
// Node.js 18+ — lưu thành tệp .mjs

const res = await fetch("https://cloudmoon.net/api/v1/cloudvps-hourly/delete", {
  method: "POST",
  headers: {
    "X-API-Key": "ak_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ order_code: "081026CLOUDVBHZQXKMNTRA", confirm: "081026CLOUDVBHZQXKMNTRA" }),
});
console.log(res.status, await res.json());
Yêu cầu
// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/cloudvps-hourly/delete', ['order_code' => '081026CLOUDVBHZQXKMNTRA', 'confirm' => '081026CLOUDVBHZQXKMNTRA']);
print_r($kq);
Thân yêu cầu
{
    "order_code": "081026CLOUDVBHZQXKMNTRA",
    "confirm": "081026CLOUDVBHZQXKMNTRA"
}
Phản hồi
{
    "status": "success",
    "msg": "Đã xoá VPS",
    "data": {
        "order_code": "081026CLOUDVBHZQXKMNTRA",
        "status": "deleted",
        "billing_stopped": true,
        "hours_paid": 3,
        "total_paid": 2280
    }
}
Zalo