n8n 登录与鉴权:API 密钥获取及配置方法
n8n 的网页登录负责进入编辑器,API 密钥负责让脚本、命令行或第三方工具调用实例;2026 年 10 月 20 日更新的官方鉴权文档重新明确了密钥创建入口和请求头格式,现在值得按这条路径配置,避免把登录密码、节点凭据和 API 密钥混为一谈。
先分清三种“登录”
n8n 中至少有三种容易混淆的凭据:
| 类型 | 用途 | 创建或填写位置 |
|---|---|---|
| 网页账号 | 登录 n8n,进入工作流编辑器 | 登录页或云端实例入口 |
| 节点凭据 | 让 OpenAI、数据库等节点访问外部服务 | 节点的 Credentials 设置 |
| n8n API 密钥 | 调 n8n 自己的 REST API | Settings → n8n API |
本文处理的是第三种:获取 n8n API 密钥,并放进正确的 HTTP 请求头。节点凭据虽然也叫“密钥”,但它通常只服务某个节点;它不能替代 n8n API 密钥。
n8n 官方首页把自身分为 Cloud 与自托管两种使用方式,并明确提供 Docker 自托管路径 —— 这决定了你的 API 密钥是挂在 n8n Cloud 账号下,还是挂在自己服务器的实例里,两者的密钥互不通用。
开始前准备这 3 项
- 准备可登录的 n8n 实例:云端用户打开 n8n 官网,点击页面右上角
Sign in;自托管用户打开自己的实例地址,确认能进入编辑器。判断标准是页面顶部能看到工作流编辑器,而不是停留在登录表单。 - 确认实例地址与 Base URL 口径:按官方 Authentication 文档,n8n 节点凭据里的 Base URL 要填实例根地址 +
/api/v1—— Cloud 是https://<your-name>.app.n8n.cloud/api/v1,自托管是https://<your-instance-url>/api/v1。两个常见错法:只填根地址(少/api/v1)或把它拼两遍;写脚本手拼完整 URL 时同理(见下文示例)。 - 准备 API 调用环境:自托管可用 Docker;官方仓库给出的快速安装命令需要 Docker。云端则直接使用浏览器控制台或本机
curl。需要填密钥的第三方工具,还要支持自定义 HTTP 请求头。
在 n8n 中创建 API 密钥
- 登录目标 n8n 实例,确认当前进入的是准备被调用的那个工作区。
- 打开左下角的个人菜单或设置入口,进入:
Settings → n8n API
- 点击
Create an API key。 - 填写
Label,用能区分用途的名称,例如local-cli或automation-agent。 - 设置
Expiration time,避免创建长期有效的共享密钥。 - 如果当前是 Enterprise 计划,在
Scopes中限定密钥权限;非 Enterprise 密钥不能按资源范围收窄,因此不要把它复制到个人电脑或不熟悉的脚本环境中。 - 点击创建后,在
My API Key旁复制密钥。API 密钥属于私密凭据,不要写进 Git 仓库、截图、聊天记录或工作流节点参数。
官方文档给出的路径和字段名称可以原样照做:
Log in to n8n
→ Settings → n8n API
→ Create an API key
→ Label
→ Expiration time
→ Scopes(仅 Enterprise)
→ Copy My API Key
Enterprise 用户配置 Scopes 时,应继续查看官方文档中的 API Scopes 页面,逐项选择工作流实际需要的权限,而不是直接复制示例命令中的所有能力。
把密钥放进正确的请求头
n8n API 不接受用户名和密码组合。官方鉴权文档明确要求把创建的密钥放入名为 X-N8N-API-KEY 的请求头。
下面这段命令可直接复制后替换实例地址、端口、路径、版本号和密钥:
curl -X 'GET'
'<N8N_HOST>:<N8N_PORT>/<N8N_PATH>/api/v<version-number>/workflows?active=true'
-H 'accept: application/json'
-H 'X-N8N-API-KEY: <your-api-key>'
自托管实例的地址必须包含实际协议、主机名、端口和 n8n 路径。例如,n8n 若运行在 https://workflow.example.com 且没有额外路径,请求地址应是:
https://workflow.example.com/api/v1/workflows?active=true
如果部署在 https://workflow.example.com/n8n/,则应改成:
https://workflow.example.com/n8n/api/v1/workflows?active=true
不要只因为请求成功返回 JSON 就认为鉴权没问题:还应检查返回的 workflows 是否属于当前实例。向错误地址发送有效密钥,可能返回鉴权成功,却连接到另一套工作区。创建时填写的 Label 只能帮助人识别密钥,不能替代请求头名称;真正的机器鉴权依据仍然是 X-N8N-API-KEY。
在工作流节点中复用密钥
如果还要从 n8n 工作流内部调用另一个 n8n 实例或自身 API,应使用 n8n 节点,而不是普通 HTTP Request 节点。官方文档给出的节点配置方式是:
- 新建 n8n 节点。
- 打开节点的 Credential 配置。
- 在
API Key字段粘贴刚创建的密钥。 - 填写目标实例地址及所需 API 路径,保存后执行一次测试。
| 场景 | 放置位置 | 验证方式 |
|---|---|---|
curl、脚本调用 |
X-N8N-API-KEY 请求头 |
请求返回当前实例的活动工作流 |
| n8n 节点调用 n8n API | 节点的 API Key 凭据字段 |
节点测试成功并返回目标实例数据 |
| OpenAI、数据库等节点 | 对应节点的 Credentials | 节点自身测试成功 |
后两种“节点测试成功”不能互相替代。一个节点连接成功,不代表另一个 n8n 实例的密钥配置正确。
会卡住的两个地方
密钥放错位置
官方文档规定的请求头名称是 X-N8N-API-KEY,而不是 Authorization、Api-Key 或节点凭据名称。排查时先对照这一个字段;不要同时在多个请求头中放同一密钥,以免掩盖到底是哪一项生效。
另外,URL 中只能放实例地址和 API 路径,不要写成:
https://workflow.example.com/api/v1?X-N8N-API-KEY=密钥
官方示例明确把密钥放在请求头中,查询参数位置不是它认可的位置。
登录状态与 API 鉴权不是一回事
浏览器里点 Sign in 之后的网页登录会话,只对网页界面有效;脚本和工作流节点走 API 用的是另一套凭据 —— 每次请求都要带 X-N8N-API-KEY 请求头。两者互相独立:网页会话过期重登,不会让密钥失效;密钥被删了,网页照样登得进去。所以”网页能打开但接口 401″时,先看密钥,别去反复重登网页。
怎么确认已经配好
按下面三个可观察结果验收:
Settings → n8n API页面能看到刚创建的密钥记录,Label和过期时间与预期一致。- 复制上面的
curl示例后,请求没有因缺少鉴权信息而失败,并且返回的数据属于目标实例。 - 在 n8n 节点里使用时,节点测试能够取得目标实例的数据,而不是只显示“Credentials saved”。
如果第 1 步成功、第 2 步失败,优先检查请求头拼写、Base URL 路径和密钥是否复制完整;如果第 2 步成功、第 3 步失败,则检查 n8n 节点的 API Key 字段与目标地址。完整鉴权示例见 n8n 官方 Authentication 文档,自托管部署和仓库内容见 n8n 官方 GitHub 仓库,云端入口与产品功能见 n8n 官网。
参考来源
- n8n 官方 API 认证文档:密钥生成、请求头与权限口径
- n8n 官方 API 总览:端点、分页与调用示例
- n8n 官方仓库:自托管部署与版本记录
- n8n Cloud:Cloud 版密钥的生成入口(自托管实例请改用自己的管理后台)
评论区
登录后可评论。