DeepSeek 接口调用 401 Unauthorized 原因分析(最全排查清单)

143 阅读2分钟

最让人抓狂的接口错误是什么?
不是 500,不是超时,而是——
401 Unauthorized:你被拒绝了,但它不告诉你为什么。

不少人在调用 DeepSeek API 时都会遇到这个问题:

  • 请求能发出去
  • 网络正常
  • 返回却是 401 Unauthorized
  • 换语言、换 SDK 还是 401

这篇文章不讲废话,直接给你 最常见的 8 类原因 + 正确排查顺序,照着查,基本都能定位。


一、先确认一件事:401 在 DeepSeek 里意味着什么?

在 DeepSeek 接口语义中,401 Unauthorized 基本只指一件事

你的身份信息不被认可

它不代表接口不存在,也不代表参数错误,而是:

  • API Key 不对
  • 权限不对
  • 或者你“看起来不像一个合法调用者”

二、最常见的 8 个 401 原因(按踩坑概率)


1️⃣ API Key 填错 / 复制不完整(最多)

最常见的低级错误,但真的很多人中。

常见情况:

  • 少复制了一位
  • 多了空格 / 换行
  • 复制了测试 Key,用在正式环境

👉 DeepSeek 不会告诉你 Key 错,只会 401

✅ 建议排查:

var_dump($apiKey);

确认长度、前后是否有空格。


2️⃣ Authorization Header 写法不对(非常高频)

DeepSeek 接口 必须使用 Bearer 方式

❌ 错误写法:

Authorization: sk-xxxxx

✅ 正确写法:

Authorization: Bearer sk-xxxxx

👉 少一个 Bearer,直接 401。


3️⃣ Header 名大小写 / 拼写错误

HTTP Header 虽然不区分大小写,但有些封装库会出问题

常见错误:

authoriztion: Bearer xxx

👉 拼错一个字母,直接 401。


4️⃣ 请求地址写错(但你以为是权限问题)

比如:

  • 用了旧版本接口地址
  • 把 v1 写成 v0
  • 使用了不支持该模型的 endpoint

👉 接口存在,但你没权限访问这个路径

DeepSeek 返回:401


5️⃣ 账号未开通 / Key 已被禁用

常见于:

  • 新注册账号
  • Key 刚创建
  • 账户未完成必要验证
  • Key 被手动禁用

👉 接口层面统一返回 401。


6️⃣ 请求方式错误(GET / POST 用错)

部分接口只接受:

POST

你却用:

GET

👉 DeepSeek 会直接判定为非法请求,返回 401。


7️⃣ 请求体格式不合法(但你以为是参数问题)

比如:

  • Body 不是 JSON
  • JSON 有语法错误
  • Content-Type 没写
Content-Type: application/json

👉 有时会被直接当成非法请求处理,返回 401。


8️⃣ 使用代理 / 中转服务器导致 Header 丢失(隐蔽)

如果你是这样架构的:

前端 → 自己服务器 → DeepSeek API

中间层如果:

  • 没把 Authorization 透传
  • 被 Nginx / 网关过滤

👉 你以为传了 Key,实际上没传

DeepSeek 只能返回 401。


三、一个标准的 DeepSeek 正确请求示例(PHP)

$ch = curl_init("https://api.deepseek.com/v1/chat/completions");

$headers = [
  "Content-Type: application/json",
  "Authorization: Bearer YOUR_API_KEY"
];

$data = [
  "model" => "deepseek-chat",
  "messages" => [
    ["role" => "user", "content" => "Hello"]
  ]
];

curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => $headers,
  CURLOPT_POSTFIELDS => json_encode($data),
]);

$res = curl_exec($ch);

if ($res === false) {
    echo curl_error($ch);
}

👉 对照这个结构,一项一项比


四、排查 401 的正确顺序(非常重要)

遇到 401,不要乱试,按顺序:

1️⃣ 打印完整请求 Header
2️⃣ 确认 Authorization 是否真的发出
3️⃣ 对比官方接口地址
4️⃣ 确认 Key 状态是否可用
5️⃣ 确认请求方式和 Body

👉 80% 的问题在前 3 步


五、一个老坑经验(很重要)

401 ≠ 你没权限,
很多时候只是“你不像官方期望的请求”。

DeepSeek 对请求结构、Header 要求是偏严格的
和一些“宽松 API”不一样。