n8n-api
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinesen8n REST API Skill
n8n REST API Skill
Interact with an n8n automation platform instance via its public REST API v1.
通过n8n自动化平台的公开REST API v1与其实例进行交互。
Environment Variables (REQUIRED)
环境变量(必填)
Before making any API calls, ensure these environment variables are set:
| Variable | Description | Example |
|---|---|---|
| n8n instance hostname (with protocol, no trailing slash) | |
| API key generated in n8n UI (Settings > API) | |
bash
export N8N_HOST="https://n8n.example.com"
export N8N_API_KEY="your-api-key-here"If these are not set, ask the user to provide them before proceeding.
在发起任何API调用前,请确保已设置以下环境变量:
| 变量名 | 描述 | 示例 |
|---|---|---|
| n8n实例的主机名(包含协议,末尾无斜杠) | |
| 在n8n界面(设置 > API)生成的API密钥 | |
bash
export N8N_HOST="https://n8n.example.com"
export N8N_API_KEY="your-api-key-here"如果未设置这些变量,请询问用户提供后再继续操作。
Authentication
认证
All requests require the header:
X-N8N-API-KEYbash
curl -H "X-N8N-API-KEY: $N8N_API_KEY" "$N8N_HOST/api/v1/workflows"Every request pattern below assumes:
- Base URL:
$N8N_HOST/api/v1 - Header:
X-N8N-API-KEY: $N8N_API_KEY - Content-Type: (for POST/PUT/PATCH)
application/json
所有请求都需要携带请求头:
X-N8N-API-KEYbash
curl -H "X-N8N-API-KEY: $N8N_API_KEY" "$N8N_HOST/api/v1/workflows"以下所有请求模式均默认:
- 基础URL:
$N8N_HOST/api/v1 - 请求头:
X-N8N-API-KEY: $N8N_API_KEY - Content-Type:(适用于POST/PUT/PATCH请求)
application/json
API Endpoints
API端点
Workflows
工作流
| Method | Path | Description |
|---|---|---|
| GET | | List all workflows (supports |
| GET | | Get a single workflow by ID |
| POST | | Create a new workflow |
| PUT | | Update an existing workflow (full replace) |
| DELETE | | Delete a workflow |
| POST | | Activate a workflow |
| POST | | Deactivate a workflow |
| POST | | Transfer workflow to another project |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 列出所有工作流(支持 |
| GET | | 根据ID获取单个工作流 |
| POST | | 创建新工作流 |
| PUT | | 更新现有工作流(全量替换) |
| DELETE | | 删除工作流 |
| POST | | 激活工作流 |
| POST | | 停用工作流 |
| POST | | 将工作流转移至其他项目 |
List workflows
列出工作流
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows?limit=50" | jq .Query parameters:
- (boolean) — filter by active/inactive status
active - (string) — filter by tag ID
tags - (string) — filter by name (partial match)
name - (number) — results per page (default 10, max 250)
limit - (string) — pagination cursor from previous response
cursor
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows?limit=50" | jq .查询参数:
- (布尔值)——按激活/停用状态筛选
active - (字符串)——按标签ID筛选
tags - (字符串)——按名称筛选(部分匹配)
name - (数字)——每页结果数(默认10,最大250)
limit - (字符串)——上一次响应中的分页游标
cursor
Get a workflow
获取单个工作流
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows/{id}" | jq .bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows/{id}" | jq .Create a workflow
创建工作流
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Workflow",
"nodes": [],
"connections": {},
"settings": {
"executionOrder": "v1"
}
}' \
"$N8N_HOST/api/v1/workflows" | jq .Request body fields:
- (string, required) — workflow name
name - (array, required) — array of node objects
nodes - (object, required) — node connections map
connections - (object) — workflow settings
settings - (object) — static data for the workflow
staticData - (array of objects) — tags to assign
tags[{"id": "tagId"}]
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Workflow",
"nodes": [],
"connections": {},
"settings": {
"executionOrder": "v1"
}
}' \
"$N8N_HOST/api/v1/workflows" | jq .请求体字段:
- (字符串,必填)——工作流名称
name - (数组,必填)——节点对象数组
nodes - (对象,必填)——节点连接映射
connections - (对象)——工作流设置
settings - (对象)——工作流的静态数据
staticData - (对象数组)——要分配的标签
tags[{"id": "tagId"}]
Update a workflow
更新工作流
bash
curl -s -X PUT \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Workflow",
"nodes": [...],
"connections": {...},
"settings": {...}
}' \
"$N8N_HOST/api/v1/workflows/{id}" | jq .Note: If the workflow is active, the updated version is automatically re-published.
bash
curl -s -X PUT \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Workflow",
"nodes": [...],
"connections": {...},
"settings": {...}
}' \
"$N8N_HOST/api/v1/workflows/{id}" | jq .注意: 如果工作流处于激活状态,更新后的版本会自动重新发布。
Activate / Deactivate
激活/停用
bash
undefinedbash
undefinedActivate
激活
curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/{id}/activate" | jq .
"$N8N_HOST/api/v1/workflows/{id}/activate" | jq .
curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/{id}/activate" | jq .
"$N8N_HOST/api/v1/workflows/{id}/activate" | jq .
Deactivate
停用
curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/{id}/deactivate" | jq .
"$N8N_HOST/api/v1/workflows/{id}/deactivate" | jq .
undefinedcurl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/{id}/deactivate" | jq .
"$N8N_HOST/api/v1/workflows/{id}/deactivate" | jq .
undefinedDelete a workflow
删除工作流
bash
curl -s -X DELETE -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows/{id}" | jq .bash
curl -s -X DELETE -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows/{id}" | jq .Executions
执行记录
| Method | Path | Description |
|---|---|---|
| GET | | List executions (supports filters) |
| GET | | Get a single execution |
| DELETE | | Delete an execution |
| POST | | Stop a running execution |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 列出执行记录(支持筛选) |
| GET | | 获取单个执行记录 |
| DELETE | | 删除执行记录 |
| POST | | 停止正在运行的执行记录 |
List executions
列出执行记录
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions?limit=20&status=error" | jq .Query parameters:
- (string) — filter by workflow ID
workflowId - (string) —
status,error,success,waitingrunning - (number) — results per page (default 10, max 250)
limit - (string) — pagination cursor
cursor - (boolean) — include full execution data (default false)
includeData
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions?limit=20&status=error" | jq .查询参数:
- (字符串)——按工作流ID筛选
workflowId - (字符串)——
status,error,success,waitingrunning - (数字)——每页结果数(默认10,最大250)
limit - (字符串)——分页游标
cursor - (布尔值)——包含完整执行数据(默认false)
includeData
Get execution details
获取执行记录详情
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions/{id}?includeData=true" | jq .Response includes:
- — execution ID
id - — boolean
finished - — trigger mode (manual, webhook, trigger, etc.)
mode - /
startedAt— timestampsstoppedAt - — associated workflow
workflowId - — success/error/waiting/running
status - — full execution data (when
data)includeData=true
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions/{id}?includeData=true" | jq .响应包含:
- ——执行记录ID
id - ——布尔值,表示是否完成
finished - ——触发模式(手动、Webhook、触发器等)
mode - /
startedAt——时间戳stoppedAt - ——关联的工作流ID
workflowId - ——成功/错误/等待/运行中
status - ——完整执行数据(当
data时返回)includeData=true
Stop a running execution
停止正在运行的执行记录
bash
curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions/{id}/stop" | jq .bash
curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions/{id}/stop" | jq .Credentials
凭证
| Method | Path | Description |
|---|---|---|
| GET | | List all credentials |
| POST | | Create new credential |
| DELETE | | Delete a credential |
| POST | | Transfer credential to another project |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 列出所有凭证 |
| POST | | 创建新凭证 |
| DELETE | | 删除凭证 |
| POST | | 将凭证转移至其他项目 |
List credentials
列出凭证
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/credentials?limit=50" | jq .Query parameters:
- (number) — results per page
limit - (string) — pagination cursor
cursor
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/credentials?limit=50" | jq .查询参数:
- (数字)——每页结果数
limit - (字符串)——分页游标
cursor
Create credential
创建凭证
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My API Key",
"type": "httpHeaderAuth",
"data": {
"name": "Authorization",
"value": "Bearer token123"
}
}' \
"$N8N_HOST/api/v1/credentials" | jq .Request body:
- (string, required) — credential name
name - (string, required) — credential type (e.g.,
type,httpHeaderAuth,oAuth2Api)httpBasicAuth - (object, required) — credential-specific data
data
Security note: The API does not return credential secrets in GET responses. Only metadata (id, name, type, createdAt, updatedAt) is returned.
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My API Key",
"type": "httpHeaderAuth",
"data": {
"name": "Authorization",
"value": "Bearer token123"
}
}' \
"$N8N_HOST/api/v1/credentials" | jq .请求体:
- (字符串,必填)——凭证名称
name - (字符串,必填)——凭证类型(例如
type,httpHeaderAuth,oAuth2Api)httpBasicAuth - (对象,必填)——凭证专属数据
data
安全提示: API在GET响应中不会返回凭证密钥,仅返回元数据(ID、名称、类型、创建时间、更新时间)。
Tags
标签
| Method | Path | Description |
|---|---|---|
| GET | | List all tags |
| GET | | Get a single tag |
| POST | | Create a new tag |
| PUT | | Update a tag |
| DELETE | | Delete a tag |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 列出所有标签 |
| GET | | 获取单个标签 |
| POST | | 创建新标签 |
| PUT | | 更新标签 |
| DELETE | | 删除标签 |
List tags
列出标签
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/tags?limit=100" | jq .bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/tags?limit=100" | jq .Create tag
创建标签
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "production"}' \
"$N8N_HOST/api/v1/tags" | jq .bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "production"}' \
"$N8N_HOST/api/v1/tags" | jq .Update tag
更新标签
bash
curl -s -X PUT \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "staging"}' \
"$N8N_HOST/api/v1/tags/{id}" | jq .bash
curl -s -X PUT \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "staging"}' \
"$N8N_HOST/api/v1/tags/{id}" | jq .Variables
变量
| Method | Path | Description |
|---|---|---|
| GET | | List all variables |
| POST | | Create a variable |
| PUT | | Update a variable |
| DELETE | | Delete a variable |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 列出所有变量 |
| POST | | 创建变量 |
| PUT | | 更新变量 |
| DELETE | | 删除变量 |
List variables
列出变量
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/variables" | jq .bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/variables" | jq .Create variable
创建变量
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key": "API_ENDPOINT", "value": "https://api.example.com"}' \
"$N8N_HOST/api/v1/variables" | jq .bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key": "API_ENDPOINT", "value": "https://api.example.com"}' \
"$N8N_HOST/api/v1/variables" | jq .Update variable
更新变量
bash
curl -s -X PUT \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key": "API_ENDPOINT", "value": "https://api-v2.example.com"}' \
"$N8N_HOST/api/v1/variables/{id}" | jq .bash
curl -s -X PUT \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key": "API_ENDPOINT", "value": "https://api-v2.example.com"}' \
"$N8N_HOST/api/v1/variables/{id}" | jq .Users
用户
| Method | Path | Description |
|---|---|---|
| GET | | List all users |
| GET | | Get user by ID (or |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 列出所有用户 |
| GET | | 根据ID(或 |
List users
列出用户
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/users?limit=50" | jq .Query parameters:
- (number) — results per page
limit - (string) — pagination cursor
cursor - (boolean) — include role in response
includeRole
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/users?limit=50" | jq .查询参数:
- (数字)——每页结果数
limit - (字符串)——分页游标
cursor - (布尔值)——在响应中包含角色信息
includeRole
Projects
项目
| Method | Path | Description |
|---|---|---|
| GET | | List all projects |
| GET | | Get project by ID |
| POST | | Create a project |
| PUT | | Update a project |
| DELETE | | Delete a project |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 列出所有项目 |
| GET | | 根据ID获取项目 |
| POST | | 创建项目 |
| PUT | | 更新项目 |
| DELETE | | 删除项目 |
List projects
列出项目
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/projects" | jq .bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/projects" | jq .Create project
创建项目
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Marketing Automations"}' \
"$N8N_HOST/api/v1/projects" | jq .bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Marketing Automations"}' \
"$N8N_HOST/api/v1/projects" | jq .Audit
审计
| Method | Path | Description |
|---|---|---|
| POST | | Generate a security audit report |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| POST | | 生成安全审计报告 |
Generate audit
生成审计报告
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"additionalOptions": {"categories": ["credentials", "nodes", "instance"]}}' \
"$N8N_HOST/api/v1/audit" | jq .Audit categories: , , , , .
credentialsnodesdatabasefilesysteminstancebash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"additionalOptions": {"categories": ["credentials", "nodes", "instance"]}}' \
"$N8N_HOST/api/v1/audit" | jq .审计类别:, , , , 。
credentialsnodesdatabasefilesysteminstanceSource Control
源代码控制
| Method | Path | Description |
|---|---|---|
| GET | | Get source control preferences |
| POST | | Set source control preferences |
| POST | | Pull changes from remote |
| POST | | Push changes to remote |
| GET | | Get modified resources status |
| POST | | Disconnect from source control |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| GET | | 获取源代码控制偏好设置 |
| POST | | 设置源代码控制偏好设置 |
| POST | | 从远程仓库拉取变更 |
| POST | | 将变更推送到远程仓库 |
| GET | | 获取已修改资源的状态 |
| POST | | 断开与源代码控制的连接 |
Get status
获取状态
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/source-control/status" | jq .bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/source-control/status" | jq .Pull from remote
从远程仓库拉取变更
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"force": false}' \
"$N8N_HOST/api/v1/source-control/pull" | jq .bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d '{"force": false}' \
"$N8N_HOST/api/v1/source-control/pull" | jq .Pagination
分页
The n8n API uses cursor-based pagination. Responses include:
json
{
"data": [...],
"nextCursor": "eyJsaW1pdCI6MTAsIm9mZnNldCI6MTB9"
}To fetch the next page, pass on the next request. When is , there are no more results.
?cursor=<nextCursor>nextCursornulln8n API使用基于游标的分页。响应包含以下结构:
json
{
"data": [...],
"nextCursor": "eyJsaW1pdCI6MTAsIm9mZnNldCI6MTB9"
}要获取下一页数据,请在后续请求中传递参数。当为时,表示没有更多结果。
?cursor=<nextCursor>nextCursornullCommon Patterns
常见模式
List all workflows with their status
列出所有工作流及其状态
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows?limit=250" | \
jq '.data[] | {id, name, active, updatedAt}'bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows?limit=250" | \
jq '.data[] | {id, name, active, updatedAt}'Find failed executions for a workflow
查找某个工作流的失败执行记录
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions?workflowId=123&status=error&limit=50" | \
jq '.data[] | {id, status, startedAt, stoppedAt}'bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/executions?workflowId=123&status=error&limit=50" | \
jq '.data[] | {id, status, startedAt, stoppedAt}'Trigger a workflow manually via webhook
通过Webhook手动触发工作流
If a workflow has a Webhook node, you can trigger it directly:
bash
curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"key": "value"}' \
"$N8N_HOST/webhook/{webhook-path}"Note: Webhook URLs useor/webhook/path, not/webhook-test/./api/v1/
如果工作流包含Webhook节点,可以直接触发它:
bash
curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"key": "value"}' \
"$N8N_HOST/webhook/{webhook-path}"注意: Webhook URL使用或/webhook/路径,而非/webhook-test/。/api/v1/
Export a workflow as JSON
将工作流导出为JSON
bash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows/{id}" | jq . > workflow-backup.jsonbash
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY" \
"$N8N_HOST/api/v1/workflows/{id}" | jq . > workflow-backup.jsonImport / restore a workflow from JSON
从JSON导入/恢复工作流
bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d @workflow-backup.json \
"$N8N_HOST/api/v1/workflows" | jq .bash
curl -s -X POST \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d @workflow-backup.json \
"$N8N_HOST/api/v1/workflows" | jq .Bulk activate all workflows
批量激活所有工作流
bash
undefinedbash
undefinedGet all inactive workflow IDs, then activate each
获取所有未激活的工作流ID,然后逐个激活
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows?active=false&limit=250" |
jq -r '.data[].id' | while read id; do curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/$id/activate" > /dev/null echo "Activated workflow $id" done
"$N8N_HOST/api/v1/workflows?active=false&limit=250" |
jq -r '.data[].id' | while read id; do curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/$id/activate" > /dev/null echo "Activated workflow $id" done
undefinedcurl -s -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows?active=false&limit=250" |
jq -r '.data[].id' | while read id; do curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/$id/activate" > /dev/null echo "Activated workflow $id" done
"$N8N_HOST/api/v1/workflows?active=false&limit=250" |
jq -r '.data[].id' | while read id; do curl -s -X POST -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/workflows/$id/activate" > /dev/null echo "Activated workflow $id" done
undefinedDelete old executions (cleanup)
删除旧执行记录(清理)
bash
undefinedbash
undefinedGet executions older than a specific date and delete them
获取早于特定日期的执行记录并删除
curl -s -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/executions?status=success&limit=100" |
jq -r '.data[].id' | while read id; do curl -s -X DELETE -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/executions/$id" > /dev/null echo "Deleted execution $id" done
"$N8N_HOST/api/v1/executions?status=success&limit=100" |
jq -r '.data[].id' | while read id; do curl -s -X DELETE -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/executions/$id" > /dev/null echo "Deleted execution $id" done
---curl -s -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/executions?status=success&limit=100" |
jq -r '.data[].id' | while read id; do curl -s -X DELETE -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/executions/$id" > /dev/null echo "Deleted execution $id" done
"$N8N_HOST/api/v1/executions?status=success&limit=100" |
jq -r '.data[].id' | while read id; do curl -s -X DELETE -H "X-N8N-API-KEY: $N8N_API_KEY"
"$N8N_HOST/api/v1/executions/$id" > /dev/null echo "Deleted execution $id" done
---Error Handling
错误处理
Common HTTP status codes:
| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad request (invalid parameters) |
| 401 | Unauthorized (missing or invalid API key) |
| 403 | Forbidden (insufficient permissions) |
| 404 | Resource not found |
| 500 | Internal server error |
Error response format:
json
{
"code": 404,
"message": "The requested workflow was not found"
}常见HTTP状态码:
| 状态码 | 含义 |
|---|---|
| 200 | 请求成功 |
| 201 | 创建成功 |
| 400 | 请求错误(参数无效) |
| 401 | 未授权(API密钥缺失或无效) |
| 403 | 禁止访问(权限不足) |
| 404 | 资源未找到 |
| 500 | 服务器内部错误 |
错误响应格式:
json
{
"code": 404,
"message": "The requested workflow was not found"
}Implementation Notes
实现注意事项
- Always read and
N8N_HOSTfrom environment variables — never hardcode themN8N_API_KEY - Use for JSON processing in shell scripts
jq - For Node.js scripts, use or
fetch()with the same headersaxios - Rate limiting: n8n does not enforce strict rate limits by default, but be respectful on shared instances
- Pagination: always handle for endpoints that return lists
nextCursor - Webhook URLs are separate from the API (vs
/webhook/)/api/v1/ - Execution data can be large — use (default) when listing executions
includeData=false - Workflow JSON structure follows n8n's internal format (nodes + connections + settings)
- 始终从环境变量中读取和
N8N_HOST——切勿硬编码N8N_API_KEY - 在Shell脚本中使用处理JSON数据
jq - 对于Node.js脚本,使用或
fetch()并携带相同的请求头axios - 速率限制:n8n默认不强制严格的速率限制,但在共享实例上请合理调用
- 分页:对于返回列表的端点,务必处理参数
nextCursor - Webhook URL与API是分开的(vs
/webhook/)/api/v1/ - 执行数据可能很大——列出执行记录时使用默认的
includeData=false - 工作流JSON结构遵循n8n的内部格式(节点 + 连接 + 设置)
Node.js Example
Node.js示例
javascript
const N8N_HOST = process.env.N8N_HOST;
const N8N_API_KEY = process.env.N8N_API_KEY;
async function n8nApi(method, path, body = null) {
const url = `${N8N_HOST}/api/v1${path}`;
const options = {
method,
headers: {
'X-N8N-API-KEY': N8N_API_KEY,
'Content-Type': 'application/json',
},
};
if (body) options.body = JSON.stringify(body);
const res = await fetch(url, options);
if (!res.ok) throw new Error(`n8n API ${res.status}: ${await res.text()}`);
return res.json();
}
// List workflows
const workflows = await n8nApi('GET', '/workflows?limit=50');
console.log(workflows.data);
// Create a tag
const tag = await n8nApi('POST', '/tags', { name: 'automated' });
console.log(tag);javascript
const N8N_HOST = process.env.N8N_HOST;
const N8N_API_KEY = process.env.N8N_API_KEY;
async function n8nApi(method, path, body = null) {
const url = `${N8N_HOST}/api/v1${path}`;
const options = {
method,
headers: {
'X-N8N-API-KEY': N8N_API_KEY,
'Content-Type': 'application/json',
},
};
if (body) options.body = JSON.stringify(body);
const res = await fetch(url, options);
if (!res.ok) throw new Error(`n8n API ${res.status}: ${await res.text()}`);
return res.json();
}
// 列出工作流
const workflows = await n8nApi('GET', '/workflows?limit=50');
console.log(workflows.data);
// 创建标签
const tag = await n8nApi('POST', '/tags', { name: 'automated' });
console.log(tag);Python Example
Python示例
python
import os
import requests
N8N_HOST = os.environ["N8N_HOST"]
N8N_API_KEY = os.environ["N8N_API_KEY"]
HEADERS = {
"X-N8N-API-KEY": N8N_API_KEY,
"Content-Type": "application/json",
}
def n8n_api(method, path, json=None):
url = f"{N8N_HOST}/api/v1{path}"
resp = requests.request(method, url, headers=HEADERS, json=json)
resp.raise_for_status()
return resp.json()python
import os
import requests
N8N_HOST = os.environ["N8N_HOST"]
N8N_API_KEY = os.environ["N8N_API_KEY"]
HEADERS = {
"X-N8N-API-KEY": N8N_API_KEY,
"Content-Type": "application/json",
}
def n8n_api(method, path, json=None):
url = f"{N8N_HOST}/api/v1{path}"
resp = requests.request(method, url, headers=HEADERS, json=json)
resp.raise_for_status()
return resp.json()List workflows
列出工作流
workflows = n8n_api("GET", "/workflows?limit=50")
for wf in workflows["data"]:
print(f"{wf['id']}: {wf['name']} (active={wf['active']})")
workflows = n8n_api("GET", "/workflows?limit=50")
for wf in workflows["data"]:
print(f"{wf['id']}: {wf['name']} (active={wf['active']})")
Create a variable
创建变量
n8n_api("POST", "/variables", {"key": "ENV", "value": "production"})
---n8n_api("POST", "/variables", {"key": "ENV", "value": "production"})
---Verification
验证
After any API interaction, verify:
- HTTP status code is 2xx
- Response contains expected fields (,
id, etc.)name - For workflow creation/update: check workflow appears in the list
- For activation: check field is
activetrue - For executions: check matches expected outcome
status
完成任何API交互后,请验证:
- HTTP状态码为2xx
- 响应包含预期字段(如、
id等)name - 对于工作流创建/更新:检查工作流是否出现在列表中
- 对于激活操作:检查字段是否为
activetrue - 对于执行记录:检查是否符合预期结果
status
Failure Modes
失败场景
- 401 Unauthorized: API key is missing, invalid, or expired. Regenerate in n8n UI > Settings > API.
- 404 Not Found: Wrong workflow/execution ID, or the resource was deleted. Verify ID with a list call.
- 400 Bad Request: Invalid JSON body or missing required fields. Check request structure.
- Connection refused: Wrong or n8n instance is down. Verify URL and instance status.
N8N_HOST - Empty array: No results match filters. Broaden query parameters.
data
- 401未授权:API密钥缺失、无效或过期。请在n8n界面 > 设置 > API中重新生成。
- 404未找到:工作流/执行记录ID错误,或资源已被删除。请通过列表调用验证ID。
- 400请求错误:JSON请求体无效或缺少必填字段。请检查请求结构。
- 连接被拒绝:错误或n8n实例已下线。请验证URL和实例状态。
N8N_HOST - 数组为空:没有结果匹配筛选条件。请放宽查询参数。
data