400错误表明请求体格式错误或参数缺失,需检查Authorization头空格、模型ID完整性、JSON语法及必填字段(如messages不能为空数组),并清除工具缓存。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

火山引擎API Key绑定后调用返回400,说明请求本身存在格式错误或参数缺失,不是密钥无效也不是权限不足——此时控制台里Key状态明明正常,但接口就是不认你的请求体。
先确认是不是API Key填错了位置
检查请求头中 Authorization 字段是否写成 【Bearer 后必须有一个英文空格】,例如:Authorization: Bearer sk-xxx。少这个空格会直接返回400,且错误信息里不提示具体原因,只报“invalid request”。
用 curl 测试时别漏掉 -H 参数:curl -X POST "https://ark.cn-beijing.volces.com/api/v3/chat/completions" -H "Authorization: Bearer sk-xxx" -H "Content-Type: application/json" -d '{"model":"skylark2-pro-4k","messages":[]}'。
检查模型ID是否在当前端点可用
方法一:调用模型列表接口预检
发送 GET 请求到 https://ark.cn-beijing.volces.com/api/v1/models,带上同样的 Authorization 头。如果返回 400,说明 Key 或区域配置有根本性问题;如果返回 200 但列表为空,说明该区域未开通对应模型。
方法二:核对控制台已开通模型 ID
登录火山引擎控制台 → 进入「方舟」→「模型服务」→「已开通模型」,复制右侧显示的完整模型 ID(如 volcengine/doubao-seed-1-8-251228),不要手动删减或改写。常见错误是把 volcengine/ 前缀去掉,或把 - 写成 _。
验证请求体 JSON 格式与必填字段
第一步:用在线 JSON 校验工具粘贴你的 payload,确认无语法错误、无尾逗号、无中文引号。
第二步:对照官方文档检查必填字段。例如 chat/completions 接口要求 model 和 messages 都存在,且 messages 至少含一个 {"role":"user","content":"..."} 对象。空数组 "messages": [] 会触发 400。
第三步:移除所有非文档明确支持的字段。比如加了 temperature 但当前模型不支持该参数,或传了 stream: true 却没处理 SSE 流式响应,都可能被判定为非法请求。
排查环境变量与缓存干扰
如果你在本地用 OpenClaw 或其他 CLI 工具调用,执行前先运行 $env:OPENCLAW_HOME = 'D:\openclaw-home'(PowerShell)或 export OPENCLAW_HOME=/path/to/home(Linux/macOS),确保加载的是最新配置文件。
【修改 API Key 后必须清除工具缓存】,否则旧 Key 仍会被读取。OpenClaw 用户需删除 $OPENCLAW_HOME/config.json 并重新运行 openclaw setup;Spring Boot 项目需重启应用,不能只改配置文件就热加载。


















