跳到主要内容

报价

一份报价就是一台机器上可租用的一个切片:1、2、4 或 8 张 GPU,按整个切片定价。租用 GPU 页面就建立在这三个端点之上。概念说明见报价与切片

列出报价

curl -s "$SUPERHEAT_API/v1/offers?gpu_model=H100%20SXM&num_gpus=2&sort=price_asc" \
-H "Authorization: Bearer $SUPERHEAT_KEY"

GET /v1/offers 返回 {"items": [...]}。不带任何查询参数时,你会拿到全部可用报价,最便宜的在前。

筛选参数

参数类型默认值匹配
gpu_model字符串GPU 型号的精确匹配,例如 H100 SXMH200 SXM。区分大小写和空格。
num_gpus整数切片大小:1248
region字符串区域代码,例如 US-CA;或国家代码,例如 US
min_vram_gb整数每张 GPU 显存至少这么多的报价
max_price_per_hour_microusd整数整个切片的小时价格不高于此值的报价,单位为百万分之一美元:$3.00 就是 3000000
include_rented布尔falsetrue 时,售罄的报价(available_units0)会和仍有余量的一起返回。已下架的报价永远不会返回
sort枚举price_asc见下

多个筛选条件之间是 AND 关系。未知的 sort 值会被以 422 拒绝。

排序取值

取值排序依据
price_asc切片小时价格,最便宜的在前
price_desc切片小时价格,最贵的在前
tflops_desc切片吞吐,最高的在前
vram_desc每张 GPU 的显存,最高的在前

响应字段

字段类型含义
iduuid部署时把它作为 offer_id 传入
gpu_model字符串切片里的 GPU 型号
num_gpus整数切片里的 GPU 数量
available_units整数这台机器当前还能提供多少份该形态。0 表示售罄,而不是已下架
capacity_units整数上限:机器完全空闲时能提供多少份
vram_gb整数每张 GPU 的显存
tflops浮点数整个切片的吞吐
cuda_version字符串主机提供的 CUDA 版本
vm_capable布尔vm 启动模式的模板能否在这里运行
disk_quota_capable布尔主机是否对每个实例强制执行磁盘配额。见下文
price_per_hour_microusd整数整个切片的价格,按小时计
storage_price_per_gb_hour_microusd整数磁盘价格,每 GB 每小时
max_duration_hours整数或 null租用时长上限,如果这份报价设了的话
status字符串API 返回的任何东西上它永远是 available。见下文
machine对象切片所在的主机

status 说的是"在架还是已下架",不是"空闲还是被占"。唯一的另一个取值是 inactive,意思是这份报价已下架 —— 机器没了、它的 GPU 型号变了,或者已经没有定价规则能匹配上它 —— 而已下架的报价会被从列表里过滤掉,在详情端点上返回 404。售罄是 available_units0。不存在 rented 这个状态:一台 2 卡机器会把它的 1x 形态卖两次,所以同一个形态可以既被租走、又同时仍然可租。

disk_quota_capable 说的是这台机器能不能把你按住在你申请的那个 disk_gb 上。无论哪种情况,你都是按那个数字计费的。只有当主机把 Docker 的存储放到了带项目配额的 XFS 上,它才是 true,而那是机器所有者的一个可选步骤,所以 false 会很常见。在一台 false 的机器上,租这台机器的所有人共用一个卷,一个写得比他买的多的同租者可以在你脚下把它写满;disk_gb 是目录卖给你的一个上限,不是给你留出来的一份额度。在一台 true 的机器上,它是按实例强制执行的配额。控制台在报价卡片上把这一点显示为有保障还是共享

machine 对象带有 hostnameregioncountry_codecpu_modelcpu_coresram_gbdisk_typedisk_gbnet_up_mbpsnet_down_mbpspcie_genpcie_widthreliabilityverifiednext_maintenance

machine.disk_gb 是整个卷的大小,它是你部署时能申请的 disk_gb 的一个上界,而不是保证你能拿到那么多:有 50 GB 是留给主机自己的,而这台机器上其他租客已经占掉的部分也要从剩下的里面扣。申请超过剩余量会返回 409 MACHINE_DISK_EXHAUSTED,并附上当时真正可用的数字。

machine.reliability 在这台主机从未被测量过时是 null,这和 0.0 不是同一个说法。machine.next_maintenance 是主机安排这台机器下线的时间,或者 null。它取的是尚未开始、或仍在进行中的最早那个窗口的开始时间,所以它可能是过去的时间。把它当成一个提醒而不是一个保证 —— 主机可以在你租下机器一分钟之后就排一个窗口,而一个不到大约 75 分钟就开始的窗口会让部署以 409 MACHINE_IN_MAINTENANCE 失败。

价格由 Superheat 设定,不是由机器所有者设定;你租下报价时,报价上的价格会被快照到实例上。之后目录里的价格变动,不会改变你正在支付的费率。

获取单份报价

curl -s "$SUPERHEAT_API/v1/offers/5d2f9c31-8b64-4c0e-9a77-2e0f1b6a4c11" \
-H "Authorization: Bearer $SUPERHEAT_KEY"

按上面的结构返回单份报价,无论售罄与否。未知的和已下架的报价返回 404 OFFER_NOT_FOUND

部署之前重新读的是 available_units,不是 status。在你的列表调用和创建调用之间,最后一份空闲可能被人抢走,这时 POST /v1/instances 会回你 409 OFFER_UNAVAILABLE

目录的新鲜度

curl -s "$SUPERHEAT_API/v1/catalog/status" \
-H "Authorization: Bearer $SUPERHEAT_KEY"
{
"last_synced_at": "2026-07-24T11:04:12.907Z",
"last_error": null,
"sync_enabled": true,
"unpriced_gpu_models": []
}
字段类型含义
last_synced_at时间戳或 null目录上一次成功刷新的时间
last_error字符串或 null最近一次刷新失败的信息,如果有的话
sync_enabled布尔目录到底会不会自动刷新
unpriced_gpu_models字符串数组上一次刷新因为 Superheat 没有对应价格而扣下的 GPU 型号

刷新失败时会保留上一份目录,而不是把它清空,所以 last_synced_at 很旧就意味着你读到的报价可能已经租不到了。这种情况下市场会显示一条过期横幅;在脚本里,把过期的时间戳当成会遇到 409 OFFER_UNAVAILABLE 的理由,换下一份报价重试。

出现在 unpriced_gpu_models 里的型号根本不会产生报价,而不是产生一份价格瞎编的报价,所以单看 /v1/offers,这类硬件和"根本没人在托管的硬件"是分不出来的。这个字段是区分两者的唯一办法:如果你找的型号列在这里,说明容量存在但还不能出租,而对着 /v1/offers 轮询它永远不会成功。