Trên trang này
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 /dedi/products |
Danh mục Dedicated Server: giá từng chu kỳ (cycles = chu kỳ mua được; amount đã trừ chiết khấu đại lý, amount_original … | Chỉ đọc |
GET /dedi/os |
Hệ điều hành: ?product_id= ⇒ HĐH mua được cho gói · ?order_code= ⇒ HĐH cài lại được cho máy đó. Luôn dùng os_id trả về … | Chỉ đọc |
POST /dedi/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, os_id?} — CÙNG bộ k… | Chỉ đọc |
POST /dedi/buy |
Mua Dedicated Server — trừ tiền NGAY (giá thuê + phí lắp đặt một lần) và trả HTTP 202 kèm order_code; đơn ở provision_s… | Toàn quyền |
GET /dedi/list |
Mọi Dedicated Server của tài khoản (không kèm mật khẩu). Mặc định bỏ đơn đã xoá; ?status= pending | active | pending_ex… | Chỉ đọc |
GET /dedi/info |
Chi tiết một Dedicated Server: provision_status (provisioning · ready · failed · expired · deleted), estimated_ready_at… | Chỉ đọc |
POST /dedi/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 /dedi/quote {o… | Toàn quyền |
POST /dedi/auto-renew |
Bật/tắt tự gia hạn (tới hạn hệ thống tự trừ ví, giá động như gia hạn tay). Đặt đúng giá trị đang có vẫn thành công. | Toàn quyền |
POST /dedi/reboot |
Gửi YÊU CẦU khởi động lại cho kỹ thuật xử lý ⇒ HTTP 202; theo dõi pending_action ở /dedi/info. Mỗi lúc chỉ MỘT yêu cầu … | Toàn quyền |
POST /dedi/reinstall |
Gửi YÊU CẦU cài lại hệ điều hành (máy bị XOÁ TRẮNG khi bắt đầu cài — sao lưu trước) ⇒ HTTP 202. os_id lấy từ /dedi/os?o… | Toàn quyền |
POST /dedi/delete |
Xoá Dedicated Server — KHÔNG hoàn tiền, không khôi phục. Bắt buộc confirm = đúng order_code. Đơn chưa bàn giao không xo… | Toàn quyền |
Giá đại lý: Danh mục, báo giá và lệnh mua trả về (và trừ ví) giá thuê đã trừ chiết khấu theo cấp đại lý; phí lắp đặt không giảm; gia hạn theo giá niêm yết hiện hành (không thấp hơn giá đã trả). — xem mục Tài khoản đại lý.
Đặt mua & bàn giao
Dedicated Server không được tạo tự động trong vài phút như Cloud VPS: mỗi đơn được kỹ thuật bàn giao sau khi bạn đặt — thời gian dự kiến 48 giờ (trường delivery_hours ở danh mục). Lệnh mua vì vậy trừ tiền ngay nhưng máy tới sau:
POST /dedi/buykiểm hết (gói, chu kỳ, hệ điều hành, số dư khả dụng, giới hạn lệnh mua) rồi trừ ví ngay giá thuê kỳ đầu cộng phí lắp đặt và trả HTTP 202:order_code,provision_status: "provisioning",charged: true,total_charged,time_expire_moon,estimated_ready_at.- Hỏi
GET /dedi/info?order_code=…thưa thôi — mỗi 5–10 phút là đủ — tới khiprovision_statuslàready(đã bàn giao) hoặcfailed. - Khi
ready, khoá Toàn quyền đọc đượcusername·password·port; địa chỉ máy ở trườngip.
estimated_ready_atlà mốc dự kiến, không phải cam kết: quá mốc mà chưa xong thì đơn vẫn đang được xử lý, không tự huỷ. Cần gấp hãy liên hệ hỗ trợ kèmorder_code.- Không bàn giao được ⇒ đơn bị huỷ và hoàn đủ số đã trừ vào số dư:
infotrảprovision_status: "failed",order_status: "cancelled"vàrefunded_amount. Đơn đã huỷ không thao tác được nữa (409 ORDER_CANCELLED). - Trong lúc chờ bàn giao, đơn chỉ nhận bật/tắt tự gia hạn; gia hạn, yêu cầu kỹ thuật và xoá nhận
409 REBUILDING. Muốn huỷ đơn chưa bàn giao ⇒ liên hệ hỗ trợ. - Lệnh mua không tự chống bấm đúp: hai lệnh giống hệt là hai đơn và hai lần trừ tiền — luôn gửi
Idempotency-Key.
Phí lắp đặt (fee_set_up ở danh mục và báo giá) thu một lần lúc mua và nằm trong total / total_charged; không giảm theo chiết khấu đại lý, không thu lại khi gia hạn.
Trạng thái đơn
order_status là trạng thái của đơn, provision_status là cách đọc gọn cho bộ tích hợp (cùng tên với Cloud VPS) — mỗi ô bên trái ghi order_status ở trên, provision_status tương ứng ở dưới:
order_statusprovision_status | Nghĩa |
|---|---|
pendingprovisioning | Đã trả tiền, đang chờ bàn giao — xem estimated_ready_at. |
activeready | Đang hoạt động. (Đơn đã kích hoạt mà chưa có thông tin truy cập thì vẫn báo provisioning.) |
pending_expiredready | Quá hạn — dịch vụ đang tạm ngưng: Bảng điều khiển và console đã bị khoá. Máy vẫn chạy cho tới khi hết thời gian chờ. Thông tin đăng nhập bị ẩn; gia hạn trong đúng ngày hết hạn để dùng lại. |
expiredexpired | Hết hạn hẳn — quá thời gian tạm ngưng mà chưa gia hạn: không gia hạn được nữa (409 ORDER_EXPIRED); sau 30 ngày kể từ khi hết hạn, đơn bị xoá khỏi hệ thống và máy được thu hồi. |
cancelledfailed | Không bàn giao được — đã hoàn tiền (refunded_amount). |
deleteddeleted | Bạn đã xoá — không hoàn tiền, không khôi phục. |
features:restart·reinstall·auto_renewlàtrue(reinstallcòn tuỳ máy có hệ điều hành cài lại được);power·console·upgrade·change_cycle·change_ipluônfalse— giữ cùng khoá với Cloud VPS để một bộ tích hợp đọc được cả hai.allowed_actions:renew·auto_renew·reboot·reinstall·delete— tên nào vắng mặt thì lệnh ấy đang bị chối ở thời điểm này (đơn chờ bàn giao, quá hạn, đang có yêu cầu chờ, đang rao bán trên chợ…).
Thời hạn & gia hạn
- Thời hạn tính từ lúc đặt mua, không chờ tới lúc bàn giao —
time_expire_mooncó ngay trong câu trả lời của lệnh mua. POST /dedi/renewcộng một chu kỳ vào hạn hiện tại và trừ ví ngay. Giá = giá đã trả lúc mua hoặc giá niêm yết hiện hành của chu kỳ, lấy số lớn hơn (phí lắp đặt không thu lại). Số kỳ tới nằm ởprice_renewcủainfo; muốn chắc chắn hãy gọiPOST /dedi/quotevới{"order_code": "…", "type": "renew"}— kèm hạn mớinew_time_expire_moon.- Đơn luôn gia hạn theo đúng chu kỳ đã chọn lúc mua (
billing_cycle), kể cả khi chu kỳ ấy không còn bán cho đơn mới. Không đổi chu kỳ được. - Tự gia hạn (
renew_auto: "on", đổi bằngPOST /dedi/auto-renew): trong 7 ngày trước hạn, hệ thống tự gia hạn một chu kỳ khi ví đủ tiền — giá như gia hạn tay. - Tới ngày hết hạn mà chưa gia hạn ⇒
pending_expired: dịch vụ tạm ngưng, vẫn gia hạn được trong đúng ngày hết hạn. Sau đó ⇒expired: không gia hạn được nữa (409 ORDER_EXPIRED); sau 30 ngày kể từ khi hết hạn, đơn bị xoá khỏi hệ thống và máy được thu hồi. Gia hạn trước hạn (hoặc bật tự gia hạn) là chắc nhất.
Yêu cầu kỹ thuật — khởi động lại · cài lại hệ điều hành
POST /dedi/reboot và POST /dedi/reinstall (os_id lấy từ GET /dedi/os?order_code=…) là yêu cầu gửi kỹ thuật xử lý, không chạy tức thì: lệnh trả HTTP 202 kèm request, status: "pending" và mốc dự kiến estimated_done_at.
- Theo dõi ở
info: còn chờ thìpending_action={type: "restart" | "reinstall", os_id, os_name, deadline}; xử lý xong hoặc bị từ chối thì vềnull. Kết quả (kể cả lý do khi từ chối) được báo qua email của tài khoản. - Mỗi máy chỉ một yêu cầu đang chờ (khởi động lại hoặc cài lại) — gửi thêm ⇒
409 REQUEST_PENDING. Máy đang rao bán trên chợ ⇒409 LISTED_ON_MARKETPLACE. - Cài lại xoá trắng dữ liệu khi bắt đầu cài — sao lưu trước. Trong lúc chờ, máy vẫn chạy với thông tin đăng nhập cũ; cài xong thì
os_id/os_nameđổi sang hệ điều hành mới — đọc lại thông tin đăng nhập ởinfo.
Luật riêng
- Không có bật/tắt nguồn, console, nâng cấp cấu hình, đổi chu kỳ, đổi IP hay làm mới trạng thái qua API —
featuresbáofalse. - Xoá (
POST /dedi/delete,confirm= đúngorder_code): không hoàn tiền, không khôi phục; đơn chưa bàn giao không xoá được. - Trần lệnh mua qua API: tối đa 3 đơn đã trả tiền mà chưa bàn giao (gộp Dedicated Server + VPS Giá Rẻ) —
429 TOO_MANY_PENDING— và 10 lượt mua mỗi giờ (429 RATE_LIMITED); hai bộ đếm tính cả đơn đặt trên web, và tính riêng với lệnh mua Cloud VPS. Số dư xét lệnh mua là số dư khả dụng — đã trừ tiền các lệnh mua Cloud VPS còn chờ tạo máy. - Chạy thử (
X-Sandbox: 1): mãSANDBOX…đi vòng đời rút gọn — 60 giây đầuprovisioning, sau đóreadykèm thông tin đăng nhập mẫu; kịch bảnPROVISION_FAILED⇒failed+refunded_amount(mô phỏng đơn đã trừ tiền rồi được hoàn). Yêu cầu kỹ thuật chạy thử trả 202 mô phỏng, không gửi đi đâu.
Nhịp thao tác trên cùng một máy
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 — nhịp này chỉ áp cho lệnh gửi qua API, để chặn lệnh gửi lặp. 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.
Yêu cầu gửi kỹ thuật (khởi động lại · cài lại hệ điều hành) không đi theo đồng hồ mà theo hàng chờ: mỗi máy chỉ một yêu cầu đang chờ — gửi thêm ⇒ 409 REQUEST_PENDING, chờ pending_action ở info về null. Khác với 429 IN_PROGRESS: một lệnh API khác trên cùng đơn đang chạy dở, chờ vài giây là gửi lại được.
| Lệnh | Cách lệnh trước trên cùng máy |
|---|---|
| Gia hạn | 1 phút |
| Bật/tắt tự gia hạn | 5 giây (tính riêng) |
| Khởi động lại · cài lại hệ điều hành | không theo đồng hồ — mỗi máy MỘT yêu cầu đang chờ (gửi thêm khi còn yêu cầu chờ ⇒ 409 REQUEST_PENDING; theo dõi pending_action ở /dedi/info) |
| Xoá | không phải chờ |
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 /dedi/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 | ORDER_CANCELLED |
Đơn đã bị huỷ vì không bàn giao được — tiền đã hoàn vào số dư (refunded_amount ở /dedi/info). |
Đặt mua gói khác. |
| 409 | RENEW_REQUIRED |
Dịch vụ đang tạm ngưng vì quá hạn. | Gia hạn (/dedi/renew) rồi thao tác lại. |
| 409 | REQUEST_PENDING |
Máy đang có một yêu cầu khởi động lại / cài lại hệ điều hành chờ kỹ thuật xử lý — mỗi lúc chỉ một yêu cầu. | Theo dõi pending_action ở /dedi/info; xong rồi gửi yêu cầu kế. |
| 409 | LISTED_ON_MARKETPLACE |
Máy đang được rao bán trên chợ — khởi động lại, cài lại và xoá 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. |
/dedi/products
Chỉ đọcDanh mục Dedicated Server: giá từng chu kỳ (cycles = chu kỳ mua được; amount đã trừ chiết khấu đại lý, amount_original = giá niêm yết), fee_set_up = phí lắp đặt MỘT LẦN (không giảm, không thu lại khi gia hạn), delivery_hours = số giờ bàn giao DỰ KIẾN, features. Gói tạm hết hàng VẪN có trong danh sách với in_stock: false (đặt mua 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/dedi/products| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
region |
query | không | mã khu vực, vd vn · us · de |
in_stock |
query | không | 1 = chỉ gói còn hàng |
curl 'https://cloudmoon.net/api/v1/dedi/products' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/dedi/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/dedi/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/dedi/products');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"items": [
{
"product_id": 4,
"product_code": "2052",
"name": "DE80-02",
"group_name": "de80",
"region_code": "de",
"city": "Berlin",
"cpu": "8 cores / 16 threads",
"gpu": "",
"ram": "64 GB DDR4",
"disk": "2 x 512 GB NVMe",
"ip": "1",
"bandwidth": "1 Gbps",
"traffic": "Unlimited",
"in_stock": true,
"cycles": [
"onemonth"
],
"pricing": {
"onemonth": {
"amount": 8040000,
"amount_original": 8040000,
"billing_cycle": "1 Tháng"
}
},
"fee_set_up": 2600000,
"features": {
"restart": true,
"reinstall": true,
"auto_renew": true,
"power": false,
"console": false,
"upgrade": false,
"change_cycle": false,
"change_ip": false
},
"delivery_hours": 48
}
],
"total": 1,
"discount_percent": 0,
"currency": "VND"
}
}/dedi/os
Chỉ đọcHệ điều hành: ?product_id= ⇒ HĐH mua được cho gói · ?order_code= ⇒ HĐH cài lại được cho máy đó. Luôn dùng os_id trả về ở đây.
GET https://cloudmoon.net/api/v1/dedi/os| Tham số | Vị trí | Bắt buộc | Mô tả |
|---|---|---|---|
product_id |
query | không | id số trong /dedi/products (HĐH mua đượ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.
curl 'https://cloudmoon.net/api/v1/dedi/os?product_id=4' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/dedi/os",
headers={"X-API-Key": "ak_..."},
params={"product_id": "4"},
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/dedi/os?product_id=4", {
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/dedi/os?product_id=4');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"items": [
{
"os_id": 21,
"os_name": "Linux Ubuntu 22.04",
"os_type": "linux",
"icon": "/frontend/assets/images/ubuntu.png"
}
],
"total": 1
}
}/dedi/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, os_id?} — CÙNG bộ kiểm với lệnh mua; enough so với available_balance (= số dư − tiền các lệnh mua VPS còn chờ tạo máy). Đơn có sẵn: {order_code, type: renew} ⇒ giá gia hạn kỳ tới + hạn mới.
POST https://cloudmoon.net/api/v1/dedi/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 — một trong cycles của gói |
os_id |
body | không | mua mới (tuỳ chọn) — gửi thì kiểm luôn |
order_code |
body | không | đơn có sẵn |
type |
body | không | renew (đơn có sẵ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ì). 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/dedi/quote' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"product_id":4,"billing_cycle":"onemonth","os_id":21}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/dedi/quote",
headers={"X-API-Key": "ak_..."},
json={"product_id": 4, "billing_cycle": "onemonth", "os_id": 21},
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/dedi/quote", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ product_id: 4, billing_cycle: "onemonth", os_id: 21 }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/dedi/quote', ['product_id' => 4, 'billing_cycle' => 'onemonth', 'os_id' => 21]);
print_r($kq);{
"product_id": 4,
"billing_cycle": "onemonth",
"os_id": 21
}{
"status": "success",
"msg": "OK",
"data": {
"type": "buy",
"product_id": 4,
"billing_cycle": "onemonth",
"os_id": 21,
"amount": 8040000,
"amount_original": 8040000,
"discount_percent": 0,
"fee_set_up": 2600000,
"total": 10640000,
"currency": "VND",
"balance": 20000000,
"available_balance": 20000000,
"enough": true,
"delivery_hours": 48
}
}/dedi/buy
Toàn quyềnMua Dedicated Server — trừ tiền NGAY (giá thuê + phí lắp đặt một lần) và trả HTTP 202 kèm order_code; đơn ở provision_status = provisioning tới khi được bàn giao (thời gian dự kiến ở estimated_ready_at, không phải cam kết). Hỏi /dedi/info tới khi ready. Không bàn giao được ⇒ đơn bị huỷ, hoàn tiền vào số dư (failed + refunded_amount). Trần đơn chờ bàn giao (gộp Dedicated Server + VPS Giá Rẻ) và lượt mua mỗi giờ: xem mục Giới hạn lệnh mua ở trang Tổng quan (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/dedi/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 kết quả cũ, không mua hai lần |
product_id |
body | có | id số trong /dedi/products |
os_id |
body | có | từ /dedi/os?product_id= |
billing_cycle |
body | có | một trong cycles của gó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ì. Kịch bản lỗi (X-Sandbox-Scenario): INSUFFICIENT_BALANCE (402) · NOT_FOUND (404) · OUT_OF_STOCK (409) · IDEMPOTENCY_PENDING (409) · TOO_MANY_PENDING (429) · RATE_LIMITED (429) · BUSY (429) · SERVICE_DISABLED (503) · FAILED (400) · PROVISION_FAILED (lệnh vẫn nhận, info về sau báo failed).
curl -X POST 'https://cloudmoon.net/api/v1/dedi/buy' \
-H 'X-API-Key: ak_...' \
-H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
-H 'Content-Type: application/json' \
-d '{"product_id":4,"os_id":21,"billing_cycle":"onemonth"}'import uuid
import requests
r = requests.post(
"https://cloudmoon.net/api/v1/dedi/buy",
headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
json={"product_id": 4, "os_id": 21, "billing_cycle": "onemonth"},
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/dedi/buy", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({ product_id: 4, os_id: 21, billing_cycle: "onemonth" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/dedi/buy', ['product_id' => 4, 'os_id' => 21, 'billing_cycle' => 'onemonth'], bin2hex(random_bytes(16)));
print_r($kq);{
"product_id": 4,
"os_id": 21,
"billing_cycle": "onemonth"
}{
"status": "success",
"msg": "Đã nhận đơn — đang chờ bàn giao",
"data": {
"order_code": "101026DEDIQWERTYUIOPAS",
"order_status": "pending",
"provision_status": "provisioning",
"charged": true,
"product_id": 4,
"billing_cycle": "onemonth",
"os_id": 21,
"price_buy": 8040000,
"fee_set_up": 2600000,
"total_charged": 10640000,
"time_expire_moon": "2026-11-09",
"estimated_ready_at": "2026-10-12T10:00:00+07:00",
"note": "Đơn đã trừ tiền và đang chờ bàn giao — hỏi GET /dedi/info?order_code= tới khi provision_status = ready"
}
}/dedi/list
Chỉ đọcMọi Dedicated Server của tài khoản (không kèm mật khẩu). Mặc định bỏ đơn đã xoá; ?status= pending | active | pending_expired | expired | cancelled | deleted. Phân trang.
GET https://cloudmoon.net/api/v1/dedi/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/dedi/list' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/dedi/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/dedi/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/dedi/list');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"items": [
{
"order_code": "101026DEDIQWERTYUIOPAS",
"name": "DE80-02",
"plan": {
"product_id": 4,
"name": "DE80-02",
"region": "de"
},
"ip": "203.0.113.25",
"cpu": "8 cores / 16 threads",
"gpu": "",
"ram": "64 GB DDR4",
"disk": "2 x 512 GB NVMe",
"os_id": 21,
"os_name": "Linux Ubuntu 22.04",
"os_type": "linux",
"order_status": "active",
"provision_status": "ready",
"estimated_ready_at": null,
"pending_action": null,
"price_buy": 8040000,
"fee_set_up": 2600000,
"price_renew": 8040000,
"billing_cycle": "onemonth",
"renew_auto": "on",
"listed_on_marketplace": false,
"time_buy": "2026-10-10",
"time_expire_moon": "2026-11-09",
"refunded_amount": null,
"features": {
"restart": true,
"reinstall": true,
"auto_renew": true,
"power": false,
"console": false,
"upgrade": false,
"change_cycle": false,
"change_ip": false
},
"allowed_actions": [
"renew",
"auto_renew",
"reboot",
"reinstall",
"delete"
]
}
],
"page": 1,
"limit": 50,
"total": 1
}
}/dedi/info
Chỉ đọcChi tiết một Dedicated Server: provision_status (provisioning · ready · failed · expired · deleted), estimated_ready_at (đơn chờ bàn giao), pending_action (yêu cầu khởi động lại / cài lại đang chờ), refunded_amount (đơn bị huỷ), features + allowed_actions. username/password/port CHỈ kèm khi khoá TOÀN QUYỀN, máy ready và dịch vụ đang hoạt động.
GET https://cloudmoon.net/api/v1/dedi/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/dedi/info?order_code=101026DEDIQWERTYUIOPAS' \
-H 'X-API-Key: ak_...'import requests
r = requests.get(
"https://cloudmoon.net/api/v1/dedi/info",
headers={"X-API-Key": "ak_..."},
params={"order_code": "101026DEDIQWERTYUIOPAS"},
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/dedi/info?order_code=101026DEDIQWERTYUIOPAS", {
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/dedi/info?order_code=101026DEDIQWERTYUIOPAS');
print_r($kq);{
"status": "success",
"msg": "OK",
"data": {
"order_code": "101026DEDIQWERTYUIOPAS",
"name": "DE80-02",
"plan": {
"product_id": 4,
"name": "DE80-02",
"region": "de"
},
"ip": "203.0.113.25",
"cpu": "8 cores / 16 threads",
"gpu": "",
"ram": "64 GB DDR4",
"disk": "2 x 512 GB NVMe",
"os_id": 21,
"os_name": "Linux Ubuntu 22.04",
"os_type": "linux",
"order_status": "active",
"provision_status": "ready",
"estimated_ready_at": null,
"pending_action": null,
"price_buy": 8040000,
"fee_set_up": 2600000,
"price_renew": 8040000,
"billing_cycle": "onemonth",
"renew_auto": "on",
"listed_on_marketplace": false,
"time_buy": "2026-10-10",
"time_expire_moon": "2026-11-09",
"refunded_amount": null,
"features": {
"restart": true,
"reinstall": true,
"auto_renew": true,
"power": false,
"console": false,
"upgrade": false,
"change_cycle": false,
"change_ip": false
},
"allowed_actions": [
"renew",
"auto_renew",
"reboot",
"reinstall",
"delete"
],
"username": "root",
"password": "S3cret-pass",
"port": 22,
"credentials_note": null
}
}/dedi/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 /dedi/quote {order_code, type: renew}; phí lắp đặt không thu lại. Dịch vụ tạm ngưng vì quá hạn vẫn gia hạn được; đơn chờ bàn giao · đã huỷ · hết hạn hẳn · đã xoá bị chối. Nhịp: 60 giây/đơn.
POST https://cloudmoon.net/api/v1/dedi/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) · REBUILDING (409) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · ORDER_CANCELLED (409) · IDEMPOTENCY_PENDING (409) · COOLDOWN (429) · IN_PROGRESS (429) · BUSY (429) · NOT_SUPPORTED (400) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/dedi/renew' \
-H 'X-API-Key: ak_...' \
-H 'Idempotency-Key: 7f9c2e4b-1a2b-4c3d-9e8f-0123456789ab' \
-H 'Content-Type: application/json' \
-d '{"order_code":"101026DEDIQWERTYUIOPAS"}'import uuid
import requests
r = requests.post(
"https://cloudmoon.net/api/v1/dedi/renew",
headers={"X-API-Key": "ak_...", "Idempotency-Key": str(uuid.uuid4())},
json={"order_code": "101026DEDIQWERTYUIOPAS"},
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/dedi/renew", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
"Idempotency-Key": randomUUID(),
},
body: JSON.stringify({ order_code: "101026DEDIQWERTYUIOPAS" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/dedi/renew', ['order_code' => '101026DEDIQWERTYUIOPAS'], bin2hex(random_bytes(16)));
print_r($kq);{
"order_code": "101026DEDIQWERTYUIOPAS"
}{
"status": "success",
"msg": "Gia hạn thành công",
"data": {
"order_code": "101026DEDIQWERTYUIOPAS",
"amount": 8040000,
"billing_cycle": "onemonth",
"time_expire_moon": "2026-12-09"
}
}/dedi/auto-renew
Toàn quyềnBật/tắt tự gia hạn (tới hạn hệ thống tự trừ ví, giá động như gia hạn tay). Đặt đúng giá trị đang có vẫn thành công.
POST https://cloudmoon.net/api/v1/dedi/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): ORDER_EXPIRED (409) · ORDER_DELETED (409) · ORDER_CANCELLED (409) · COOLDOWN (429) · IN_PROGRESS (429) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/dedi/auto-renew' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"101026DEDIQWERTYUIOPAS","enabled":false}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/dedi/auto-renew",
headers={"X-API-Key": "ak_..."},
json={"order_code": "101026DEDIQWERTYUIOPAS", "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/dedi/auto-renew", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "101026DEDIQWERTYUIOPAS", 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/dedi/auto-renew', ['order_code' => '101026DEDIQWERTYUIOPAS', 'enabled' => false]);
print_r($kq);{
"order_code": "101026DEDIQWERTYUIOPAS",
"enabled": false
}{
"status": "success",
"msg": "Đã tắt tự gia hạn",
"data": {
"order_code": "101026DEDIQWERTYUIOPAS",
"renew_auto": "off"
}
}/dedi/reboot
Toàn quyềnGửi YÊU CẦU khởi động lại cho kỹ thuật xử lý ⇒ HTTP 202; theo dõi pending_action ở /dedi/info. Mỗi lúc chỉ MỘT yêu cầu (khởi động lại hoặc cài lại) đang chờ — gửi thêm ⇒ 409 REQUEST_PENDING.
POST https://cloudmoon.net/api/v1/dedi/reboot| 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): REQUEST_PENDING (409) · REBUILDING (409) · RENEW_REQUIRED (409) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · ORDER_CANCELLED (409) · LISTED_ON_MARKETPLACE (409) · IN_PROGRESS (429) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/dedi/reboot' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"101026DEDIQWERTYUIOPAS"}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/dedi/reboot",
headers={"X-API-Key": "ak_..."},
json={"order_code": "101026DEDIQWERTYUIOPAS"},
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/dedi/reboot", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "101026DEDIQWERTYUIOPAS" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/dedi/reboot', ['order_code' => '101026DEDIQWERTYUIOPAS']);
print_r($kq);{
"order_code": "101026DEDIQWERTYUIOPAS"
}{
"status": "success",
"msg": "Đã ghi nhận yêu cầu khởi động lại",
"data": {
"order_code": "101026DEDIQWERTYUIOPAS",
"request": "restart",
"status": "pending",
"estimated_done_at": "2026-10-12T10:00:00+07:00",
"note": "Yêu cầu đã chuyển cho kỹ thuật — hỏi GET /dedi/info?order_code= (pending_action) tới khi xong"
}
}/dedi/reinstall
Toàn quyềnGửi YÊU CẦU cài lại hệ điều hành (máy bị XOÁ TRẮNG khi bắt đầu cài — sao lưu trước) ⇒ HTTP 202. os_id lấy từ /dedi/os?order_code=. Trong lúc chờ máy vẫn chạy với thông tin đăng nhập cũ. Mỗi lúc chỉ MỘT yêu cầu ⇒ 409 REQUEST_PENDING.
POST https://cloudmoon.net/api/v1/dedi/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ó | từ /dedi/os?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): REQUEST_PENDING (409) · REBUILDING (409) · RENEW_REQUIRED (409) · ORDER_EXPIRED (409) · ORDER_DELETED (409) · ORDER_CANCELLED (409) · LISTED_ON_MARKETPLACE (409) · NOT_SUPPORTED (400) · IN_PROGRESS (429) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/dedi/reinstall' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"101026DEDIQWERTYUIOPAS","os_id":21}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/dedi/reinstall",
headers={"X-API-Key": "ak_..."},
json={"order_code": "101026DEDIQWERTYUIOPAS", "os_id": 21},
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/dedi/reinstall", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "101026DEDIQWERTYUIOPAS", os_id: 21 }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/dedi/reinstall', ['order_code' => '101026DEDIQWERTYUIOPAS', 'os_id' => 21]);
print_r($kq);{
"order_code": "101026DEDIQWERTYUIOPAS",
"os_id": 21
}{
"status": "success",
"msg": "Đã ghi nhận yêu cầu cài lại hệ điều hành",
"data": {
"order_code": "101026DEDIQWERTYUIOPAS",
"request": "reinstall",
"status": "pending",
"os_id": 21,
"os_name": "Linux Ubuntu 22.04",
"estimated_done_at": "2026-10-12T10:00:00+07:00",
"note": "Yêu cầu đã chuyển cho kỹ thuật — hỏi GET /dedi/info?order_code= (pending_action) tới khi xong"
}
}/dedi/delete
Toàn quyềnXoá Dedicated Server — KHÔNG hoàn tiền, không khôi phục. Bắt buộc confirm = đúng order_code. Đơn chưa bàn giao không xoá được (409 REBUILDING) — muốn huỷ thì liên hệ hỗ trợ.
POST https://cloudmoon.net/api/v1/dedi/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) · ORDER_CANCELLED (409) · ORDER_EXPIRED (409) · LISTED_ON_MARKETPLACE (409) · IN_PROGRESS (429) · BUSY (429) · FAILED (400).
curl -X POST 'https://cloudmoon.net/api/v1/dedi/delete' \
-H 'X-API-Key: ak_...' \
-H 'Content-Type: application/json' \
-d '{"order_code":"101026DEDIQWERTYUIOPAS","confirm":"101026DEDIQWERTYUIOPAS"}'import requests
r = requests.post(
"https://cloudmoon.net/api/v1/dedi/delete",
headers={"X-API-Key": "ak_..."},
json={"order_code": "101026DEDIQWERTYUIOPAS", "confirm": "101026DEDIQWERTYUIOPAS"},
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/dedi/delete", {
method: "POST",
headers: {
"X-API-Key": "ak_...",
"Content-Type": "application/json",
},
body: JSON.stringify({ order_code: "101026DEDIQWERTYUIOPAS", confirm: "101026DEDIQWERTYUIOPAS" }),
});
console.log(res.status, await res.json());// cm_api(): xem mục "Client mẫu" ở trang Tổng quan
$kq = cm_api('POST', '/v1/dedi/delete', ['order_code' => '101026DEDIQWERTYUIOPAS', 'confirm' => '101026DEDIQWERTYUIOPAS']);
print_r($kq);{
"order_code": "101026DEDIQWERTYUIOPAS",
"confirm": "101026DEDIQWERTYUIOPAS"
}{
"status": "success",
"msg": "Đã xoá dịch vụ",
"data": {
"order_code": "101026DEDIQWERTYUIOPAS",
"order_status": "deleted",
"refunded": false
}
}