n8n cung cấp REST API cho phép bạn tương tác với hệ thống một cách lập trình. Tài liệu này tổng hợp các API có sẵn trong n8n và cách sử dụng chúng.
n8n sử dụng API key để xác thực các cuộc gọi API.
- Đăng nhập vào n8n
- Đi đến Settings > n8n API
- Chọn "Create an API key"
- Sao chép "My API Key" để sử dụng trong các cuộc gọi API
Gửi API key trong header X-N8N-API-KEY của mỗi request.
curl -X 'GET' \
'<N8N_HOST>:<N8N_PORT>/<N8N_PATH>/api/v1/workflows' \
-H 'accept: application/json' \
-H 'X-N8N-API-KEY: <your-api-key>'- Đăng nhập vào n8n
- Đi đến Settings > n8n API
- Chọn "Delete" bên cạnh key bạn muốn xóa
- Xác nhận xóa bằng cách chọn "Delete Forever"
Kích thước trang mặc định là 100 kết quả, tối đa là 250.
Khi phản hồi chứa nhiều hơn một trang, nó sẽ bao gồm giá trị nextCursor, bạn có thể sử dụng để yêu cầu các trang tiếp theo.
# Lấy trang đầu tiên
curl -X 'GET' \
'<N8N_HOST>:<N8N_PORT>/<N8N_PATH>/api/v1/workflows?limit=150' \
-H 'accept: application/json' \
-H 'X-N8N-API-KEY: <your-api-key>'
# Phản hồi sẽ bao gồm nextCursor
{
"data": [...],
"nextCursor": "MTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDA"
}
# Lấy trang tiếp theo
curl -X 'GET' \
'<N8N_HOST>:<N8N_PORT>/<N8N_PATH>/api/v1/workflows?limit=150&cursor=MTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDA' \
-H 'accept: application/json' \
-H 'X-N8N-API-KEY: <your-api-key>'GET /api/v1/users
Tham số truy vấn:
limit(số, tối đa 250, mặc định 100): Số lượng kết quả tối đa trả vềcursor(chuỗi): Dùng cho phân trangincludeRole(boolean, mặc định false): Có bao gồm vai trò của người dùng hay khôngprojectId(chuỗi): ID dự án để lọc người dùng
POST /api/v1/users
Body request (mảng các đối tượng):
[
{
"email": "user@example.com",
"role": "global:admin"
}
]GET /api/v1/users/{id}
Tham số đường dẫn:
id(chuỗi): ID hoặc email của người dùng
Tham số truy vấn:
includeRole(boolean, mặc định false): Có bao gồm vai trò của người dùng hay không
DELETE /api/v1/users/{id}
Tham số đường dẫn:
id(chuỗi): ID hoặc email của người dùng
PATCH /api/v1/users/{id}/role
Tham số đường dẫn:
id(chuỗi): ID hoặc email của người dùng
Body request:
{
"newRoleName": "global:admin"
}POST /api/v1/audit
Body request (tùy chọn):
{
"additionalOptions": {
"daysAbandonedWorkflow": 30,
"categories": []
}
}GET /api/v1/executions
Tham số truy vấn:
includeData(boolean): Có bao gồm dữ liệu chi tiết của thực thi hay khôngstatus(chuỗi, enum: "error", "success", "waiting"): Trạng thái để lọc các thực thiworkflowId(chuỗi): Workflow để lọc các thực thiprojectId(chuỗi): ID dự án để lọc các thực thilimit(số, tối đa 250, mặc định 100): Số lượng kết quả tối đa trả vềcursor(chuỗi): Dùng cho phân trang
GET /api/v1/executions/{id}
Tham số đường dẫn:
id(số): ID của thực thi
Tham số truy vấn:
includeData(boolean): Có bao gồm dữ liệu chi tiết của thực thi hay không
DELETE /api/v1/executions/{id}
Tham số đường dẫn:
id(số): ID của thực thi
POST /api/v1/workflows
Body request:
{
"name": "Workflow 1",
"nodes": [],
"connections": {
"main": []
},
"settings": {
"saveExecutionProgress": true,
"saveManualExecutions": true,
"saveDataErrorExecution": "all",
"saveDataSuccessExecution": "all",
"executionTimeout": 3600,
"timezone": "America/New_York"
},
"staticData": {}
}GET /api/v1/workflows
Tham số truy vấn:
active(boolean): Lọc theo trạng thái hoạt độngtags(chuỗi): Lọc theo tags (phân tách bằng dấu phẩy)name(chuỗi): Lọc theo tênprojectId(chuỗi): Lọc theo ID dự ánexcludePinnedData(boolean): Không lấy dữ liệu đã ghimlimit(số, tối đa 250, mặc định 100): Số lượng kết quả tối đa trả vềcursor(chuỗi): Dùng cho phân trang
GET /api/v1/workflows/{id}
Tham số đường dẫn:
id(chuỗi): ID của workflow
Tham số truy vấn:
excludePinnedData(boolean): Không lấy dữ liệu đã ghim
DELETE /api/v1/workflows/{id}
Tham số đường dẫn:
id(chuỗi): ID của workflow
PUT /api/v1/workflows/{id}
Tham số đường dẫn:
id(chuỗi): ID của workflow
Body request:
{
"name": "Workflow 1 Updated",
"nodes": [],
"connections": {
"main": []
},
"settings": {
"saveExecutionProgress": true,
"saveManualExecutions": true,
"saveDataErrorExecution": "all",
"saveDataSuccessExecution": "all",
"executionTimeout": 3600,
"timezone": "America/New_York"
},
"staticData": {}
}POST /api/v1/workflows/{id}/activate
Tham số đường dẫn:
id(chuỗi): ID của workflow
POST /api/v1/workflows/{id}/deactivate
Tham số đường dẫn:
id(chuỗi): ID của workflow
PUT /api/v1/workflows/{id}/transfer
Tham số đường dẫn:
id(chuỗi): ID của workflow
Body request:
{
"destinationProjectId": "VmwOO9HeTEj20kxM"
}GET /api/v1/workflows/{id}/tags
Tham số đường dẫn:
id(chuỗi): ID của workflow
PUT /api/v1/workflows/{id}/tags
Tham số đường dẫn:
id(chuỗi): ID của workflow
Body request (mảng các đối tượng):
[
{
"id": "2tUt1wbLX592XDdX"
}
]POST /api/v1/credentials
Body request:
{
"name": "Joe's Github Credentials",
"type": "github",
"data": {
"token": "ada612vad6fa5df4adf5a5dsf4389adsf76da7s"
}
}DELETE /api/v1/credentials/{id}
Tham số đường dẫn:
id(chuỗi): ID của thông tin xác thực
GET /api/v1/credentials/schema/{credentialTypeName}
Tham số đường dẫn:
credentialTypeName(chuỗi): Tên loại thông tin xác thực
PUT /api/v1/credentials/{id}/transfer
Tham số đường dẫn:
id(chuỗi): ID của thông tin xác thực
Body request:
{
"destinationProjectId": "VmwOO9HeTEj20kxM"
}POST /api/v1/tags
Body request:
{
"name": "Production"
}GET /api/v1/tags
Tham số truy vấn:
limit(số, tối đa 250, mặc định 100): Số lượng kết quả tối đa trả vềcursor(chuỗi): Dùng cho phân trang
GET /api/v1/tags/{id}
Tham số đường dẫn:
id(chuỗi): ID của tag
DELETE /api/v1/tags/{id}
Tham số đường dẫn:
id(chuỗi): ID của tag
PUT /api/v1/tags/{id}
Tham số đường dẫn:
id(chuỗi): ID của tag
Body request:
{
"name": "Production-Updated"
}POST /api/v1/source-control/pull
Body request:
{
"force": true,
"variables": {
"foo": "bar"
}
}POST /api/v1/variables
Body request:
{
"key": "API_KEY",
"value": "test-value"
}GET /api/v1/variables
Tham số truy vấn:
limit(số, tối đa 250, mặc định 100): Số lượng kết quả tối đa trả vềcursor(chuỗi): Dùng cho phân trang
DELETE /api/v1/variables/{id}
Tham số đường dẫn:
id(chuỗi): ID của biến
POST /api/v1/projects
Body request:
{
"name": "My Project"
}GET /api/v1/projects
Tham số truy vấn:
limit(số, tối đa 250, mặc định 100): Số lượng kết quả tối đa trả vềcursor(chuỗi): Dùng cho phân trang
DELETE /api/v1/projects/{projectId}
Tham số đường dẫn:
projectId(chuỗi): ID của dự án
PUT /api/v1/projects/{projectId}
Tham số đường dẫn:
projectId(chuỗi): ID của dự án
Body request:
{
"name": "My Project Updated"
}n8n cung cấp giao diện Swagger UI playground trong các phiên bản tự host. Đây là tài liệu tương tác, nơi bạn có thể thử nghiệm các request.
Đường dẫn để truy cập playground phụ thuộc vào cách bạn host n8n:
N8N_HOST:N8N_PORT/N8N_PATH/api/v1/docs
Lưu ý: Nếu bạn chọn "Authorize" và nhập API key của bạn trong API playground, bạn sẽ có quyền truy cập vào dữ liệu thực của mình. Điều này hữu ích để thử nghiệm các request, nhưng hãy lưu ý rằng bạn có thể thay đổi hoặc xóa dữ liệu thực.