{
  "name": "Enrich Google Sheets rows via any REST API in rate-limited batches",
  "nodes": [
    {
      "id": "a2b55cbc-dbef-4d25-8261-d08d4c230542",
      "name": "Run Enrichment",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        624
      ]
    },
    {
      "id": "d3d2ab75-19ec-4bb5-b257-315dcdf998b7",
      "name": "Template Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -224
      ],
      "parameters": {
        "width": 560,
        "height": 816,
        "content": "## Enrich Google Sheets via API — Rate-Limited Batches\n\nThis template reads rows from a Google Sheet, calls any external API to enrich each row, and writes results back, in rate-limited batches to avo"
      }
    },
    {
      "id": "b45cc002-3be0-4516-a28e-4ef8056692a9",
      "name": "Batch Config Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        0
      ],
      "parameters": {
        "width": 380,
        "height": 364,
        "content": "## Batch Size & Rate Limit Config\n\n**SplitInBatches node** (`Batch Rows`)\n→ Open the node and set `Batch Size`\n→ Default: **5 rows per batch**\n→ Increase for fast APIs (e.g. 20)\n→ Decrease for strict "
      }
    },
    {
      "id": "049bb248-f6ad-4540-9cd1-6e865abfa1cf",
      "name": "API Credential Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        0
      ],
      "parameters": {
        "width": 588,
        "height": 364,
        "content": "## API Credential Setup\n\n**Call API node** (`Call API`)\n1. Open the node\n2. Set `URL` to your API endpoint\n   Example: `https://api.example.com/enrich`\n3. Set `Method` (GET or POST)\n4. Under **Authent"
      }
    },
    {
      "id": "0bb2bc15-b3bd-4839-996b-bae7f494daee",
      "name": "Read Rows",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        240,
        624
      ]
    },
    {
      "id": "b397055b-fc8f-4931-9ff5-72117ed053e0",
      "name": "Batch Rows",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        480,
        624
      ]
    },
    {
      "id": "b6e027b5-2ce6-4a76-bdb5-38c408ef23d9",
      "name": "Call API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        720,
        624
      ]
    },
    {
      "id": "deede1f3-59ea-4d10-bce6-b452a0eb05c9",
      "name": "Rate Limit Pause",
      "type": "n8n-nodes-base.wait",
      "position": [
        960,
        624
      ]
    },
    {
      "id": "ceb03f84-025e-4d4a-8da8-293e0d987bc9",
      "name": "API Success?",
      "type": "n8n-nodes-base.if",
      "position": [
        1200,
        624
      ]
    },
    {
      "id": "6cf9dc4c-579f-4b21-9be1-51bd8d41c043",
      "name": "Update Row",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1440,
        512
      ]
    },
    {
      "id": "ba0f3f22-39f4-4ccb-96d9-b5960eb9d8aa",
      "name": "Capture Error",
      "type": "n8n-nodes-base.set",
      "position": [
        1440,
        752
      ]
    },
    {
      "id": "15ccf54b-cebb-4fb7-8cd7-1cf044ab2e3b",
      "name": "Merge Results",
      "type": "n8n-nodes-base.merge",
      "position": [
        1680,
        624
      ]
    }
  ],
  "connections": {
    "Call API": {
      "main": [
        [
          {
            "node": "Rate Limit Pause",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Rows": {
      "main": [
        [
          {
            "node": "Batch Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Batch Rows": {
      "main": [
        [],
        [
          {
            "node": "Call API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Row": {
      "main": [
        [
          {
            "node": "Merge Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "API Success?": {
      "main": [
        [
          {
            "node": "Update Row",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Capture Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Capture Error": {
      "main": [
        [
          {
            "node": "Merge Results",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge Results": {
      "main": [
        [
          {
            "node": "Batch Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run Enrichment": {
      "main": [
        [
          {
            "node": "Read Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rate Limit Pause": {
      "main": [
        [
          {
            "node": "API Success?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}