TL;DR
invalid_request 是请求类错误。接口选错是一个可能原因,还要结合错误信息检查请求体和模型 ID。先核对模型支持的入口,再按该入口组织字段。
运行 Python 示例前,在同一个 Python 环境执行 python -m pip install requests。
三个入口怎么选
HiAPI 常用的三个生成入口如下;单个模型支持哪些入口,查它的模型页和公开模型目录。
| 入口 | 请求体重点 | 用途 |
|---|---|---|
/v1/tasks | model + input | 图片、视频、音频任务 |
/v1/chat/completions | model + messages | 支持聊天协议的模型 |
/v1/responses | model + input | 支持 Responses 的模型 |
supported_endpoint_types 中的 task、openai、openai-response 分别对应上面三个入口。目录还可能出现其他协议类型,遇到未列出的类型时打开该模型的接入文档。
只读检查模型支持的入口
设置 HIAPI_MODEL 为模型页上的完整模型 ID,运行以下脚本。它只读取公开目录,不提交生成任务。
import os
import requests
model_id = os.environ["HIAPI_MODEL"]
response = requests.get("https://api.hiapi.ai/api/pricing", timeout=30)
response.raise_for_status()
models = response.json()["data"]
model = next((m for m in models if m.get("model_name") == model_id), None)
if model is None:
raise SystemExit("Model not present in the public catalog; check its exact model ID")
print("model:", model["model_name"])
print("supported_endpoint_types:", model.get("supported_endpoint_types", []))
修复请求的四个步骤
- 检查实际请求的域名与路径,确认 Base URL 没有重复拼接
/v1。 - 对照模型页的完整 ID 和支持入口;展示名不能直接代替 API model ID。
- 同步调整请求体:聊天的
messages不能原样复制进任务接口;任务参数应放在input内。 - 重新阅读返回的 HTTP 状态和错误字段;仍失败时保留请求 ID、模型 ID、接口路径和脱敏请求体。
区分接口、参数和密钥错误
| 现象 | 下一步 |
|---|---|
| 400,提示请求不合法 | 检查接口、JSON、必填字段和字段类型 |
| 明确提示不支持当前协议 | 使用模型声明支持的入口 |
| 401,密钥无效或缺失 | 检查 Bearer 请求头及运行时环境变量 |
任务接口返回 MODEL_UNAVAILABLE | 检查模型 ID、可用状态与账号访问权限 |
任务接口的拒绝响应可包含顶层 error_code;其他入口可能使用 error.code。不要只用某一个字段判断全部错误。
常见问题
invalid_request 一定是接口选错吗?
不一定。请求字段、JSON 或缺少必填项也可能导致请求被拒。先读 message,再检查入口。
只改 URL 就能修好吗?
还要对照对应接口调整请求体。messages 与任务接口的 input 结构不同。
模型不在公开目录里怎么办?
核对完整 ID、模型页面和账号可见范围;不要自动替换为名字相近的模型。
这段检查代码会生成内容吗?
不会。代码只读取公开目录;实际提交生成请求时才进入任务流程。





