n8n · HTTP Request 工作流

不在节点中硬编码 Key,调用 OpenAI 兼容 API。

使用 n8n HTTP Request 节点、受保护的 Bearer 凭据、一个当前模型 ID、类型正确的 JSON Body,并把永久配置错误与临时失败分开处理。

更新于 2026-08-24HTTP Request 节点Bearer Auth类型正确的 JSON非流式冒烟测试

配置一个明确的 HTTP Request

创建 Manual Trigger → HTTP Request 工作流。请求设为 POST https://www.primoraihub.com/v1/chat/completions,选择使用 Bearer Auth 的 Generic Credential Type,启用 JSON Body,并先使用 stream: false

n8n 字段原因
MethodPOSTChat Completions 需要请求 Body。
URLhttps://www.primoraihub.com/v1/chat/completionsHTTP Request 节点需要完整接口,不能只填 API 根地址。
AuthenticationGeneric Credential Type → Bearer AuthKey 保存在 n8n 凭据存储中,而不是节点 JSON。
Body Content TypeJSON保留数组、对象、数字和布尔类型。
Response FormatJSON让后续节点可以读取返回结构。

以官方节点行为作为接入边界

n8n HTTP Request 官方文档支持任意 REST URL、通用凭据、Header、JSON Body、cURL 导入、响应设置、批处理、代理和超时;凭据文档把 Bearer Auth 列为通用凭据类型。

检查2026-08-24 观察结果结论
无 Key 调用 Primordial AI GET /v1/modelsHTTP 401模型路由到达鉴权;这不是成功的 n8n 模型检查。
无 Key 调用 Primordial AI POST /v1/chat/completionsHTTP 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

  1. 在 HTTP Request 节点选择 Generic Credential Type
  2. 选择 Bearer Auth,创建一个专用凭据。
  3. 只粘贴 Primordial AI Token,不要添加 Bearer
  4. 按环境和用途命名;当前版本提供域名限制时,将允许域名限制为 www.primoraihub.com

n8n Bearer Auth 会自动添加 Authorization: Bearer 前缀。Token 字段再次填写前缀,可能形成重复内容并返回 HTTP 401。

先运行静态、类型正确的 JSON 冒烟测试

启用 Send Body,选择 JSONUsing 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 或网络失败进行有限重试。