GODRICH
#css-animation#button#loader#transition#scroll#ui#xu-huong-thiet-ke

n8n Automation Basics for Beginners — 9 Mẫu API

n8n là công cụ nối app và API lại với nhau, không cần viết backend hay thuê developer.

Tự chạy · bấm ô để tới mục đó · cả 9 trong một zip

9 workflow được xếp theo đúng thứ tự khi bạn thực sự dựng một automation. Hai cái đầu gọi API (01 query params, 02 phân trang), hai cái tiếp theo chỉnh lại dữ liệu nhận về (03 biến đổi, 04 gộp nhiều lệnh gọi), một cái gửi dữ liệu đi (05 tạo hoặc cập nhật), ba cái phòng khi thất bại (06 thử lại, 07 rẽ nhánh theo status, 08 giãn tốc độ gọi), và cái cuối đảo ngược hướng — nhận request thay vì gửi đi (09 webhook). Cứ theo thứ tự này, không cần đọc code bạn cũng thấy vì sao automation thật thường có hình dạng như vậy.

01GET kèm query params

Bạn thấy gì

HTTP Request gắn postId làm query parameter để lấy danh sách comment, rồi Set chỉ giữ lại name, email, body. Đây là dạng URL có dấu hỏi phổ biến nhất bạn sẽ gặp.

GET kèm query params
Mở trong tab mới

01 · GET kèm query params — Diện tích đo được 2.989% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

HTTP Request GET쿼리 파라미터V2 실행 확인

Dùng ở đâu

Trong thực tế, dạng này hay dùng để lấy comment của một bài viết, gọi API tìm kiếm/lọc.

{
  "name": "Get Comments",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "GET",
    "url": "https://jsonplaceholder.typicode.com/comments",
    "sendQuery": true,
    "queryParameters": {
      "parameters": [
        { "name": "postId", "value": "1" }
      ]
    },
    "options": {}
  }
}

02Lấy dữ liệu theo từng trang

Chuyện gì diễn ra trên màn hình

Code tạo số trang 1, 2, 3, rồi Loop Over Items đưa từng trang vào HTTP Request và quay lại chính nó để gọi trang kế tiếp. Vì HTTP thay hẳn dữ liệu item bằng response, Tag Page phải trỏ thẳng tới node gốc theo tên để lấy lại số trang.

Lấy dữ liệu theo từng trang
Mở trong tab mới

02 · Lấy dữ liệu theo từng trang — Diện tích đo được 7.178% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Loop Over Items_page·_limitV2 실행 확인

Chỗ dùng

Trong thực tế, dạng này hay dùng để thu thập toàn bộ API danh sách, kéo dữ liệu nhiều hơn một trang.

{
  "name": "Tag Page",
  "type": "n8n-nodes-base.set",
  "typeVersion": 3.5,
  "parameters": {
    "mode": "manual",
    "assignments": {
      "assignments": [
        {
          "id": "1",
          "name": "page",
          "value": "={{ $('Make Pages').item.json.page }}",
          "type": "number"
        }
      ]
    },
    "includeOtherFields": true,
    "options": {}
  }
}

03Biến đổi dữ liệu trả về

Chuyển động thế nào

HTTP Request gọi một API thời tiết không cần key, rồi Code tính đổi độ C sang độ F và viết một dòng tóm tắt. Đây là ví dụ ngắn nhất về việc định dạng lại response thay vì dùng nguyên bản nó trả về.

Biến đổi dữ liệu trả về
Mở trong tab mới

03 · Biến đổi dữ liệu trả về — Diện tích đo được 2.949% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

HTTP RequestCode 변환V2 실행 확인

Dùng khi nào

Trong thực tế, dạng này hay dùng để đổi đơn vị, chuẩn hóa tên field trong response.

{
  "name": "Convert Units",
  "type": "n8n-nodes-base.code",
  "typeVersion": 2,
  "parameters": {
    "jsCode": "const c = $input.first().json.current.temperature_2m;\nconst f = Math.round((c * 9 / 5 + 32) * 10) / 10;\nreturn [{ json: { tempC: c, tempF: f, summary: `Seoul is ${c}C (${f}F)` } }];"
  }
}

04Nối ba lệnh gọi HTTP

Bạn thấy gì

Ba node HTTP Request lấy users, posts, todos riêng biệt, Set gắn field source để đánh dấu nguồn, rồi Merge ở chế độ Append xếp cả ba danh sách thành một. Khác với ghép theo khóa, cái này chỉ nối chồng kết quả lại.

Nối ba lệnh gọi HTTP
Mở trong tab mới

04 · Nối ba lệnh gọi HTTP — Diện tích đo được 8.676% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

HTTP Request ×3Merge appendV2 실행 확인

Dùng ở đâu

Trong thực tế, dạng này hay dùng để gộp kết quả nhiều API vào một bảng, hợp log từ ba kênh thông báo.

{
  "name": "Combine Three",
  "type": "n8n-nodes-base.merge",
  "typeVersion": 3.2,
  "parameters": {
    "mode": "append",
    "numberInputs": 3
  }
}

05Tạo mới hoặc cập nhật

Chuyện gì diễn ra trên màn hình

Code phát ra một item để tạo mới và một item để cập nhật, IF chia đường: một bên gửi POST (tạo), bên kia gửi PUT (cập nhật), rồi Merge gộp kết quả lại. Đây là bộ khung quen thuộc để quyết định ngay tại chỗ một resource là mới hay đã tồn tại.

Tạo mới hoặc cập nhật
Mở trong tab mới

05 · Tạo mới hoặc cập nhật — Diện tích đo được 11.49% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

IF 분기POST + PUTV2 실행 확인

Chỗ dùng

Trong thực tế, dạng này hay dùng để upsert bản ghi CRM, gộp tạo và sửa tồn kho trong một workflow.

{
  "name": "Update Post",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "PUT",
    "url": "=https://jsonplaceholder.typicode.com/posts/{{ $json.id }}",
    "sendBody": true,
    "specifyBody": "json",
    "jsonBody": "={{ JSON.stringify({ id: $json.id, title: $json.title, body: $json.body, userId: $json.userId }) }}"
  }
}

06Thử lại khi thất bại

Chuyển động thế nào

Bản thân node HTTP Request được cấu hình thử lại 3 lần, cách nhau 1.5 giây, rồi Set ghi kèm chính sách đó vào kết quả. Vì mọi thứ nằm sẵn trong node nên bạn không cần thêm IF hay vòng lặp nào cả.

Thử lại khi thất bại
Mở trong tab mới

06 · Thử lại khi thất bại — Diện tích đo được 2.96% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

retryOnFailmaxTries 3V2 실행 확인

Dùng khi nào

Trong thực tế, dạng này hay dùng để gọi API ngoài không ổn định, hấp thụ lỗi tạm thời trong batch chạy đêm.

{
  "name": "Get User With Retry",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "retryOnFail": true,
  "maxTries": 3,
  "waitBetweenTries": 1500,
  "onError": "continueRegularOutput",
  "parameters": {
    "method": "GET",
    "url": "https://jsonplaceholder.typicode.com/users/1"
  }
}

07Rẽ nhánh theo mã trạng thái

Bạn thấy gì

Với tùy chọn Never Error, HTTP Request nhận về cả ba phản hồi 200, 404, 500 mà không bị dừng, rồi Switch định tuyến chúng thành ba nhánh — thành công, lỗi phía client, lỗi phía server — theo dải mã trạng thái. Workflow vẫn chạy tiếp dù lệnh gọi thất bại.

Rẽ nhánh theo mã trạng thái
Mở trong tab mới

07 · Rẽ nhánh theo mã trạng thái — Diện tích đo được 10.135% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

neverErrorSwitch 3 routesV2 실행 확인

Dùng ở đâu

Trong thực tế, dạng này hay dùng để rẽ nhánh khi API thanh toán lỗi, gửi cảnh báo khác nhau theo trạng thái.

{
  "name": "Call Endpoint",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.5,
  "parameters": {
    "method": "GET",
    "url": "={{ $json.url }}",
    "options": {
      "response": {
        "response": {
          "fullResponse": true,
          "neverError": true
        }
      }
    }
  }
}

08Chậm lại để tránh giới hạn tốc độ

Chuyện gì diễn ra trên màn hình

Loop Over Items đưa từng ID trong ba ID vào HTTP Request, rồi Wait nghỉ 1 giây mỗi lần trước khi quay lại vòng lặp. Bạn dùng nguyên mẫu này khi API giới hạn số lần gọi mỗi giây.

Chậm lại để tránh giới hạn tốc độ
Mở trong tab mới

08 · Chậm lại để tránh giới hạn tốc độ — Diện tích đo được 7.235% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

Loop Over ItemsWait 1sV2 실행 확인

Chỗ dùng

Trong thực tế, dạng này hay dùng để tránh vượt giới hạn khi gọi API hàng loạt, điều tiết tốc độ thu thập.

{
  "name": "Throttle",
  "type": "n8n-nodes-base.wait",
  "typeVersion": 1.1,
  "parameters": {
    "resume": "timeInterval",
    "amount": 1,
    "unit": "seconds"
  }
}

09Webhook phản hồi đa nhánh

Chuyển động thế nào

Webhook nhận một POST, Switch chia theo field type trong body thành ba nhánh — order, refund, và còn lại — mỗi nhánh gắn nhãn route, rồi Respond to Webhook luôn trả về 200 kèm nhãn đó. Khác với kiểm tra đúng/sai, cái này phản hồi theo nhiều nhánh cùng lúc, và mới chỉ xác minh được bước import — chạy thật cần một URL webhook đang sống.

Webhook phản hồi đa nhánh
Mở trong tab mới

09 · Webhook phản hồi đa nhánh — Diện tích đo được 9.683% · khung hình chuyển động 23/23Nguyên tác GODRICH · SCSS và React nằm trong tệp zip · Xem mật khẩu

WebhookSwitch 3 routesV1 가져오기 확인

Dùng khi nào

Trong thực tế, dạng này hay dùng để nhận sự kiện thanh toán, hoàn tiền, và các loại khác trên một webhook, định tuyến intent chatbot.

{
  "name": "Route By Type",
  "type": "n8n-nodes-base.switch",
  "typeVersion": 3.4,
  "parameters": {
    "mode": "rules",
    "rules": {
      "values": [
        {
          "conditions": {
            "conditions": [
              {
                "leftValue": "={{ $json.body.type }}",
                "rightValue": "order",
                "operator": { "type": "string", "operation": "equals" }
              }
            ]
          },
          "outputKey": "order"
        }
      ]
    },
    "options": { "fallbackOutput": "extra", "renameFallbackOutput": "other" }
  }
}

Chuẩn bị — tài khoản, quyền, phiên bản

Bảng grade và phiên bản

Cột chuẩn bị toàn ghi "không có" nhưng bảng này vẫn cần thiết vì grade và phiên bản n8n khác nhau ở từng item. Grade chia làm ba mức V0 (chỉ đúng cấu trúc), V1 (đã xác minh import), V2 (đã chạy và kiểm tra) — bộ này có tám item chạm V2, riêng 09 dừng thành thật ở V1.

Item Grade Chuẩn bị Phiên bản n8n
01 GET kèm query params V2 Không có 2.38.5
02 Lấy dữ liệu theo từng trang V2 Không có 2.38.5
03 Biến đổi dữ liệu trả về V2 Không có 2.38.5
04 Nối ba lệnh gọi HTTP V2 Không có 2.38.5
05 Tạo mới hoặc cập nhật V2 Không có 2.38.5
06 Thử lại khi thất bại V2 Không có 2.38.5
07 Rẽ nhánh theo mã trạng thái V2 Không có 2.38.5
08 Chậm lại để tránh giới hạn tốc độ V2 Không có 2.38.5
09 Webhook phản hồi đa nhánh V1 (đã xác minh import; chạy thật cần URL webhook của bạn) Không có 2.38.5

Ba cách đưa lên canvas

Đưa file lên canvas n8n thì tùy bạn chọn cách nào cũng được. Dán thẳng JSON vào canvas bằng Ctrl/Cmd+V, hoặc dùng Import from File ở menu trên cùng để chọn file sau khi giải nén. Sau khi nó xuất hiện, bấm Test workflow ở góc trên bên trái, hoặc bấm nút play trên Manual Trigger, để xem cả luồng chạy ngay tại chỗ.

Bẫy nằm ở đâu

Tùy chọn Never Error

Chỗ khiến mình loay hoay nhất là tùy chọn Never Error ở item 07. Chỉ bật Never Error thì HTTP Request không còn làm workflow chết khi gặp 4xx hay 5xx nữa, nhưng field statusCode lại biến mất luôn, nên chẳng có gì để rẽ nhánh theo status cả — phải bật thêm Full Response thì statusCode, headers, body mới gộp về cùng lúc. Mật khẩu mở file zip này là kjnkjsfx, giải nén ra là thấy ngay chín file JSON nằm trong workflows/. Cấu hình thử lại ở item 06 cũng có bẫy tương tự: các giá trị như retryOnFail, maxTries không nằm trong parameters mà nằm ở ngay đỉnh của node (tab Settings), nên khi tự viết JSON bằng tay rất dễ đặt nhầm chỗ.

FAQ

Tài khoản n8n cloud có mở được không?

Mở được. Không cái nào trong chín workflow này cần credential đòi tài khoản hay community node, nên chúng import y nguyên trên cả bản cloud miễn phí. Riêng item 09 là ngoại lệ — muốn chạy thật thì phải gửi request tới URL webhook thật mà cloud của bạn cấp.

Không biết JavaScript thì có dùng được không?

Được. n8n vận hành bằng cách kéo node nối lại và điền vào ô trống, nên JSON trong bài này chỉ để bạn nhìn vào bên trong, không phải để gõ tay. Nếu dùng công cụ AI, dán nguyên văn trong prompt.md cũng ra cùng một cấu trúc.

Gặp lỗi typeVersion thì làm sao?

Tạo mới cùng loại node đó trên chính n8n của bạn rồi export ra là biết ngay phiên bản nó thật sự hỗ trợ. Chín workflow này đã được xác minh trên n8n 2.38.5 (Node 24), và tên các tùy chọn thử lại, xử lý lỗi đều theo đúng tài liệu HTTP Request chính thức của n8n.

Nếu bạn mới chạm vào n8n lần đầu, danh mục automation có thêm ví dụ cùng hướng, còn trang giới thiệu ghi rõ trang này kiểm chứng mọi thứ theo tiêu chuẩn nào.

Nhập mật khẩu file nén

Mật khẩu nằm ngay trong bài viết này. Đọc tới đó bạn sẽ thấy.