You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用xAI API的/v1/chat/completions端点时遇Unprocessable Entity错误求助

排查xAI API 422 Unprocessable Entity错误的方案

错误原因分析

422错误表示请求格式合法但参数不符合API要求,结合你的代码和请求内容,可能的触发原因包括:

  • API密钥无效或无目标模型访问权限
  • 请求参数缺失/格式不符合xAI API规范
  • 自定义cleanBOM函数破坏了消息内容格式
  • 未获取API返回的详细错误信息,无法定位具体问题

解决方案步骤

1. 先获取API返回的详细错误详情

当前代码仅捕获了状态文本,无法得知具体参数问题,修改错误处理逻辑,打印API返回的完整错误信息:

if (!response.ok) {
  // 读取API返回的错误详情
  const errorDetails = await response.json();
  throw new Error(`API request failed: ${response.statusText} - ${JSON.stringify(errorDetails)}`);
}

运行后查看控制台输出,这是定位问题最直接的方式。

2. 验证API密钥与模型权限

  • 确认process.env.XAI_API_KEY已正确配置,密钥无拼写错误、未过期
  • 检查xAI账号权限:grok-beta模型目前需要X Premium+订阅,且可能处于限量测试阶段,未满足条件会返回权限类422错误

3. 排查消息处理逻辑

临时注释cleanBOM函数调用,测试请求是否正常:

const messages = rawMessages.map((msg: any) => ({
    ...msg,
    // 临时禁用cleanBOM,排查是否为内容处理导致的问题
    content: msg.content
  }));

若请求恢复正常,说明cleanBOM函数可能修改了消息内容格式(如引入不可见字符、截断内容等),需修复该函数。

4. 核对请求参数规范

根据xAI API要求,/v1/chat/completions必填参数为model和messages,需注意:

  • messages数组中每个对象的role只能是user、assistant或system,你的请求中role: "user"合法
  • 确认model名称正确,当前可用模型为grok-beta(需权限),拼写错误会触发参数类422错误

测试建议

先用Postman或curl直接调用API,排除代码逻辑干扰:

curl https://api.x.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "grok-beta",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

若curl请求也返回422,说明问题出在API密钥或权限上;若curl请求正常,再回到代码中排查参数处理逻辑。

内容的提问来源于stack exchange,提问作者Code on the Rocks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:11:06