概览
FlexDedi API 是一套 REST API。请求和响应均通过 HTTPS 以 JSON 格式传输,时间戳采用 UTC 时间的 ISO 8601 格式,每个对象都有带前缀的字符串 ID,例如服务器为 srv_7f3a,SSH 密钥为 key_2b81。当前版本为 v1;不兼容的变更只会通过新版本发布,绝不会直接改动现有版本。
身份验证
在 Authorization 请求头中以 Bearer 令牌形式发送 API 密钥。密钥分为只读和读写两种,均可随时吊销。不要把密钥写进源代码或留在 shell 历史记录中:请从环境变量或密钥管理器中读取。
curl -s https://api.flexdedi.com/v1/servers \
-H "Authorization: Bearer $FLEXDEDI_TOKEN"请求与分页
请求体以 JSON 格式发送,并设置 Content-Type: application/json。列表类接口返回一个 data 数组和一个 meta 对象;使用 page 和 per_page(默认 25,最大 100)进行分页。
{
"data": [
{ "id": "srv_7f3a", "plan": "pro-32", "location": "fra", "status": "active" }
],
"meta": { "page": 1, "per_page": 25, "total": 1 }
}错误
错误使用标准 HTTP 状态码,并返回 JSON 响应体,其中包含供程序识别的 code 和便于人阅读的 message。
| 状态 | 含义 |
|---|---|
400 | 请求格式有误,例如 JSON 无效。 |
401 | API 密钥缺失、无效或已被吊销。 |
403 | 密钥为只读权限,或资源属于其他账户。 |
404 | 资源不存在。 |
409 | 服务器正在执行其他操作,例如重装系统。 |
422 | 参数校验失败,例如所选套餐在该机房不可用。 |
429 | 请求过多;请在 Retry-After 指定的等待时间后重试。 |
5xx | 我们这边出现故障;请按退避策略重试。 |
{
"error": {
"code": "plan_unavailable",
"message": "Plan max-192 is not available in location nyc."
}
}速率限制
每个响应都包含 X-RateLimit-Limit、X-RateLimit-Remaining 和 X-RateLimit-Reset 响应头。超出限制时,API 返回 429,并附带以秒为单位的 Retry-After 响应头。对于耗时较长的操作,请每隔 15 到 30 秒轮询一次,而不是在紧密循环中反复请求。
套餐
GET/plans
列出可订购的服务器配置,包括硬件、端口速率、以美元计的月费,以及每款配置可用的机房。
{
"data": [
{
"id": "pro-32",
"name": "Pro 32",
"cpu": "AMD EPYC 9355P",
"cores": 32,
"memory_gb": 384,
"storage": "2 × 3.84 TB NVMe Gen5",
"port": "25 Gbps",
"price_monthly_usd": 749,
"delivery": "minutes",
"locations": ["nyc", "iad", "dfw", "lax", "ams", "fra", "lon", "sin"]
}
]
}机房位置
GET/locations
列出各数据中心机房,包括代码(nyc、iad、dfw、lax、ams、fra、lon、sin、tyo、syd)、城市、国家以及该机房可用的套餐。
系统镜像
GET/os-images
列出可安装的系统镜像,例如 ubuntu-24.04、debian-13、almalinux-9、rocky-9、proxmox-9 和 windows-2025。订购或重装时请使用其 id。
服务器
GET/servers
列出你的服务器。可按 location、plan 或 status(provisioning、active、reinstalling、rescue、off)筛选。
POST/servers
订购服务器并开始开通。响应为新服务器对象,状态为 provisioning;请持续轮询,直到状态变为 active。该订单的计费方式与在控制面板中下单相同。
| 字段 | 类型 | 说明 |
|---|---|---|
plan | string | 必填。来自 GET /plans 的套餐 ID,例如 pro-32。 |
location | string | 必填。该套餐可用的机房代码。 |
os | string | 必填。来自 GET /os-images 的镜像 ID。 |
hostname | string | 可选。将设置到安装好的系统中。 |
ssh_keys | array | 可选。要为 root 用户安装的已保存 SSH 密钥的名称或 ID。 |
curl -s -X POST https://api.flexdedi.com/v1/servers \
-H "Authorization: Bearer $FLEXDEDI_TOKEN" \
-H "Content-Type: application/json" \
-d '{"plan":"pro-32","location":"fra","os":"ubuntu-24.04","hostname":"db-1","ssh_keys":["ops-laptop"]}'{
"id": "srv_9c4d",
"plan": "pro-32",
"location": "fra",
"os": "ubuntu-24.04",
"hostname": "db-1",
"status": "provisioning",
"ipv4": null,
"ipv6": null,
"created_at": "2026-11-02T14:05:31Z"
}GET/servers/{id}
返回单台服务器的信息,包括状态、套餐、机房、IPv4 地址、IPv6 前缀和主机名。
PATCH/servers/{id}
更新控制面板中显示的标签或主机名。不会更改正在运行的操作系统内部的主机名。
DELETE/servers/{id}
取消服务器。服务器将保持运行至已付费周期结束,随后其硬盘数据将被清除。添加 ?immediately=true 可立即停机并清除数据;当前周期的费用不予退还。
电源与重装
POST/servers/{id}/actions/{action}
通过管理控制器执行电源操作:reboot(ACPI 重启)、reset(硬重置)、power-on、power-off 或 power-cycle。响应为状态已更新的服务器对象。
curl -s -X POST https://api.flexdedi.com/v1/servers/srv_7f3a/actions/reboot \
-H "Authorization: Bearer $FLEXDEDI_TOKEN"POST/servers/{id}/actions/reinstall
使用 os 重装服务器,并可选指定 hostname 和 ssh_keys。此操作会清除所有硬盘。新系统就绪前,状态为 reinstalling。
curl -s -X POST https://api.flexdedi.com/v1/servers/srv_7f3a/actions/reinstall \
-H "Authorization: Bearer $FLEXDEDI_TOKEN" \
-H "Content-Type: application/json" \
-d '{"os":"debian-13","hostname":"web-2","ssh_keys":["ops-laptop"]}'POST/servers/{id}/actions/rescue
让服务器从通过网络加载的救援系统启动,硬盘上已安装的系统保持不变。发送 {"enable": false} 即可退出救援模式,重新从硬盘启动。参见重装与救援。
IP 地址与反向 DNS
GET/servers/{id}/ips
列出分配给服务器的 IPv4 地址和 IPv6 前缀,以及对应的反向 DNS 记录。
PUT/servers/{id}/ips/{ip}/rdns
通过 {"ptr": "mail.example.com"} 为地址设置反向 DNS(PTR)记录。正向记录应解析到同一地址,邮件服务器尤其需要注意。
私有 VLAN
GET/vlans
列出你的私有网络及其所在机房和 VLAN ID。私有网络用于连接同一机房内的服务器;内网流量不计费。
POST/vlans/{id}/servers
通过 {"server_id": "srv_7f3a"} 将同一机房内的服务器接入私有网络。然后按照内网配置中的说明,在操作系统中配置 VLAN 接口。
SSH 密钥
GET/ssh-keys
列出你账户中保存的公钥。
POST/ssh-keys
通过 {"name": "ops-laptop", "public_key": "ssh-ed25519 AAAA…"} 保存公钥,之后订购或重装时即可按名称引用。
DELETE/ssh-keys/{id}
删除已保存的密钥。已安装到服务器上的密钥不会被移除。
带宽
GET/servers/{id}/bandwidth
返回由 from 和 to(ISO 8601)指定时段内的入站和出站流量,采样间隔为 5 分钟。流量不限量:这些数据仅用于监控,不用于计费。
Terraform
Terraform Provider 使用同一个 API 密钥,从环境变量 FLEXDEDI_TOKEN 中读取。flexdedi_server 资源对应 POST /servers;销毁该资源即取消服务器。
terraform {
required_providers {
flexdedi = { source = "flexdedi/flexdedi" }
}
}
resource "flexdedi_server" "web" {
plan = "core-16"
location = "ams"
os = "ubuntu-24.04"
hostname = "web-1"
ssh_keys = ["ops-laptop"]
}
output "web_ipv4" {
value = flexdedi_server.web.ipv4
}