每个请求都有可引用的 ID
当某个请求的表现不符合预期时,沟通最快的方式就是它的 id。Hyperouter 接受的每个请求都有一个 id,它会随响应返回,也是查询该请求记录的键。
id 在哪里
id 是一个 UUID,文档中称为请求 id。它位于响应体中,各接口的字段名不同:
| 请求 | id 的位置 |
|---|---|
POST /v1/chat/completions | 聊天补全的 id。 |
POST /v1/images/generations, POST /v1/images/edits | 图像响应的 id。使用 Prefer: respond-async 时,为 202 中的 id。 |
POST /v1/videos 及其他视频调用 | Video 对象的 id。 |
关于已继续运行的任务的错误,例如图像的 503 timeout | error.generation_id。 |
在 Idempotency-Key 下重复的聊天补全 | 409 idempotency_key_replayed 的 error.generation_id:即首次请求的 id。 |
文档中没有定义包含请求 id 的响应头,因此请从响应体中读取 id。 请在你自己的代码中,把 id 和这次调用记录在一起:
res = client.chat.completions.create(
model="x-ai/grok-4.7",
messages=[{"role": "user", "content": "Hello"}],
)
log.info("hyperouter request %s cost=%s", res.id, res.usage.cost)
const res = await client.chat.completions.create({ model: "x-ai/grok-4.7", messages: [{ role: "user", content: "Hello" }], }); console.log("hyperouter request", res.id);
usage.cost 字段是 Hyperouter 在 usage 对象上新增的,因此带类型的 SDK 可能没有声明它;该值就在 JSON 中。
查询请求
GET /v1/generations/{id} 返回你的某个请求的记录,任何类型均可:
curl https://api.hyperouter.app/v1/generations/0194f2c4-7a1e-7b3c-9d02-5f6a1c0e8b21 \
-H "Authorization: Bearer $HYPEROUTER_API_KEY"
记录包含 kind(chat、image 或 video)、model、status(queued、submitting、running、done 或 failed)、created_at 和 finished_at、usage 及其 cost、ttft_ms 和 latency_ms,请求失败时还有带 code 和 message 的 error。对于已完成的聊天请求,provider_name 说明由哪家服务商处理。对于图像和视频,outputs 包含签名链接,链接有效期 24 小时,记录在请求后保留 30 天。
当服务商没有返回 token 数、由 Hyperouter 自行统计时,usage_estimated 为 true。
记录中从不包含提示词和补全文本。Hyperouter 不会通过任何 API 或控制台页面返回它们。
不是 UUID、不存在或属于其他账户的 id,会返回 404 not_found。你只能读取自己的请求。
在工单中引用
账单、充值和 API 方面的问题,请在控制台中提交工单,工作人员会在同一个工单中回复。反馈具体某个请求时,请附上响应中的 id。
一份有用的反馈包含三点:id、你的预期,以及实际得到的结果。如果有,请贴上 GET /v1/generations/{id} 返回的状态和 error。有了 id,工作人员就能直接找到这个请求,而不必让你再去描述它。
如果错误响应中没有 id,请改为提供其状态码、code 和请求的时间。
核对支出
同一个 id 也能回答一个请求花了多少钱。usage.cost 是以美元计的费用,为 JSON 数字。如果你在自己的数据库中把 id 与每个任务一起保存,就可以把你的记录与 Hyperouter 的逐条对应。聊天、图像和视频的做法完全一致。
下一步
- 生成记录列出了记录的所有字段。
- 用 Idempotency-Key 安全重试介绍了重复聊天请求的
409如何返回首次请求的 id。 - 可以据此处理的错误介绍了错误对象和
error.generation_id。