托管 API配置器所做的一切,均可通过 HTTP 完成。

承载令牌(Bearer token)的权限范围由你自行设定,每次写操作均支持幂等,采用游标分页,还有一个完全无需密钥即可访问的状态接口——因为你最需要轮询它的那一刻,很可能正是你的账户本身出问题的时刻。

端点13

快速入门

无需 SDK · 无版本变更意外 · 不会遇到速率限制

快速入门

从零开始,两次调用即可开通服务器。

在客户后台创建密钥,选择其权限范围,密钥只会显示一次。此账户没有主密钥,也无法事后扩大某个密钥的权限范围——需要更大权限时请另建一个。

1 — 查看您可以购买的内容

curl -s https://api.dediprivacy.com/v1/plans?family=vps \
  -H "Authorization: Bearer $DP_KEY"

2 — 部署它

curl -s -X POST https://api.dediprivacy.com/v1/servers \
  -H "Authorization: Bearer $DP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
        "plan":   "vps-4",
        "region": "ams",
        "image":  "debian-13",
        "cycle":  "12"
      }'

开通会从账户余额中扣款。若某次请求会导致余额透支,将返回失败并提示 402 以及确切的差额,而不是搭建出一台半成品的机器——不存在需要清理的半配置状态,后续也不会收到额外账单。

约定

每次调用都相同的部分,只需确定一次,无需反复查找。

基础 URL
https://api.dediprivacy.com/v1 仅支持 TLS、HTTP/2,且没有可供重定向的未加密端口。明文请求会被直接拒绝,而不是升级处理,因为“升级”意味着请求已经在网络上明文传输过一次了。
身份验证
Bearer 令牌,按密钥 密钥在客户区创建,权限范围由您选择,只会显示一次,并以哈希形式存储。此 API 没有主密钥,也没有基于密码的身份验证。
内容类型
application/json 适用于请求和响应。时间一律为 UTC 时区的 RFC 3339 格式,金额一律为以美分为单位的整数,不存在任何与地区相关的格式。
幂等性
每个 POST 请求均带 Idempotency-Key 重复使用相同的密钥会返回最初的响应,而不会重复开通两次资源。密钥会被记住 24 小时,这一时长长于任何重试循环应当运行的时间。
速率限制
每分钟 600 次请求 按密钥计算,在 X-RateLimit-Remaining 中返回。配置类调用另行限制为每小时 60 次;如确有影响,请告知我们。
分页
游标,而非页码 每个列表响应中都带有 next_cursor。offset 分页在底层数据集发生变化时会悄悄跳过某些行,我们不愿把这种缺陷带给您。

标识符

数据读取自与公开价格列表和配置器相同的目录。新增地区会自动出现在这里,无需任何人手动编辑此页面。

地区

  • kef雷克雅未克
  • otp布加勒斯特
  • sof索非亚
  • kiv基希讷乌
  • zrh苏黎世
  • ams阿姆斯特丹
  • pty巴拿马城
  • sin新加坡

系列

  • vps云 VPS
  • rdpWindows RDP
  • 独享独立服务器
  • gpuGPU 计算
  • 私有云私有云
  • web-hosting网站托管
  • 存储对象存储 & 块存储
  • colocationColocation
  • 自定义自定义配置

周期

  • 11 月
  • 33 月s, −5 %
  • 1212 月s, −20 %
  • 2424 月s, −35 %

端点

目录

所有可订购的产品,均附实时价格。无需登录认证——这些数字与公开价目表所用的数据完全一致。

GET /regions 查看地区

每个地区均列出其标识符、城市、国家及当前运行状态。

响应

{
  "data": [
    { "id": "ams", "city": "Amsterdam", "country": "Netherlands",
      "status": "operational", "uplink_gbit": 600 }
  ]
}
GET /plans 查看套餐

可通过 ?family=vps 按产品系列筛选。价格为月费,以分为单位,尚未计入周期折扣。

响应

{
  "data": [
    { "id": "vps-4", "family": "vps", "cores": 4, "ram_gb": 8,
      "disk_gb": 160, "price_cents": 1100, "regions": ["ams","kef"] }
  ],
  "next_cursor": null
}
GET /images 查看镜像

提供某一系列的操作系统镜像,并注明每一个的授权情况。

响应

{
  "data": [
    { "id": "debian-13", "name": "Debian 13", "licence": "included" },
    { "id": "win-2025", "name": "Windows Server 2025", "licence": "included" }
  ]
}

端点

服务器

创建、查看和控制机器。资源配置会从账户余额中扣款;一旦请求会导致余额透支,就会返回 402 错误及确切的差额,而不会留下一台半成品机器。

POST /servers 部署服务器

立即返回状态“provisioning”。请轮询该资源,或使用 webhook 接收通知。

请求

{
  "plan": "vps-4",
  "region": "ams",
  "image": "debian-13",
  "cycle": "12",
  "label": "edge-01",
  "ssh_keys": ["ssh-ed25519 AAAA..."]
}

响应

{
  "id": "srv_8Kq2",
  "status": "provisioning",
  "region": "ams",
  "ipv4": null,
  "charged_cents": 10560,
  "renews_at": "2027-07-28T00:00:00Z"
}
GET /servers 查看服务器

账户上的全部记录,按最新排序。

响应

{
  "data": [
    { "id": "srv_8Kq2", "label": "edge-01", "status": "active",
      "region": "ams", "ipv4": "203.0.113.10",
      "ipv6": "2001:db8:1234:5678::2" }
  ],
  "next_cursor": null
}
GET /servers/{id} 找回服务器

完整详情,包括规格、地址及下一次续费日期。

响应

{
  "id": "srv_8Kq2",
  "status": "active",
  "plan": "vps-4",
  "image": "debian-13",
  "cycle": "12",
  "renews_at": "2027-07-28T00:00:00Z"
}
POST /servers/{id}/actions 对服务器执行操作

一个接口,一个动作字段:重启、关机、开机、重建、调整规格、rdns。

请求

{
  "action": "rebuild",
  "image": "ubuntu-26-04"
}

响应

{
  "id": "act_3Xf9",
  "action": "rebuild",
  "status": "running"
}
DELETE /servers/{id} 取消服务器

服务将持续运行至已付费周期结束。传入 ?immediate=true 可立即销毁并从今天起停止计费。

响应

{
  "id": "srv_8Kq2",
  "status": "cancelled",
  "ends_at": "2027-07-28T00:00:00Z"
}

端点

账单

一个余额账户支撑所有服务。不存在“发票”这一对象,因为没有什么需要去追讨——每项服务会在其续费日从余额中扣款。

GET /balance 获取余额

当前余额、已锁定用于续费的金额,以及按目前的消耗速度还能维持多久。

响应

{
  "balance_cents": 48250,
  "committed_cents": 12400,
  "runway_days": 117
}
POST /topups 发起充值

返回所选资产的收款地址。任何奖励都会在付款确认的同一时刻发放。

请求

{
  "amount_cents": 100000,
  "asset": "XMR"
}

响应

{
  "id": "top_5Wc1",
  "asset": "XMR",
  "address": "4A...",
  "amount": "3.417",
  "bonus_cents": 30000,
  "expires_at": "2026-07-28T18:00:00Z"
}
GET /ledger 列出账本条目

每一笔收入与支出,以及各自对应的服务。这就是我们关于您付款记录所保存的全部信息。

响应

{
  "data": [
    { "at": "2026-07-28T16:04:00Z", "cents": -1100,
      "kind": "renewal", "ref": "srv_8Kq2" }
  ]
}

端点

状态

该接口公开且无需身份验证,因此可以被不持有你密钥的系统查询——即使出问题的正是你的账户,它也仍能响应。

GET /status 当前状态

与状态页面相同的数字,均由同一份事件记录计算得出。

响应

{
  "state": "operational",
  "open_incidents": 0,
  "uptime_90d": 99.9971,
  "regions": { "ams": "operational", "kef": "operational" }
}
GET /incidents 事件列表

记录本身可按地区和日期筛选。

响应

{
  "data": [
    { "id": "inc_71", "region": "otp", "severity": "partial",
      "started_at": "2026-06-07T02:14:00Z",
      "unreachable_seconds": 1080 }
  ]
}

错误

每一次故障都带有一个稳定的 代码 以及一条写给真人看的说明。代码需要一致,说明文字则可以不断改进。

400 invalid_request 请求体解析失败,或某个字段类型错误。消息中会指明具体字段。
401 未经身份验证 没有密钥、密钥格式有误,或密钥已被吊销。
403 scope_missing 该密钥有效,但创建时未包含此调用所需的权限范围。权限范围在创建密钥时确定,事后无法扩大。
402 insufficient_funds 余额不足以支付。响应中携带 required_cents 和 balance_cents,因此您无需再次调用即可采取行动。
404 not_found 此账户上没有该资源。该回复被刻意设计为与查询他人账户资源时的回复完全一致。
409 冲突 该资源正忙 — 通常是那台服务器上已有一个操作正在运行。
422 不可用 请求本身有效,但目前无法执行:该套餐在此区域缺货,或该机型系列不提供此镜像。
429 rate_limited Retry-After 已设置,其值真实反映情况,而非固定常数。
5xx server_error 我方原因所致。使用同一个 Idempotency-Key 重试是安全的 — 这正是它的用途。

A 404 对他人账户下资源的响应,与对从未存在过的资源的响应逐字节相同。这是刻意为之:可区分的响应会把一个 API 变成用于枚举他人基础设施的探测工具。