Bỏ qua tới nội dung chính
VNSO
API v1

Quản lý toàn bộ hạ tầng bằng code

Mọi thao tác làm được trên portal đều có endpoint tương ứng. API REST theo chuẩn, xác thực bằng bearer token, phản hồi JSON và có Terraform provider chính thức.

Bắt đầu nhanh

Cài công cụ dòng lệnh và tạo máy chủ đầu tiên trong ba câu lệnh.

bash
# Cài đặt CLI
npm install -g @vnso/cli

# Đăng nhập bằng token lấy từ portal
vnso auth login

# Tạo máy chủ và chờ tới khi sẵn sàng
vnso server create --plan vcloud-05 --region hcm-1 --wait

Xác thực

Mọi yêu cầu cần header Authorization chứa bearer token. Token được tạo trong mục Cài đặt của portal và có thể giới hạn quyền theo phạm vi cũng như theo dải IP.

bash
curl https://api.vnso.vn/v1/servers \
  -H "Authorization: Bearer vnso_pat_9f2c1a8d3e5b7c4f"

Token có ba mức phạm vi: read chỉ đọc, write tạo và sửa tài nguyên, và admin bao gồm cả thanh toán cùng quản lý thành viên. Luôn dùng phạm vi hẹp nhất đủ dùng.

Tạo máy chủ

Yêu cầu trả về ngay lập tức với trạng thái provisioning. Máy chủ chuyển sang running sau trung bình 55 giây.

curl -X POST https://api.vnso.vn/v1/servers \
  -H "Authorization: Bearer $VNSO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "web-prod-01",
    "region": "hcm-1",
    "plan": "vcloud-05",
    "image": "ubuntu-24-04-x64",
    "ssh_keys": ["key_9f2c1a"],
    "backups": true,
    "ipv6": true,
    "tags": ["production", "web"]
  }'

Phản hồi 202 Accepted

json
{
  "server": {
    "id": "srv_8f2a1c9d",
    "name": "web-prod-01",
    "status": "provisioning",
    "region": { "slug": "hcm-1", "name": "TP. Hồ Chí Minh" },
    "plan": { "slug": "vcloud-05", "vcpu": 4, "memory_mb": 8192, "disk_gb": 100 },
    "image": { "slug": "ubuntu-24-04-x64", "name": "Ubuntu 24.04 LTS" },
    "networks": {
      "v4": [{ "address": "103.75.184.22", "type": "public" }],
      "v6": [{ "address": "2405:4802:1e:a::22", "type": "public" }]
    },
    "backups": true,
    "tags": ["production", "web"],
    "created_at": "2026-09-07T14:22:03+07:00",
    "price": { "hourly_vnd": 820, "monthly_vnd": 480000 }
  }
}

Danh sách endpoint

Base URL: https://api.vnso.vn

GET/v1/serversLiệt kê toàn bộ máy chủ trong tổ chức
POST/v1/serversTạo máy chủ mới, trả về ngay khi bắt đầu cấp phát
GET/v1/servers/{id}Xem chi tiết một máy chủ
PATCH/v1/servers/{id}Đổi tên, gắn nhãn hoặc bật tự động sao lưu
POST/v1/servers/{id}/actionsKhởi động lại, tắt, đổi cấu hình, dựng lại
DELETE/v1/servers/{id}Xoá máy chủ và giải phóng tài nguyên
GET/v1/snapshotsDanh sách snapshot đã tạo
POST/v1/volumesTạo ổ đĩa rời và gắn vào máy chủ
POST/v1/load-balancersTạo load balancer lớp 4 hoặc lớp 7
POST/v1/kubernetes/clustersTạo cụm Kubernetes có quản trị
GET/v1/bucketsDanh sách bucket Object Storage
GET/v1/domains/{name}/recordsĐọc bản ghi DNS của tên miền
GET/v1/billing/usageMức tiêu thụ theo giờ của kỳ hiện tại
GET/v1/invoicesDanh sách hoá đơn và liên kết tải PDF

Xử lý lỗi

Lỗi trả về mã HTTP chuẩn kèm thân JSON có cấu trúc cố định, luôn có mã lỗi máy đọc được và thông điệp tiếng Việt cho người đọc.

json
{
  "error": {
    "code": "insufficient_balance",
    "message": "Số dư ví không đủ để tạo tài nguyên này.",
    "details": {
      "required_vnd": 480000,
      "available_vnd": 120000
    },
    "request_id": "req_3d9f81ac",
    "docs_url": "https://vnso.vn/docs/api/errors#insufficient_balance"
  }
}

Giới hạn tần suất

Mỗi phản hồi kèm header X-RateLimit-Remaining và X-RateLimit-Reset.

Bậc tài khoảnYêu cầu đọcYêu cầu ghiBurst
Miễn phí600 / phút60 / phút30
Trả phí3.000 / phút300 / phút150
Doanh nghiệpThoả thuậnThoả thuậnThoả thuận

Webhook

Đăng ký URL để nhận sự kiện thời gian thực. Mỗi payload được ký HMAC-SHA256 trong header X-VNSO-Signature và được thử lại theo cấp số nhân trong 24 giờ nếu bạn phản hồi khác 2xx.

server.createdserver.readyserver.destroyedserver.resizedsnapshot.completedbackup.failedinvoice.issuedinvoice.paidwallet.low_balanceincident.openedincident.resolved

SDK và công cụ

@vnso/sdk

Node.js và TypeScript

npm install @vnso/sdk

vnso-python

Python 3.9 trở lên

pip install vnso

vnso-go

Go 1.21 trở lên

go get github.com/vnso/vnso-go

terraform-provider-vnso

Terraform và OpenTofu

source = "vnso/vnso"

@vnso/cli

Công cụ dòng lệnh

npm install -g @vnso/cli

vnso-ansible

Ansible collection

ansible-galaxy collection install vnso.cloud