配置一个明确的 HTTP Request
创建 Manual Trigger → HTTP Request 工作流。请求设为 POST https://www.primoraihub.com/v1/chat/completions,选择使用 Bearer Auth 的 Generic Credential Type,启用 JSON Body,并先使用 stream: false。
| n8n 字段 | 值 | 原因 |
|---|---|---|
| Method | POST | Chat Completions 需要请求 Body。 |
| URL | https://www.primoraihub.com/v1/chat/completions | HTTP Request 节点需要完整接口,不能只填 API 根地址。 |
| Authentication | Generic Credential Type → Bearer Auth | Key 保存在 n8n 凭据存储中,而不是节点 JSON。 |
| Body Content Type | JSON | 保留数组、对象、数字和布尔类型。 |
| Response Format | JSON | 让后续节点可以读取返回结构。 |
以官方节点行为作为接入边界
n8n HTTP Request 官方文档支持任意 REST URL、通用凭据、Header、JSON Body、cURL 导入、响应设置、批处理、代理和超时;凭据文档把 Bearer Auth 列为通用凭据类型。
| 检查 | 2026-08-24 观察结果 | 结论 |
|---|---|---|
无 Key 调用 Primordial AI GET /v1/models | HTTP 401 | 模型路由到达鉴权;这不是成功的 n8n 模型检查。 |
无 Key 调用 Primordial AI POST /v1/chat/completions | HTTP 401 | 聊天路由到达鉴权;这不是成功的 n8n 执行。 |
| n8n 凭据、模型请求、聊天执行、表达式、重试和下游映射 | 本指南没有在 n8n 实例中独立端到端测试 | 必须执行每个鉴权步骤,并检查真实 execution data。 |
本指南使用任意 REST 行为已有官方文档支持的 HTTP Request 节点,不宣称所有 n8n OpenAI 或 LangChain 节点都接受该自定义端点。
打开 n8n 前先获取当前模型 ID
test -n "$PRIMORDIAL_API_KEY" || {
echo "PRIMORDIAL_API_KEY 未设置" >&2
exit 1
}
curl --fail-with-body --silent --show-error \
https://www.primoraihub.com/v1/models \
-H "Authorization: Bearer $PRIMORDIAL_API_KEY" \
| jq -r '.data[]?.id'
把其中一个准确返回 ID 复制到第一次冒烟测试。不要使用猜测名称、旧文章示例或字面量 MODEL_ID_FROM_V1_MODELS。
Bearer Auth 只保存 Token
- 在 HTTP Request 节点选择 Generic Credential Type。
- 选择 Bearer Auth,创建一个专用凭据。
- 只粘贴 Primordial AI Token,不要添加
Bearer。 - 按环境和用途命名;当前版本提供域名限制时,将允许域名限制为
www.primoraihub.com。
n8n Bearer Auth 会自动添加 Authorization: Bearer 前缀。Token 字段再次填写前缀,可能形成重复内容并返回 HTTP 401。
先运行静态、类型正确的 JSON 冒烟测试
启用 Send Body,选择 JSON 和 Using JSON,再替换模型占位符:
{
"model": "MODEL_ID_FROM_V1_MODELS",
"messages": [
{
"role": "user",
"content": "Reply with OK"
}
],
"stream": false
}
只执行一次节点。成功响应只能证明当时的 Token、模型、接口、非流式 Body 和 n8n execution 成功;该请求可能消耗账户额度。
也可以在 n8n 选择 Import cURL。导入不含真实 Authorization Header 的 cURL,再单独关联 Bearer 凭据。n8n 文档说明导入参数会成为字符串,因此应重新用 JSON 模式输入 Body,让 false 保持布尔类型。
静态测试通过后再映射工作流数据
如果上游节点输出 prompt 字段,把 JSON Body 改成返回对象的 n8n 表达式:
{{
{
"model": "MODEL_ID_FROM_V1_MODELS",
"messages": [
{
"role": "user",
"content": $json.prompt
}
],
"stream": false
}
}}
请求前验证缺失、空值、过长和非字符串输入。后续节点需要把响应与输入对应时,应保留原始工作流 Item 或关联字段。
只重试临时失败,不重试配置错误
| 状态或现象 | 处理 | 重试? |
|---|---|---|
| 401 | 检查所选 Bearer 凭据、Token 状态、空白和重复前缀。 | 不重试 |
| 403 | 检查账户权限或目标操作策略。 | 不重试 |
| 404 或模型不存在 | 检查完整 URL,并重新获取准确模型 ID。 | 不重试 |
| 429 | 降低并发,使用 HTTP Request batching,并等待后再尝试。 | 有限重试 |
| 5xx 或连接超时 | 检查提供商状态和容器网络;仅在重复请求安全时重试。 | 有限重试 |
| Invalid JSON | 使用 JSON 模式并验证表达式输出类型。 | 不重试 |
n8n HTTP Request 常见问题文档说明了 batching 和 Retry on Fail。应设置有限次数与等待间隔,不能用自动重试掩盖鉴权、路由或 Schema 缺陷。
不能让凭据进入节点和导出文件
- 按工作流和环境使用专用 Key。
- 不能把真实 Key 粘贴到 Header 字段、JSON Body、Sticky Note、execution 名称或导出的工作流。
- 限制可以编辑或运行工作流、使用凭据的成员。
- Prompt 或响应包含敏感业务数据时,限制或清理 execution data。
- 怀疑暴露后轮换 Key,只更新 n8n Credential。
n8n 的工作流共享文档说明,即使凭据没有单独共享,编辑者仍可运行使用该凭据的工作流。应把工作流访问视为消耗提供商账户的权限。
常见问题
应该使用哪个 n8n 节点?
需要明确自定义接口与 Body 时使用 HTTP Request。本指南不假设提供商专用节点支持自定义 API 根地址。
Credential 是否需要包含“Bearer”?
不需要。Bearer Auth 只填写 Token,n8n 会自动添加 Scheme。
为什么从 cURL 导入后还要使用 JSON 模式?
cURL 导入会把参数值当作字符串;JSON 模式可以保留对象、数组、数字和 false 等布尔值。
所有失败都应该重试吗?
不应该。401、403、404、无效模型和无效 JSON 应直接修复。只有重复执行安全时,才对临时 429、5xx 或网络失败进行有限重试。