KiwiVM API

搬瓦工 KiwiVM API 教程:用命令查状态、查流量、做快照

KiwiVM 面板上能点的操作,大多也能用 API 完成:写个脚本每天查流量,定时做快照,或者看服务器有没有在运行。下面用本站测试机逐个调用常用接口,给出真实返回(主机名、IP 等已去掉)。

测试机逐个实测 真实返回已去敏 含报错代码

Steps

KiwiVM API 5 步

前两步拿到密钥、跑通第一次调用,后三步是常用接口、会改动服务器的接口和保管密钥。

  1. 找 VEID 和 Key
  2. 第一次调用
  3. 常用只读接口
  4. 改动服务器的接口
  5. 保管密钥
  6. 报错代码
1

在 KiwiVM 找到 VEID 和 API Key

登录 KiwiVM,左侧菜单点 API。页面上方显示这台 VPS 的 VEID(编号),点 Show API Key 显示密钥:

KiwiVM 的 REST API 页面:Show API Key 和 Reset API Key 按钮,VEID 已打码
KiwiVM:API 页(VEID 已打码)
  1. 1Reset API Key:重新生成密钥。密钥给别人看过、贴到过群里,就点这里换一个,脚本里也跟着换

每台 VPS 有自己的 VEID 和 API Key。这一页还写明:参数用 GET 或 POST 传都可以;账户下所有 VPS 的密钥,可以在客户区导出成 CSV 表格。

注意拿到 API Key 就能关机、重装这台 VPS,和 root 密码一样重要。保管方法见第 5 步。

2

第一次调用:查这台 VPS 的基本信息

接口地址是 https://api.64clouds.com/v1/接口名,每次带上 veid 和 api_key 两个参数。建议用 POST 传:密钥不会出现在网址里,也就不会留在浏览器历史和各种日志里。登录服务器后(或者在 macOS、Linux 的终端里)执行:

VEID=你的VEID
KEY=你的API密钥
curl -s -X POST https://api.64clouds.com/v1/getServiceInfo -d "veid=$VEID" -d "api_key=$KEY"

返回的是 JSON。本站测试机的结果(节选,主机名、IP、邮箱等已去掉):

{
    "vm_type": "kvm",
    "node_location_id": "USCA_2",
    "node_datacenter": "US: Los Angeles, California (DC2 AO)",
    "location_ipv6_ready": true,
    "plan": "kvmv2-20g",
    "plan_monthly_data": 1073741824000,
    "plan_max_ipv6s": 1,
    "os": "almalinux-9-x86_64",
    "data_counter": 5406758449,
    "data_next_reset": 1795131860,
    "suspended": false,
    "free_ip_replacement_interval": 0,
    ...
}

常用的几个字段:

字段意思本站测试机
node_datacenter所在机房US: Los Angeles, California (DC2 AO)
plan套餐代号kvmv2-20g(20G KVM PROMO)
plan_monthly_data每月流量,单位字节1000 GB
data_counter本月已用流量,单位字节约 5.0 GB
data_next_reset下次流量重置时间(Unix 时间戳)换算成北京时间是每月 20 日 07:44
os现在装的系统almalinux-9-x86_64
location_ipv6_ready、plan_max_ipv6s机房能不能用 IPv6、最多几个 IPv6 地址true、1
free_ip_replacement_interval免费换 IP 的间隔,0 就是没有0
suspended是否被暂停false
3

常用的只读接口:查状态、流量、可迁移机房

只读接口只查不改,随便调用不会影响服务器。本站在测试机上逐个调用过:

接口返回什么本站测试机实测
getServiceInfo套餐、机房、流量、系统等基本信息见第 2 步
getLiveServiceInfo在上面的基础上加实时状态:是否在运行、负载、可用内存、已用硬盘,还有一张控制台截图(base64 图片)ve_status 是 running
getRawUsageStats每 5 分钟一条的 CPU、进出流量、磁盘读写记录返回近 5,000 条,约 19 天
getAvailableOS能重装的系统模板16 个,从 CentOS 7 到 AlmaLinux 10、Ubuntu 26.04
migrate/getLocations能迁移去的机房,和每个机房的流量计费倍数6 个(洛杉矶 DC2、DC8,弗里蒙特,纽约,温哥华,阿姆斯特丹),倍数都是 1,迁移步骤见换机房
snapshot/list、backup/list快照和自动备份的列表2 个快照、5 个自动备份
getSuspensionDetails被暂停的次数和违规分数0 次、0 分(上限 1300)
getAuditLog操作记录:时间、来源 IP、做了什么有记录(含 IP,不展示)
getRateLimitStatus15 分钟和 24 小时内还剩多少调用点数979、19958

把常用的查询写成脚本,每天跑一次。下面这个脚本查运行状态、流量和硬盘(服务器自带 Python 3 就能用):

#!/bin/bash
# 保存为 /root/bwh-status.sh,再执行 chmod 700 /root/bwh-status.sh(只有 root 能读)
VEID=你的VEID
KEY=你的API密钥
curl -s -X POST https://api.64clouds.com/v1/getLiveServiceInfo -d "veid=$VEID" -d "api_key=$KEY" | python3 -c '
import json, sys, datetime
d = json.load(sys.stdin)
if d.get("error"):
    sys.exit("出错:%s %s" % (d["error"], d.get("message", "")))
bj = datetime.timezone(datetime.timedelta(hours=8))
reset = datetime.datetime.fromtimestamp(d["data_next_reset"], bj)
print("状态 %s,负载 %s" % (d["ve_status"], d["load_average"].split()[0]))
print("流量 %.2f / %d GB,下次重置 %s" % (d["data_counter"] / 2**30, d["plan_monthly_data"] / 2**30, reset.strftime("%d 日 %H:%M")))
print("硬盘已用 %.1f GB,可用内存 %d MB" % (d["ve_used_disk_space_b"] / 2**30, d["mem_available_kb"] // 1024))'

本站测试机的输出:

状态 running,负载 0.00
流量 5.04 / 1000 GB,下次重置 20 日 07:44
硬盘已用 1.8 GB,可用内存 873 MB

想每天自动跑,加一条定时任务:

crontab -e
# 加一行:每天 9 点(按服务器时区)查一次,结果追加到日志
0 9 * * * /root/bwh-status.sh >> /root/bwh-status.log 2>&1

只想查流量和重置时间,用流量教程第 6 步的命令更短。

4

会改动服务器的接口:先做快照再试

关机、重装、做快照这类接口和在面板上点按钮一样,一调用就会真的执行。本站在测试机上实测过这三个:

接口做什么本站测试机实测
stop关机重装前先用它关机
reinstallOS重装系统,参数 os 填 getAvailableOS 返回的系统名开机状态下调用会报 The server is currently running. Please stop it and try again.;先 stop 再调用,约 3 分钟开机、5 分钟能 SSH 登录,IP 不变;新 root 密码在接口返回和官方邮件里
snapshot/create做快照约 20 秒完成,期间 VPS 会自动重启,1 分钟内恢复;快照保存 30 天

重装的写法(以 AlmaLinux 9 为例,VEID、KEY 同第 2 步):

curl -s -X POST https://api.64clouds.com/v1/stop -d "veid=$VEID" -d "api_key=$KEY"
curl -s -X POST https://api.64clouds.com/v1/reinstallOS -d "veid=$VEID" -d "api_key=$KEY" -d "os=almalinux-9-x86_64"

注意重装会清空整块硬盘,先做快照或把数据下载下来,步骤见快照与备份和重装系统。开机、重启、迁移等其他接口列在 KiwiVM API 页下方,名字和参数以那里为准。

5

保管好 API Key

  • 用 POST 传密钥(本页的命令都是),不要拼进网址
  • 写了密钥的脚本设成只有 root 能读:chmod 700 脚本名
  • 不要把带密钥的脚本传到 GitHub、网盘,也不要截图发到群里
  • 定期看 KiwiVM 左侧的 Audit log(也可以用 getAuditLog 查),有不认识的来源 IP 就处理
  • 怀疑泄露,马上点 Reset API Key,再换掉脚本里的密钥

KiwiVM 登录本身的安全设置(两步验证、审计日志)见 SSH 密钥与安全设置。

Errors

常见报错

调用成功时返回里的 error 是 0;不是 0 就看 message。下面是本站在测试机上遇到过的报错:

返回内容原因怎么办
{"error": 700005, "message": "Authentication failure"}VEID 或 API Key 不对,或者密钥已经重置过(本站用错误密钥实测)回 KiwiVM 的 API 页核对;重置过密钥的,换成新密钥
{"error": 799999, "message": "API: invalid request"}接口名写错(本站用不存在的接口名实测)核对接口名的拼写
The server is currently running. Please stop it and try again.开机状态下调用了 reinstallOS先调用 stop 关机,再重装

In stock now

还没有搬瓦工 VPS?这 3 款现在有货

三款都用 KiwiVM 面板管理,买好后就能按本教程调用 API。

入门首选

20G DC6 CN2 GIA-E

$49.99 / 季

2 核 · 1 GB · 20 GB SSD · 500 GB/月 · 1 Gbps

洛杉矶 DC6 CN2 GIA-E 三网优化,最便宜的 CN2 GIA-E 线路。

去官网下单
站长推荐

40G CN2 GIA-E

$89.99 / 季

3 核 · 2 GB · 40 GB SSD · 2 TB/月 · 2.5 Gbps

15 个机房可免费切换,建站和长期使用最省心。

去官网下单
流量大

80G KVM PROMO

$59.99 / 季

4 核 · 4 GB · 80 GB SSD · 3 TB/月 · 1 Gbps

普通线路,硬盘和流量最多,适合下载、备份、放大文件。

去官网下单

按钮直达官方下单页,已预选季付(20G 还预选了洛杉矶 DC6),下单页可改其他付款周期。库存每 10 分钟同步,万一缺货,点进去会推荐同系列有货款。

FAQ

KiwiVM API 常见问题

KiwiVM API 要另外开通吗?

不用。每台 VPS 的 KiwiVM 左侧都有 API 页,点 Show API Key 就能看到密钥,直接调用即可,见第 1 步。

API Key 泄露了怎么办?

马上在 KiwiVM 的 API 页点 Reset API Key 重新生成,再把脚本里的密钥换掉;同时看一眼 Audit log 有没有不认识的操作,见 SSH 安全教程。

一个账户有好几台 VPS,API Key 一样吗?

不一样。每台 VPS 有自己的 VEID 和 API Key;官方 API 页写明,账户下所有 VPS 的密钥可以在客户区导出成 CSV 表格。

调用次数有限制吗?

有。getRateLimitStatus 会返回 15 分钟和 24 小时内还剩多少点数,每次调用都会扣点。本站测试机连续调用十几次后,两项分别还剩 979 和 19958。脚本不要写成每秒查一次。

返回 Authentication failure 是什么意思?

VEID 或 API Key 不对,或者密钥已经重置过。本站用错误的密钥调用,返回的是错误码 700005 和 Authentication failure,其他报错见报错代码。

能用 API 重装系统吗?

能,接口是 reinstallOS,系统名用 getAvailableOS 查。本站测试机实测:开机状态下直接调用会报错,要先调用 stop 关机;重装会清空硬盘,先做快照,见第 4 步。

QQ group

照着教程做卡住了?到 QQ 群里问

群里有补货提醒,也可以把报错截图发上来一起看。提问时请先把 IP、密码等信息打码。

QQ群:433051101 补货提醒 教程答疑
搬瓦工 VPS 补货与教程交流群二维码
扫码加入 QQ 群