使用Mistral Chat Completions API时出现401未授权错误求助
1. 验证API Key的传递逻辑
你提供的代码未展示请求头的配置细节,这是401错误的核心排查点。必须确保请求头中正确携带Authorization字段,格式严格为Bearer 你的API_KEY:
// 示例请求配置 const requestOptions: RequestInit = { method: 'POST', headers: { 'Authorization': `Bearer ${process.env.MISTRAL_API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: "mistral-small-latest", messages: [{role: "user", content: "测试请求内容"}] }) };
- 确认API Key存储在环境变量中,避免硬编码或拼写错误
- 检查Next.js环境变量加载逻辑:服务器端变量无需
NEXT_PUBLIC_前缀,确保.env.local文件配置正确且已重启服务
2. 修正端点URL格式
Mistral官方聊天补全的正确端点是https://api.mistral.ai/v1/chat/completions(注意末尾为复数completions,而非你代码中的单数completion)。错误的端点路径会直接导致授权验证失败,建议直接替换:
const MISTRAL_API_URL = 'https://api.mistral.ai/v1/chat/completions';
codestral端点仅适用于代码生成模型,若调用通用聊天模型,主API端点是唯一正确选择。
3. 检查API Key的状态与权限
- 登录Mistral控制台,确认API Key未被禁用、未过期
- 验证API Key的权限范围,确保允许调用
chat/completions接口 - 检查账户余额:欠费或额度耗尽可能返回401(部分场景下不会返回标准402错误)
4. 排查请求格式问题
- 确保请求体严格符合API要求:必须包含
model字段,messages数组中每个对象必须有role和content属性 - 避免请求头或请求体中包含多余字段,防止API解析失败
- 检查是否有代理、防火墙拦截请求,导致
Authorization头被篡改或丢失
5. 用基础请求验证
通过curl直接测试API有效性,排除代码层面的问题:
curl https://api.mistral.ai/v1/chat/completions \ -H "Authorization: Bearer 你的API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "mistral-small-latest", "messages": [{"role": "user", "content": "Hello"}] }'
若curl请求成功,问题出在代码配置;若仍返回401,需重新确认API Key或账户状态。
内容的提问来源于stack exchange,提问作者Simushi Lutombi
相关产品推荐
相关产品推荐

