@n8n-as-code/skills 1.1.3-next.13 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-03-17T11:31:22.125Z",
2
+ "generatedAt": "2026-03-17T11:46:05.334Z",
3
3
  "version": "1.0.0",
4
4
  "sourceUrl": "https://docs.n8n.io/llms.txt",
5
5
  "totalPages": 1254,
@@ -9419,6 +9419,109 @@
9419
9419
  },
9420
9420
  {
9421
9421
  "id": "page-0100",
9422
+ "title": "Expressions for data transformation",
9423
+ "url": "https://docs.n8n.io/data/expressions-for-transformation/index.md",
9424
+ "urlPath": "data/expressions-for-transformation/index.md",
9425
+ "category": "data",
9426
+ "subcategory": null,
9427
+ "nodeName": null,
9428
+ "nodeType": null,
9429
+ "content": {
9430
+ "markdown": "# Expressions for data transformation\n\nYou can use expression transformation functions anywhere expressions are supported in n8n.\n\nHowever, if your main goal is to transform data using expressions without performing any other operations, use the **Edit Fields (Set)** node. This node is designed specifically for data transformation, providing a clean interface to:\n\n- Add new fields with expression-based values\n- Modify existing field values using transformation functions\n- Remove or rename fields\n\nThis keeps your workflow organized by separating data transformation from business logic, making it easier to understand and maintain.\n\n**Best practice**: Instead of adding complex expressions to multiple parameters across different nodes, use Edit Fields to prepare your data first, then pass the transformed data to subsequent nodes.\n\nSee [Expression reference](../expression-reference/) for more information and examples.\n\n### Example: Get data from webhook body\n\nConsider the following scenario: you have a webhook trigger that receives data through the webhook body. You want to extract some of that data for use in the workflow.\n\nYour webhook data looks similar to this:\n\n```\n[\n {\n \"headers\": {\n \"host\": \"n8n.instance.address\",\n ...\n },\n \"params\": {},\n \"query\": {},\n \"body\": {\n \"name\": \"Jim\",\n \"age\": 30,\n \"city\": \"New York\"\n }\n }\n]\n```\n\nIn the next node in the workflow, you want to get just the value of `city`. You can use the following expression:\n\n```\n{{$json.body.city}}\n```\n\nThis expression:\n\n1. Accesses the incoming JSON-formatted data using n8n's custom `$json` variable.\n1. Finds the value of `city` (in this example, \"New York\"). Note that this example uses JMESPath syntax to query the JSON data. You can also write this expression as `{{$json['body']['city']}}`.\n\n### Using expressions in credentials\n\nYou can also use expressions in credential fields. When you reference data using expressions (for example, `{{$json.body.city}}` or `{{ $('Webhook').item.json.headers.authorization }}`), n8n evaluates the expression within the context of the current workflow execution.\n\nThis means that:\n\n- Expressions in credentials can access data available in the current execution context, including data from previous nodes.\n- Each workflow execution has its own data context.\n- Expressions are evaluated per execution, so different executions don't share data.\n\nFor example, if a webhook node receives an access token and you reference it in a credential field using an expression, the value is resolved using the execution data of that specific workflow run.\n\n## Example: Writing longer JavaScript as expressions\n\nYou can do things like variable assignments or multiple statements in an expression, but you need to wrap your code using the syntax for an Immediately Invoked Function Expression (IIFE).\n\nThe following code use the Luxon date and time library to find the time between two dates in months. We surround the code in both the handlebar brackets for an expression and the IIFE syntax.\n\n```\n{{(()=>{\n let end = DateTime.fromISO('2017-03-13');\n let start = DateTime.fromISO('2017-02-13');\n let diffInMonths = end.diff(start, 'months');\n return diffInMonths.toObject();\n})()}}\n```\n\n## Common issues\n\nHere are some common errors and issues related to [expressions](../expressions/) and steps to resolve or troubleshoot them.\n\n### The 'JSON Output' in item 0 contains invalid JSON\n\nThis error occurs when you use JSON mode but don't provide a valid JSON object. Depending on the problem with the JSON object, the error sometimes displays as `The 'JSON Output' in item 0 does not contain a valid JSON object`.\n\nTo resolve this, make sure that the code you provide is valid JSON:\n\n- Check the JSON with a [JSON validator](https://jsonlint.com/).\n- Check that your JSON object doesn't reference undefined input data. This may occur if the incoming data doesn't always include the same fields.\n\n### Can't get data for expression\n\nThis error occurs when n8n can't retrieve the data referenced by an expression. Often, this happens when the preceding node hasn't been run yet.\n\nAnother variation of this may appear as `Referenced node is unexecuted`. In that case, the full text of this error will tell you the exact node that isn't executing in this format:\n\n> An expression references the node '<node-name>', but it hasn't been executed yet. Either change the expression, or re-wire your workflow to make sure that node executes first.\n\nTo begin troubleshooting, test the workflow up to the named node.\n\nFor nodes that use JavaScript or other custom code, you can check if a previous node has executed before trying to use its value by checking the following:\n\n```\n$(\"<node-name>\").isExecuted\n```\n\nAs an example, this JSON references the parameters of the input data. This error will display if you test this step without connecting it to another node:\n\n```\n{\n \"my_field_1\": {{ $input.params }}\n}\n```\n\n### Invalid syntax\n\nThis error occurs when you use an expression that has a syntax error.\n\nFor example, the expression in this JSON includes a trailing period, which results in an invalid syntax error:\n\n```\n{\n \"my_field_1\": \"value\",\n \"my_field_2\": {{ $('If').item.json. }}\n}\n```\n\nTo resolve this error, check your [expression syntax](../expressions/) to make sure it follows the expected format.\n",
9431
+ "excerpt": "# Expressions for data transformation You can use expression transformation functions anywhere expressions are supported in n8n. However, if your main goal is to transform data using expressions without performing any other operations, use the **Edit Fields (Set)** node. This node is designed specifically for data transformation, providing a clean interface to: - Add new fields with expression-based values - Modify existing field values using transformation functions - Remove or rename fields...",
9432
+ "sections": [
9433
+ {
9434
+ "title": "Expressions for data transformation",
9435
+ "level": 1,
9436
+ "content": "You can use expression transformation functions anywhere expressions are supported in n8n.\n\nHowever, if your main goal is to transform data using expressions without performing any other operations, use the **Edit Fields (Set)** node. This node is designed specifically for data transformation, providing a clean interface to:\n\n- Add new fields with expression-based values\n- Modify existing field values using transformation functions\n- Remove or rename fields\n\nThis keeps your workflow organized by separating data transformation from business logic, making it easier to understand and maintain.\n\n**Best practice**: Instead of adding complex expressions to multiple parameters across different nodes, use Edit Fields to prepare your data first, then pass the transformed data to subsequent nodes.\n\nSee [Expression reference](../expression-reference/) for more information and examples."
9437
+ }
9438
+ ]
9439
+ },
9440
+ "metadata": {
9441
+ "keywords": [
9442
+ "expressions",
9443
+ "data",
9444
+ "transformation",
9445
+ "example:",
9446
+ "from",
9447
+ "webhook",
9448
+ "body",
9449
+ "using",
9450
+ "credentials",
9451
+ "writing",
9452
+ "longer",
9453
+ "javascript",
9454
+ "common",
9455
+ "issues",
9456
+ "'json",
9457
+ "output'",
9458
+ "item",
9459
+ "contains",
9460
+ "invalid",
9461
+ "json",
9462
+ "can't",
9463
+ "expression",
9464
+ "syntax"
9465
+ ],
9466
+ "useCases": [
9467
+ "Get data from webhook body",
9468
+ "you have a webhook trigger that receives data through the webhook body. You want to extract some of that data for use in the workflow.",
9469
+ "Writing longer JavaScript as expressions"
9470
+ ],
9471
+ "operations": [],
9472
+ "codeExamples": 6,
9473
+ "complexity": "intermediate",
9474
+ "readingTime": "5 min",
9475
+ "contentLength": 5366,
9476
+ "relatedPages": []
9477
+ },
9478
+ "searchIndex": {
9479
+ "fullText": "expressions for data transformation # expressions for data transformation\n\nyou can use expression transformation functions anywhere expressions are supported in n8n.\n\nhowever, if your main goal is to transform data using expressions without performing any other operations, use the **edit fields (set)** node. this node is designed specifically for data transformation, providing a clean interface to:\n\n- add new fields with expression-based values\n- modify existing field values using transformation functions\n- remove or rename fields\n\nthis keeps your workflow organized by separating data transformation from business logic, making it easier to understand and maintain.\n\n**best practice**: instead of adding complex expressions to multiple parameters across different nodes, use edit fields to prepare your data first, then pass the transformed data to subsequent nodes.\n\nsee [expression reference](../expression-reference/) for more information and examples.\n\n### example: get data from webhook body\n\nconsider the following scenario: you have a webhook trigger that receives data through the webhook body. you want to extract some of that data for use in the workflow.\n\nyour webhook data looks similar to this:\n\n```\n[\n {\n \"headers\": {\n \"host\": \"n8n.instance.address\",\n ...\n },\n \"params\": {},\n \"query\": {},\n \"body\": {\n \"name\": \"jim\",\n \"age\": 30,\n \"city\": \"new york\"\n }\n }\n]\n```\n\nin the next node in the workflow, you want to get just the value of `city`. you can use the following expression:\n\n```\n{{$json.body.city}}\n```\n\nthis expression:\n\n1. accesses the incoming json-formatted data using n8n's custom `$json` variable.\n1. finds the value of `city` (in this example, \"new york\"). note that this example uses jmespath syntax to query the json data. you can also write this expression as `{{$json['body']['city']}}`.\n\n### using expressions in credentials\n\nyou can also use expressions in credential fields. when you reference data using expressions (for example, `{{$json.body.city}}` or `{{ $('webhook').item.json.headers.authorization }}`), n8n evaluates the expression within the context of the current workflow execution.\n\nthis means that:\n\n- expressions in credentials can access data available in the current execution context, including data from previous nodes.\n- each workflow execution has its own data context.\n- expressions are evaluated per execution, so different executions don't share data.\n\nfor example, if a webhook node receives an access token and you reference it in a credential field using an expression, the value is resolved using the execution data of that specific workflow run.\n\n## example: writing longer javascript as expressions\n\nyou can do things like variable assignments or multiple statements in an expression, but you need to wrap your code using the syntax for an immediately invoked function expression (iife).\n\nthe following code use the luxon date and time library to find the time between two dates in months. we surround the code in both the handlebar brackets for an expression and the iife syntax.\n\n```\n{{(()=>{\n let end = datetime.fromiso('2017-03-13');\n let start = datetime.fromiso('2017-02-13');\n let diffinmonths = end.diff(start, 'months');\n return diffinmonths.toobject();\n})()}}\n```\n\n## common issues\n\nhere are some common errors and issues related to [expressions](../expressions/) and steps to resolve or troubleshoot them.\n\n### the 'json output' in item 0 contains invalid json\n\nthis error occurs when you use json mode but don't provide a valid json object. depending on the problem with the json object, the error sometimes displays as `the 'json output' in item 0 does not contain a valid json object`.\n\nto resolve this, make sure that the code you provide is valid json:\n\n- check the json with a [json validator](https://jsonlint.com/).\n- check that your json object doesn't reference undefined input data. this may occur if the incoming data doesn't always include the same fields.\n\n### can't get data for expression\n\nthis error occurs when n8n can't retrieve the data referenced by an expression. often, this happens when the preceding node hasn't been run yet.\n\nanother variation of this may appear as `referenced node is unexecuted`. in that case, the full text of this error will tell you the exact node that isn't executing in this format:\n\n> an expression references the node '<node-name>', but it hasn't been executed yet. either change the expression, or re-wire your workflow to make sure that node executes first.\n\nto begin troubleshooting, test the workflow up to the named node.\n\nfor nodes that use javascript or other custom code, you can check if a previous node has executed before trying to use its value by checking the following:\n\n```\n$(\"<node-name>\").isexecuted\n```\n\nas an example, this json references the parameters of the input data. this error will display if you test this step without connecting it to another node:\n\n```\n{\n \"my_field_1\": {{ $input.params }}\n}\n```\n\n### invalid syntax\n\nthis error occurs when you use an expression that has a syntax error.\n\nfor example, the expression in this json includes a trailing period, which results in an invalid syntax error:\n\n```\n{\n \"my_field_1\": \"value\",\n \"my_field_2\": {{ $('if').item.json. }}\n}\n```\n\nto resolve this error, check your [expression syntax](../expressions/) to make sure it follows the expected format.\n expressions for data transformation",
9480
+ "importantTerms": [
9481
+ "data",
9482
+ "this",
9483
+ "json",
9484
+ "expression",
9485
+ "expressions",
9486
+ "node",
9487
+ "that",
9488
+ "error",
9489
+ "your",
9490
+ "using",
9491
+ "workflow",
9492
+ "example",
9493
+ "transformation",
9494
+ "syntax",
9495
+ "fields",
9496
+ "webhook",
9497
+ "body",
9498
+ "city",
9499
+ "reference",
9500
+ "value",
9501
+ "when",
9502
+ "execution",
9503
+ "code",
9504
+ "nodes",
9505
+ "following",
9506
+ "item",
9507
+ "object",
9508
+ "check",
9509
+ "with",
9510
+ "from",
9511
+ "name",
9512
+ "context",
9513
+ "resolve",
9514
+ "invalid",
9515
+ "occurs",
9516
+ "valid",
9517
+ "make",
9518
+ "sure",
9519
+ "input"
9520
+ ]
9521
+ }
9522
+ },
9523
+ {
9524
+ "id": "page-0101",
9422
9525
  "title": "Expressions versus data nodes",
9423
9526
  "url": "https://docs.n8n.io/data/expressions/index.md",
9424
9527
  "urlPath": "data/expressions/index.md",
@@ -9498,7 +9601,7 @@
9498
9601
  }
9499
9602
  },
9500
9603
  {
9501
- "id": "page-0101",
9604
+ "id": "page-0102",
9502
9605
  "title": "Approaches for transforming data",
9503
9606
  "url": "https://docs.n8n.io/data/transforming-data/index.md",
9504
9607
  "urlPath": "data/transforming-data/index.md",
@@ -9554,109 +9657,6 @@
9554
9657
  ]
9555
9658
  }
9556
9659
  },
9557
- {
9558
- "id": "page-0102",
9559
- "title": "Expressions for data transformation",
9560
- "url": "https://docs.n8n.io/data/expressions-for-transformation/index.md",
9561
- "urlPath": "data/expressions-for-transformation/index.md",
9562
- "category": "data",
9563
- "subcategory": null,
9564
- "nodeName": null,
9565
- "nodeType": null,
9566
- "content": {
9567
- "markdown": "# Expressions for data transformation\n\nYou can use expression transformation functions anywhere expressions are supported in n8n.\n\nHowever, if your main goal is to transform data using expressions without performing any other operations, use the **Edit Fields (Set)** node. This node is designed specifically for data transformation, providing a clean interface to:\n\n- Add new fields with expression-based values\n- Modify existing field values using transformation functions\n- Remove or rename fields\n\nThis keeps your workflow organized by separating data transformation from business logic, making it easier to understand and maintain.\n\n**Best practice**: Instead of adding complex expressions to multiple parameters across different nodes, use Edit Fields to prepare your data first, then pass the transformed data to subsequent nodes.\n\nSee [Expression reference](../expression-reference/) for more information and examples.\n\n### Example: Get data from webhook body\n\nConsider the following scenario: you have a webhook trigger that receives data through the webhook body. You want to extract some of that data for use in the workflow.\n\nYour webhook data looks similar to this:\n\n```\n[\n {\n \"headers\": {\n \"host\": \"n8n.instance.address\",\n ...\n },\n \"params\": {},\n \"query\": {},\n \"body\": {\n \"name\": \"Jim\",\n \"age\": 30,\n \"city\": \"New York\"\n }\n }\n]\n```\n\nIn the next node in the workflow, you want to get just the value of `city`. You can use the following expression:\n\n```\n{{$json.body.city}}\n```\n\nThis expression:\n\n1. Accesses the incoming JSON-formatted data using n8n's custom `$json` variable.\n1. Finds the value of `city` (in this example, \"New York\"). Note that this example uses JMESPath syntax to query the JSON data. You can also write this expression as `{{$json['body']['city']}}`.\n\n### Using expressions in credentials\n\nYou can also use expressions in credential fields. When you reference data using expressions (for example, `{{$json.body.city}}` or `{{ $('Webhook').item.json.headers.authorization }}`), n8n evaluates the expression within the context of the current workflow execution.\n\nThis means that:\n\n- Expressions in credentials can access data available in the current execution context, including data from previous nodes.\n- Each workflow execution has its own data context.\n- Expressions are evaluated per execution, so different executions don't share data.\n\nFor example, if a webhook node receives an access token and you reference it in a credential field using an expression, the value is resolved using the execution data of that specific workflow run.\n\n## Example: Writing longer JavaScript as expressions\n\nYou can do things like variable assignments or multiple statements in an expression, but you need to wrap your code using the syntax for an Immediately Invoked Function Expression (IIFE).\n\nThe following code use the Luxon date and time library to find the time between two dates in months. We surround the code in both the handlebar brackets for an expression and the IIFE syntax.\n\n```\n{{(()=>{\n let end = DateTime.fromISO('2017-03-13');\n let start = DateTime.fromISO('2017-02-13');\n let diffInMonths = end.diff(start, 'months');\n return diffInMonths.toObject();\n})()}}\n```\n\n## Common issues\n\nHere are some common errors and issues related to [expressions](../expressions/) and steps to resolve or troubleshoot them.\n\n### The 'JSON Output' in item 0 contains invalid JSON\n\nThis error occurs when you use JSON mode but don't provide a valid JSON object. Depending on the problem with the JSON object, the error sometimes displays as `The 'JSON Output' in item 0 does not contain a valid JSON object`.\n\nTo resolve this, make sure that the code you provide is valid JSON:\n\n- Check the JSON with a [JSON validator](https://jsonlint.com/).\n- Check that your JSON object doesn't reference undefined input data. This may occur if the incoming data doesn't always include the same fields.\n\n### Can't get data for expression\n\nThis error occurs when n8n can't retrieve the data referenced by an expression. Often, this happens when the preceding node hasn't been run yet.\n\nAnother variation of this may appear as `Referenced node is unexecuted`. In that case, the full text of this error will tell you the exact node that isn't executing in this format:\n\n> An expression references the node '<node-name>', but it hasn't been executed yet. Either change the expression, or re-wire your workflow to make sure that node executes first.\n\nTo begin troubleshooting, test the workflow up to the named node.\n\nFor nodes that use JavaScript or other custom code, you can check if a previous node has executed before trying to use its value by checking the following:\n\n```\n$(\"<node-name>\").isExecuted\n```\n\nAs an example, this JSON references the parameters of the input data. This error will display if you test this step without connecting it to another node:\n\n```\n{\n \"my_field_1\": {{ $input.params }}\n}\n```\n\n### Invalid syntax\n\nThis error occurs when you use an expression that has a syntax error.\n\nFor example, the expression in this JSON includes a trailing period, which results in an invalid syntax error:\n\n```\n{\n \"my_field_1\": \"value\",\n \"my_field_2\": {{ $('If').item.json. }}\n}\n```\n\nTo resolve this error, check your [expression syntax](../expressions/) to make sure it follows the expected format.\n",
9568
- "excerpt": "# Expressions for data transformation You can use expression transformation functions anywhere expressions are supported in n8n. However, if your main goal is to transform data using expressions without performing any other operations, use the **Edit Fields (Set)** node. This node is designed specifically for data transformation, providing a clean interface to: - Add new fields with expression-based values - Modify existing field values using transformation functions - Remove or rename fields...",
9569
- "sections": [
9570
- {
9571
- "title": "Expressions for data transformation",
9572
- "level": 1,
9573
- "content": "You can use expression transformation functions anywhere expressions are supported in n8n.\n\nHowever, if your main goal is to transform data using expressions without performing any other operations, use the **Edit Fields (Set)** node. This node is designed specifically for data transformation, providing a clean interface to:\n\n- Add new fields with expression-based values\n- Modify existing field values using transformation functions\n- Remove or rename fields\n\nThis keeps your workflow organized by separating data transformation from business logic, making it easier to understand and maintain.\n\n**Best practice**: Instead of adding complex expressions to multiple parameters across different nodes, use Edit Fields to prepare your data first, then pass the transformed data to subsequent nodes.\n\nSee [Expression reference](../expression-reference/) for more information and examples."
9574
- }
9575
- ]
9576
- },
9577
- "metadata": {
9578
- "keywords": [
9579
- "expressions",
9580
- "data",
9581
- "transformation",
9582
- "example:",
9583
- "from",
9584
- "webhook",
9585
- "body",
9586
- "using",
9587
- "credentials",
9588
- "writing",
9589
- "longer",
9590
- "javascript",
9591
- "common",
9592
- "issues",
9593
- "'json",
9594
- "output'",
9595
- "item",
9596
- "contains",
9597
- "invalid",
9598
- "json",
9599
- "can't",
9600
- "expression",
9601
- "syntax"
9602
- ],
9603
- "useCases": [
9604
- "Get data from webhook body",
9605
- "you have a webhook trigger that receives data through the webhook body. You want to extract some of that data for use in the workflow.",
9606
- "Writing longer JavaScript as expressions"
9607
- ],
9608
- "operations": [],
9609
- "codeExamples": 6,
9610
- "complexity": "intermediate",
9611
- "readingTime": "5 min",
9612
- "contentLength": 5366,
9613
- "relatedPages": []
9614
- },
9615
- "searchIndex": {
9616
- "fullText": "expressions for data transformation # expressions for data transformation\n\nyou can use expression transformation functions anywhere expressions are supported in n8n.\n\nhowever, if your main goal is to transform data using expressions without performing any other operations, use the **edit fields (set)** node. this node is designed specifically for data transformation, providing a clean interface to:\n\n- add new fields with expression-based values\n- modify existing field values using transformation functions\n- remove or rename fields\n\nthis keeps your workflow organized by separating data transformation from business logic, making it easier to understand and maintain.\n\n**best practice**: instead of adding complex expressions to multiple parameters across different nodes, use edit fields to prepare your data first, then pass the transformed data to subsequent nodes.\n\nsee [expression reference](../expression-reference/) for more information and examples.\n\n### example: get data from webhook body\n\nconsider the following scenario: you have a webhook trigger that receives data through the webhook body. you want to extract some of that data for use in the workflow.\n\nyour webhook data looks similar to this:\n\n```\n[\n {\n \"headers\": {\n \"host\": \"n8n.instance.address\",\n ...\n },\n \"params\": {},\n \"query\": {},\n \"body\": {\n \"name\": \"jim\",\n \"age\": 30,\n \"city\": \"new york\"\n }\n }\n]\n```\n\nin the next node in the workflow, you want to get just the value of `city`. you can use the following expression:\n\n```\n{{$json.body.city}}\n```\n\nthis expression:\n\n1. accesses the incoming json-formatted data using n8n's custom `$json` variable.\n1. finds the value of `city` (in this example, \"new york\"). note that this example uses jmespath syntax to query the json data. you can also write this expression as `{{$json['body']['city']}}`.\n\n### using expressions in credentials\n\nyou can also use expressions in credential fields. when you reference data using expressions (for example, `{{$json.body.city}}` or `{{ $('webhook').item.json.headers.authorization }}`), n8n evaluates the expression within the context of the current workflow execution.\n\nthis means that:\n\n- expressions in credentials can access data available in the current execution context, including data from previous nodes.\n- each workflow execution has its own data context.\n- expressions are evaluated per execution, so different executions don't share data.\n\nfor example, if a webhook node receives an access token and you reference it in a credential field using an expression, the value is resolved using the execution data of that specific workflow run.\n\n## example: writing longer javascript as expressions\n\nyou can do things like variable assignments or multiple statements in an expression, but you need to wrap your code using the syntax for an immediately invoked function expression (iife).\n\nthe following code use the luxon date and time library to find the time between two dates in months. we surround the code in both the handlebar brackets for an expression and the iife syntax.\n\n```\n{{(()=>{\n let end = datetime.fromiso('2017-03-13');\n let start = datetime.fromiso('2017-02-13');\n let diffinmonths = end.diff(start, 'months');\n return diffinmonths.toobject();\n})()}}\n```\n\n## common issues\n\nhere are some common errors and issues related to [expressions](../expressions/) and steps to resolve or troubleshoot them.\n\n### the 'json output' in item 0 contains invalid json\n\nthis error occurs when you use json mode but don't provide a valid json object. depending on the problem with the json object, the error sometimes displays as `the 'json output' in item 0 does not contain a valid json object`.\n\nto resolve this, make sure that the code you provide is valid json:\n\n- check the json with a [json validator](https://jsonlint.com/).\n- check that your json object doesn't reference undefined input data. this may occur if the incoming data doesn't always include the same fields.\n\n### can't get data for expression\n\nthis error occurs when n8n can't retrieve the data referenced by an expression. often, this happens when the preceding node hasn't been run yet.\n\nanother variation of this may appear as `referenced node is unexecuted`. in that case, the full text of this error will tell you the exact node that isn't executing in this format:\n\n> an expression references the node '<node-name>', but it hasn't been executed yet. either change the expression, or re-wire your workflow to make sure that node executes first.\n\nto begin troubleshooting, test the workflow up to the named node.\n\nfor nodes that use javascript or other custom code, you can check if a previous node has executed before trying to use its value by checking the following:\n\n```\n$(\"<node-name>\").isexecuted\n```\n\nas an example, this json references the parameters of the input data. this error will display if you test this step without connecting it to another node:\n\n```\n{\n \"my_field_1\": {{ $input.params }}\n}\n```\n\n### invalid syntax\n\nthis error occurs when you use an expression that has a syntax error.\n\nfor example, the expression in this json includes a trailing period, which results in an invalid syntax error:\n\n```\n{\n \"my_field_1\": \"value\",\n \"my_field_2\": {{ $('if').item.json. }}\n}\n```\n\nto resolve this error, check your [expression syntax](../expressions/) to make sure it follows the expected format.\n expressions for data transformation",
9617
- "importantTerms": [
9618
- "data",
9619
- "this",
9620
- "json",
9621
- "expression",
9622
- "expressions",
9623
- "node",
9624
- "that",
9625
- "error",
9626
- "your",
9627
- "using",
9628
- "workflow",
9629
- "example",
9630
- "transformation",
9631
- "syntax",
9632
- "fields",
9633
- "webhook",
9634
- "body",
9635
- "city",
9636
- "reference",
9637
- "value",
9638
- "when",
9639
- "execution",
9640
- "code",
9641
- "nodes",
9642
- "following",
9643
- "item",
9644
- "object",
9645
- "check",
9646
- "with",
9647
- "from",
9648
- "name",
9649
- "context",
9650
- "resolve",
9651
- "invalid",
9652
- "occurs",
9653
- "valid",
9654
- "make",
9655
- "sure",
9656
- "input"
9657
- ]
9658
- }
9659
- },
9660
9660
  {
9661
9661
  "id": "page-0103",
9662
9662
  "title": "Referencing data",
@@ -46961,7 +46961,7 @@
46961
46961
  "nodeName": null,
46962
46962
  "nodeType": null,
46963
46963
  "content": {
46964
- "markdown": "# Reranker Cohere\n\nThe Reranker Cohere node allows you to [rerank](../../../../../glossary/#ai-reranking) the resulting chunks from a [vector store](../../../../../glossary/#ai-vector-store). You can connect this node to a vector store.\n\nThe reranker reorders the list of documents retrieved from a vector store for a given query in order of descending relevance.\n\nOn this page, you'll find the node parameters for the Reranker Cohere node, and links to more resources.\n\nCredentials\n\nYou can find authentication information for this node [here](../../../credentials/cohere/).\n\nParameter resolution in sub-nodes\n\nSub-nodes behave differently to other nodes when processing multiple items using an expression.\n\nMost nodes, including root nodes, take any number of items as input, process these items, and output the results. You can use expressions to refer to input items, and the node resolves the expression for each item in turn. For example, given an input of five `name` values, the expression `{{ $json.name }}` resolves to each name in turn.\n\nIn sub-nodes, the expression always resolves to the first item. For example, given an input of five `name` values, the expression `{{ $json.name }}` always resolves to the first name.\n\n## Node parameters\n\n### Model\n\nChoose the reranking model to use. You can find out more about the available models in [Cohere's model documentation](https://docs.cohere.com/docs/models#rerank).\n\n## Templates and examples\n\n**Automate Sales Cold Calling Pipeline with Apify, GPT-4o, and WhatsApp**\n\nby Khairul Muhtadin\n\n[View template details](https://n8n.io/workflows/5449-automate-sales-cold-calling-pipeline-with-apify-gpt-4o-and-whatsapp/)\n\n**Create a Multi-Modal Telegram Support Bot with GPT-4 and Supabase RAG**\n\nby Ezema Kingsley Chibuzo\n\n[View template details](https://n8n.io/workflows/5589-create-a-multi-modal-telegram-support-bot-with-gpt-4-and-supabase-rag/)\n\n**Build an All-Source Knowledge Assistant with Claude, RAG, Perplexity, and Drive**\n\nby Paul\n\n[View template details](https://n8n.io/workflows/6542-build-an-all-source-knowledge-assistant-with-claude-rag-perplexity-and-drive/)\n\n[Browse Reranker Cohere integration templates](https://n8n.io/integrations/reranker-cohere/), or [search all templates](https://n8n.io/workflows/)\n\n## Related resources\n\nView n8n's [Advanced AI](../../../../../advanced-ai/) documentation.\n",
46964
+ "markdown": "# Reranker Cohere\n\nThe Reranker Cohere node allows you to [rerank](../../../../../glossary/#ai-reranking) the resulting chunks from a [vector store](../../../../../glossary/#ai-vector-store). You can connect this node to a vector store.\n\nThe reranker reorders the list of documents retrieved from a vector store for a given query in order of descending relevance.\n\nOn this page, you'll find the node parameters for the Reranker Cohere node, and links to more resources.\n\nCredentials\n\nYou can find authentication information for this node [here](../../../credentials/cohere/).\n\nParameter resolution in sub-nodes\n\nSub-nodes behave differently to other nodes when processing multiple items using an expression.\n\nMost nodes, including root nodes, take any number of items as input, process these items, and output the results. You can use expressions to refer to input items, and the node resolves the expression for each item in turn. For example, given an input of five `name` values, the expression `{{ $json.name }}` resolves to each name in turn.\n\nIn sub-nodes, the expression always resolves to the first item. For example, given an input of five `name` values, the expression `{{ $json.name }}` always resolves to the first name.\n\n## Node parameters\n\n### Model\n\nChoose the reranking model to use. You can find out more about the available models in [Cohere's model documentation](https://docs.cohere.com/docs/models#rerank).\n\n## Templates and examples\n\n**Automate Sales Cold Calling Pipeline with Apify, GPT-4o, and WhatsApp**\n\nby Khairul Muhtadin\n\n[View template details](https://n8n.io/workflows/5449-automate-sales-cold-calling-pipeline-with-apify-gpt-4o-and-whatsapp/)\n\n**Create a Multi-Modal Telegram Support Bot with GPT-4 and Supabase RAG**\n\nby Ezema Kingsley Chibuzo\n\n[View template details](https://n8n.io/workflows/5589-create-a-multi-modal-telegram-support-bot-with-gpt-4-and-supabase-rag/)\n\n**Chat with Google Drive documents using OpenAI and Pinecone RAG search**\n\nby Pinecone\n\n[View template details](https://n8n.io/workflows/11870-chat-with-google-drive-documents-using-openai-and-pinecone-rag-search/)\n\n[Browse Reranker Cohere integration templates](https://n8n.io/integrations/reranker-cohere/), or [search all templates](https://n8n.io/workflows/)\n\n## Related resources\n\nView n8n's [Advanced AI](../../../../../advanced-ai/) documentation.\n",
46965
46965
  "excerpt": "# Reranker Cohere The Reranker Cohere node allows you to [rerank](../../../../../glossary/#ai-reranking) the resulting chunks from a [vector store](../../../../../glossary/#ai-vector-store). You can connect this node to a vector store. The reranker reorders the list of documents retrieved from a vector store for a given query in order of descending relevance. On this page, you'll find the node parameters for the Reranker Cohere node, and links to more resources. Credentials You can find aut...",
46966
46966
  "sections": [
46967
46967
  {
@@ -46988,11 +46988,11 @@
46988
46988
  "codeExamples": 0,
46989
46989
  "complexity": "intermediate",
46990
46990
  "readingTime": "2 min",
46991
- "contentLength": 2373,
46991
+ "contentLength": 2361,
46992
46992
  "relatedPages": []
46993
46993
  },
46994
46994
  "searchIndex": {
46995
- "fullText": "reranker cohere # reranker cohere\n\nthe reranker cohere node allows you to [rerank](../../../../../glossary/#ai-reranking) the resulting chunks from a [vector store](../../../../../glossary/#ai-vector-store). you can connect this node to a vector store.\n\nthe reranker reorders the list of documents retrieved from a vector store for a given query in order of descending relevance.\n\non this page, you'll find the node parameters for the reranker cohere node, and links to more resources.\n\ncredentials\n\nyou can find authentication information for this node [here](../../../credentials/cohere/).\n\nparameter resolution in sub-nodes\n\nsub-nodes behave differently to other nodes when processing multiple items using an expression.\n\nmost nodes, including root nodes, take any number of items as input, process these items, and output the results. you can use expressions to refer to input items, and the node resolves the expression for each item in turn. for example, given an input of five `name` values, the expression `{{ $json.name }}` resolves to each name in turn.\n\nin sub-nodes, the expression always resolves to the first item. for example, given an input of five `name` values, the expression `{{ $json.name }}` always resolves to the first name.\n\n## node parameters\n\n### model\n\nchoose the reranking model to use. you can find out more about the available models in [cohere's model documentation](https://docs.cohere.com/docs/models#rerank).\n\n## templates and examples\n\n**automate sales cold calling pipeline with apify, gpt-4o, and whatsapp**\n\nby khairul muhtadin\n\n[view template details](https://n8n.io/workflows/5449-automate-sales-cold-calling-pipeline-with-apify-gpt-4o-and-whatsapp/)\n\n**create a multi-modal telegram support bot with gpt-4 and supabase rag**\n\nby ezema kingsley chibuzo\n\n[view template details](https://n8n.io/workflows/5589-create-a-multi-modal-telegram-support-bot-with-gpt-4-and-supabase-rag/)\n\n**build an all-source knowledge assistant with claude, rag, perplexity, and drive**\n\nby paul\n\n[view template details](https://n8n.io/workflows/6542-build-an-all-source-knowledge-assistant-with-claude-rag-perplexity-and-drive/)\n\n[browse reranker cohere integration templates](https://n8n.io/integrations/reranker-cohere/), or [search all templates](https://n8n.io/workflows/)\n\n## related resources\n\nview n8n's [advanced ai](../../../../../advanced-ai/) documentation.\n reranker cohere",
46995
+ "fullText": "reranker cohere # reranker cohere\n\nthe reranker cohere node allows you to [rerank](../../../../../glossary/#ai-reranking) the resulting chunks from a [vector store](../../../../../glossary/#ai-vector-store). you can connect this node to a vector store.\n\nthe reranker reorders the list of documents retrieved from a vector store for a given query in order of descending relevance.\n\non this page, you'll find the node parameters for the reranker cohere node, and links to more resources.\n\ncredentials\n\nyou can find authentication information for this node [here](../../../credentials/cohere/).\n\nparameter resolution in sub-nodes\n\nsub-nodes behave differently to other nodes when processing multiple items using an expression.\n\nmost nodes, including root nodes, take any number of items as input, process these items, and output the results. you can use expressions to refer to input items, and the node resolves the expression for each item in turn. for example, given an input of five `name` values, the expression `{{ $json.name }}` resolves to each name in turn.\n\nin sub-nodes, the expression always resolves to the first item. for example, given an input of five `name` values, the expression `{{ $json.name }}` always resolves to the first name.\n\n## node parameters\n\n### model\n\nchoose the reranking model to use. you can find out more about the available models in [cohere's model documentation](https://docs.cohere.com/docs/models#rerank).\n\n## templates and examples\n\n**automate sales cold calling pipeline with apify, gpt-4o, and whatsapp**\n\nby khairul muhtadin\n\n[view template details](https://n8n.io/workflows/5449-automate-sales-cold-calling-pipeline-with-apify-gpt-4o-and-whatsapp/)\n\n**create a multi-modal telegram support bot with gpt-4 and supabase rag**\n\nby ezema kingsley chibuzo\n\n[view template details](https://n8n.io/workflows/5589-create-a-multi-modal-telegram-support-bot-with-gpt-4-and-supabase-rag/)\n\n**chat with google drive documents using openai and pinecone rag search**\n\nby pinecone\n\n[view template details](https://n8n.io/workflows/11870-chat-with-google-drive-documents-using-openai-and-pinecone-rag-search/)\n\n[browse reranker cohere integration templates](https://n8n.io/integrations/reranker-cohere/), or [search all templates](https://n8n.io/workflows/)\n\n## related resources\n\nview n8n's [advanced ai](../../../../../advanced-ai/) documentation.\n reranker cohere",
46996
46996
  "importantTerms": [
46997
46997
  "cohere",
46998
46998
  "reranker",
@@ -47010,12 +47010,16 @@
47010
47010
  "view",
47011
47011
  "workflows",
47012
47012
  "this",
47013
+ "documents",
47013
47014
  "given",
47014
47015
  "find",
47016
+ "using",
47015
47017
  "model",
47016
47018
  "templates",
47017
47019
  "template",
47018
- "details"
47020
+ "details",
47021
+ "pinecone",
47022
+ "search"
47019
47023
  ]
47020
47024
  }
47021
47025
  },
@@ -56162,7 +56166,7 @@
56162
56166
  "nodeName": "webhook",
56163
56167
  "nodeType": "n8n-nodes-base.webhook",
56164
56168
  "content": {
56165
- "markdown": "# Common issues and questions\n\nHere are some common issues and questions for the [Webhook node](../) and suggested solutions.\n\n## Listen for multiple HTTP methods\n\nBy default, the Webhook node accepts calls that use a single method. For example, it can accept GET or POST requests, but not both. If you want to accept calls using multiple methods:\n\n1. Open the node **Settings**.\n1. Turn on **Allow Multiple HTTP Methods**.\n1. Return to **Parameters**. By default, the node now accepts GET and POST calls. You can add other methods in the **HTTP Methods** field.\n\nThe Webhook node has an output for each method, so you can perform different actions depending on the method.\n\n## Use the HTTP Request node to trigger the Webhook node\n\nThe [HTTP Request](../../n8n-nodes-base.httprequest/) node makes HTTP requests to the URL you specify.\n\n1. Create a new workflow.\n1. Add the HTTP Request node to the workflow.\n1. Select a method from the **Request Method** dropdown list. For example, if you select GET as the **HTTP method** in your Webhook node, select GET as the request method in the HTTP Request node.\n1. Copy the URL from the Webhook node, and paste it in the **URL** field in the HTTP Request node.\n1. If using the test URL for the webhook node: execute the workflow with the Webhook node.\n1. Execute the HTTP Request node.\n\n## Use curl to trigger the Webhook node\n\nYou can use [curl](https://curl.se/) to make HTTP requests that trigger the Webhook node.\n\nNote\n\nIn the examples, replace `<https://your-n8n.url/webhook/path>` with your webhook URL.\\\nThe examples make GET requests. You can use whichever HTTP method you set in **HTTP Method**.\n\nMake an HTTP request without any parameters:\n\n```\ncurl --request GET <https://your-n8n.url/webhook/path>\n```\n\nMake an HTTP request with a body parameter:\n\n```\ncurl --request GET <https://your-n8n.url/webhook/path> --data 'key=value'\n```\n\nMake an HTTP request with header parameter:\n\n```\ncurl --request GET <https://your-n8n.url/webhook/path> --header 'key=value'\n```\n\nMake an HTTP request to send a file:\n\n```\ncurl --request GET <https://your-n8n.url/webhook/path> --from 'key=@/path/to/file'\n```\n\nReplace `/path/to/file` with the path of the file you want to send.\n\n## Send a response of type string\n\nBy default, the response format is JSON or an array. To send a response of type string:\n\n1. Select **Response Mode** > **When Last Node Finishes**.\n1. Select **Response Data** > **First Entry JSON**.\n1. Select **Add Option** > **Property Name**.\n1. Enter the name of the property that contains the response. This defaults to `data`.\n1. Connect an [Edit Fields node](../../n8n-nodes-base.set/) to the Webhook node.\n1. In the Edit Fields node, select **Add Value** > **String**.\n1. Enter the name of the property in the **Name** field. The name should match the property name from step 4.\n1. Enter the string value in the **Value** field.\n1. Toggle **Keep Only Set** to on (green).\n\nWhen you call the Webhook, it sends the string response from the Edit Fields node.\n\n## Test URL versus Production URL\n\nn8n generates two **Webhook URLs** for each Webhook node: a **Test URL** and a **Production URL**.\n\nWhile building or testing a workflow, use the **Test URL**. Once you're ready to use your Webhook URL in production, use the **Production URL**.\n\n| **URL type** | **How to trigger** | **Listening duration** | **Data shown in editor UI?** |\n| -------------- | -------------------------------------------------------------------------- | ----------------------------- | ---------------------------- |\n| Test URL | Select **Listen for test event** and trigger a test event from the source. | 120 seconds | |\n| Production URL | Publish the workflow | Until workflow is unpublished | |\n\nRefer to [Workflow development](../workflow-development/) for more information.\n\n## IP addresses in whitelist are failing to connect\n\nIf you're unable to connect from IP addresses in your IP whitelist, check if you are running n8n behind a reverse proxy.\n\nIf so, set the `N8N_PROXY_HOPS` [environment variable](../../../../../hosting/configuration/environment-variables/) to the number of reverse-proxies n8n is running behind.\n\n## Only one webhook per path and method\n\nn8n only permits registering one webhook for each path and HTTP method combination (for example, a `GET` request for `/my-request`). This avoids ambiguity over which webhook should receive requests.\n\nIf you receive a message that the path and method you chose are already in use, you can either:\n\n- Unpublish the workflow with the conflicting webhook.\n- Change the webhook path and/or method for one of the conflicting webhooks.\n\n## Timeouts on n8n Cloud\n\nn8n Cloud uses Cloudflare to protect against malicious traffic. If your webhook doesn't respond within 100 seconds, the incoming request will fail with a [524 status code](https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/).\n\nBecause of this, for long-running processes that might exceed this limit, you may need to introduce polling logic by configuring two separate webhooks:\n\n- One webhook to start the long-running process and send an immediate response.\n- A second webhook that you can call at intervals to query the status of the process and retrieve the result once it's complete.\n",
56169
+ "markdown": "# Common issues and questions\n\nHere are some common issues and questions for the [Webhook node](../) and suggested solutions.\n\n## Listen for multiple HTTP methods\n\nBy default, the Webhook node accepts calls that use a single method. For example, it can accept GET or POST requests, but not both. If you want to accept calls using multiple methods:\n\n1. Open the node **Settings**.\n1. Turn on **Allow Multiple HTTP Methods**.\n1. Return to **Parameters**. By default, the node now accepts GET and POST calls. You can add other methods in the **HTTP Methods** field.\n\nThe Webhook node has an output for each method, so you can perform different actions depending on the method.\n\n## Use the HTTP Request node to trigger the Webhook node\n\nThe [HTTP Request](../../n8n-nodes-base.httprequest/) node makes HTTP requests to the URL you specify.\n\n1. Create a new workflow.\n1. Add the HTTP Request node to the workflow.\n1. Select a method from the **Request Method** dropdown list. For example, if you select GET as the **HTTP method** in your Webhook node, select GET as the request method in the HTTP Request node.\n1. Copy the URL from the Webhook node, and paste it in the **URL** field in the HTTP Request node.\n1. If using the test URL for the webhook node: execute the workflow with the Webhook node.\n1. Execute the HTTP Request node.\n\n## Use curl to trigger the Webhook node\n\nYou can use [curl](https://curl.se/) to make HTTP requests that trigger the Webhook node.\n\nNote\n\nIn the examples, replace `<https://your-n8n.url/webhook/path>` with your webhook URL.\\\nThe examples make GET requests. You can use whichever HTTP method you set in **HTTP Method**.\n\nMake an HTTP request without any parameters:\n\n```\ncurl --request GET <https://your-n8n.url/webhook/path>\n```\n\nMake an HTTP request with a body parameter:\n\n```\ncurl --request POST <https://your-n8n.url/webhook/path> --data 'key=value'\n```\n\nMake an HTTP request with header parameter:\n\n```\ncurl --request GET <https://your-n8n.url/webhook/path> --header 'key=value'\n```\n\nMake an HTTP request to send a file:\n\n```\ncurl --request POST <https://your-n8n.url/webhook/path> --form 'key=@/path/to/file'\n```\n\nReplace `/path/to/file` with the path of the file you want to send.\n\n## Send a response of type string\n\nBy default, the response format is JSON or an array. To send a response of type string:\n\n1. Select **Response Mode** > **When Last Node Finishes**.\n1. Select **Response Data** > **First Entry JSON**.\n1. Select **Add Option** > **Property Name**.\n1. Enter the name of the property that contains the response. This defaults to `data`.\n1. Connect an [Edit Fields node](../../n8n-nodes-base.set/) to the Webhook node.\n1. In the Edit Fields node, select **Add Value** > **String**.\n1. Enter the name of the property in the **Name** field. The name should match the property name from step 4.\n1. Enter the string value in the **Value** field.\n1. Toggle **Keep Only Set** to on (green).\n\nWhen you call the Webhook, it sends the string response from the Edit Fields node.\n\n## Test URL versus Production URL\n\nn8n generates two **Webhook URLs** for each Webhook node: a **Test URL** and a **Production URL**.\n\nWhile building or testing a workflow, use the **Test URL**. Once you're ready to use your Webhook URL in production, use the **Production URL**.\n\n| **URL type** | **How to trigger** | **Listening duration** | **Data shown in editor UI?** |\n| -------------- | -------------------------------------------------------------------------- | ----------------------------- | ---------------------------- |\n| Test URL | Select **Listen for test event** and trigger a test event from the source. | 120 seconds | |\n| Production URL | Publish the workflow | Until workflow is unpublished | |\n\nRefer to [Workflow development](../workflow-development/) for more information.\n\n## IP addresses in whitelist are failing to connect\n\nIf you're unable to connect from IP addresses in your IP whitelist, check if you are running n8n behind a reverse proxy.\n\nIf so, set the `N8N_PROXY_HOPS` [environment variable](../../../../../hosting/configuration/environment-variables/) to the number of reverse-proxies n8n is running behind.\n\n## Only one webhook per path and method\n\nn8n only permits registering one webhook for each path and HTTP method combination (for example, a `GET` request for `/my-request`). This avoids ambiguity over which webhook should receive requests.\n\nIf you receive a message that the path and method you chose are already in use, you can either:\n\n- Unpublish the workflow with the conflicting webhook.\n- Change the webhook path and/or method for one of the conflicting webhooks.\n\n## Timeouts on n8n Cloud\n\nn8n Cloud uses Cloudflare to protect against malicious traffic. If your webhook doesn't respond within 100 seconds, the incoming request will fail with a [524 status code](https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/).\n\nBecause of this, for long-running processes that might exceed this limit, you may need to introduce polling logic by configuring two separate webhooks:\n\n- One webhook to start the long-running process and send an immediate response.\n- A second webhook that you can call at intervals to query the status of the process and retrieve the result once it's complete.\n",
56166
56170
  "excerpt": "# Common issues and questions Here are some common issues and questions for the [Webhook node](../) and suggested solutions. ## Listen for multiple HTTP methods By default, the Webhook node accepts calls that use a single method. For example, it can accept GET or POST requests, but not both. If you want to accept calls using multiple methods: 1. Open the node **Settings**. 1. Turn on **Allow Multiple HTTP Methods**. 1. Return to **Parameters**. By default, the node now accepts GET and POST c...",
56167
56171
  "sections": [
56168
56172
  {
@@ -56208,11 +56212,11 @@
56208
56212
  "codeExamples": 4,
56209
56213
  "complexity": "beginner",
56210
56214
  "readingTime": "5 min",
56211
- "contentLength": 5508,
56215
+ "contentLength": 5510,
56212
56216
  "relatedPages": []
56213
56217
  },
56214
56218
  "searchIndex": {
56215
- "fullText": "common issues # common issues and questions\n\nhere are some common issues and questions for the [webhook node](../) and suggested solutions.\n\n## listen for multiple http methods\n\nby default, the webhook node accepts calls that use a single method. for example, it can accept get or post requests, but not both. if you want to accept calls using multiple methods:\n\n1. open the node **settings**.\n1. turn on **allow multiple http methods**.\n1. return to **parameters**. by default, the node now accepts get and post calls. you can add other methods in the **http methods** field.\n\nthe webhook node has an output for each method, so you can perform different actions depending on the method.\n\n## use the http request node to trigger the webhook node\n\nthe [http request](../../n8n-nodes-base.httprequest/) node makes http requests to the url you specify.\n\n1. create a new workflow.\n1. add the http request node to the workflow.\n1. select a method from the **request method** dropdown list. for example, if you select get as the **http method** in your webhook node, select get as the request method in the http request node.\n1. copy the url from the webhook node, and paste it in the **url** field in the http request node.\n1. if using the test url for the webhook node: execute the workflow with the webhook node.\n1. execute the http request node.\n\n## use curl to trigger the webhook node\n\nyou can use [curl](https://curl.se/) to make http requests that trigger the webhook node.\n\nnote\n\nin the examples, replace `<https://your-n8n.url/webhook/path>` with your webhook url.\\\nthe examples make get requests. you can use whichever http method you set in **http method**.\n\nmake an http request without any parameters:\n\n```\ncurl --request get <https://your-n8n.url/webhook/path>\n```\n\nmake an http request with a body parameter:\n\n```\ncurl --request get <https://your-n8n.url/webhook/path> --data 'key=value'\n```\n\nmake an http request with header parameter:\n\n```\ncurl --request get <https://your-n8n.url/webhook/path> --header 'key=value'\n```\n\nmake an http request to send a file:\n\n```\ncurl --request get <https://your-n8n.url/webhook/path> --from 'key=@/path/to/file'\n```\n\nreplace `/path/to/file` with the path of the file you want to send.\n\n## send a response of type string\n\nby default, the response format is json or an array. to send a response of type string:\n\n1. select **response mode** > **when last node finishes**.\n1. select **response data** > **first entry json**.\n1. select **add option** > **property name**.\n1. enter the name of the property that contains the response. this defaults to `data`.\n1. connect an [edit fields node](../../n8n-nodes-base.set/) to the webhook node.\n1. in the edit fields node, select **add value** > **string**.\n1. enter the name of the property in the **name** field. the name should match the property name from step 4.\n1. enter the string value in the **value** field.\n1. toggle **keep only set** to on (green).\n\nwhen you call the webhook, it sends the string response from the edit fields node.\n\n## test url versus production url\n\nn8n generates two **webhook urls** for each webhook node: a **test url** and a **production url**.\n\nwhile building or testing a workflow, use the **test url**. once you're ready to use your webhook url in production, use the **production url**.\n\n| **url type** | **how to trigger** | **listening duration** | **data shown in editor ui?** |\n| -------------- | -------------------------------------------------------------------------- | ----------------------------- | ---------------------------- |\n| test url | select **listen for test event** and trigger a test event from the source. | 120 seconds | |\n| production url | publish the workflow | until workflow is unpublished | |\n\nrefer to [workflow development](../workflow-development/) for more information.\n\n## ip addresses in whitelist are failing to connect\n\nif you're unable to connect from ip addresses in your ip whitelist, check if you are running n8n behind a reverse proxy.\n\nif so, set the `n8n_proxy_hops` [environment variable](../../../../../hosting/configuration/environment-variables/) to the number of reverse-proxies n8n is running behind.\n\n## only one webhook per path and method\n\nn8n only permits registering one webhook for each path and http method combination (for example, a `get` request for `/my-request`). this avoids ambiguity over which webhook should receive requests.\n\nif you receive a message that the path and method you chose are already in use, you can either:\n\n- unpublish the workflow with the conflicting webhook.\n- change the webhook path and/or method for one of the conflicting webhooks.\n\n## timeouts on n8n cloud\n\nn8n cloud uses cloudflare to protect against malicious traffic. if your webhook doesn't respond within 100 seconds, the incoming request will fail with a [524 status code](https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/).\n\nbecause of this, for long-running processes that might exceed this limit, you may need to introduce polling logic by configuring two separate webhooks:\n\n- one webhook to start the long-running process and send an immediate response.\n- a second webhook that you can call at intervals to query the status of the process and retrieve the result once it's complete.\n common issues and questions",
56219
+ "fullText": "common issues # common issues and questions\n\nhere are some common issues and questions for the [webhook node](../) and suggested solutions.\n\n## listen for multiple http methods\n\nby default, the webhook node accepts calls that use a single method. for example, it can accept get or post requests, but not both. if you want to accept calls using multiple methods:\n\n1. open the node **settings**.\n1. turn on **allow multiple http methods**.\n1. return to **parameters**. by default, the node now accepts get and post calls. you can add other methods in the **http methods** field.\n\nthe webhook node has an output for each method, so you can perform different actions depending on the method.\n\n## use the http request node to trigger the webhook node\n\nthe [http request](../../n8n-nodes-base.httprequest/) node makes http requests to the url you specify.\n\n1. create a new workflow.\n1. add the http request node to the workflow.\n1. select a method from the **request method** dropdown list. for example, if you select get as the **http method** in your webhook node, select get as the request method in the http request node.\n1. copy the url from the webhook node, and paste it in the **url** field in the http request node.\n1. if using the test url for the webhook node: execute the workflow with the webhook node.\n1. execute the http request node.\n\n## use curl to trigger the webhook node\n\nyou can use [curl](https://curl.se/) to make http requests that trigger the webhook node.\n\nnote\n\nin the examples, replace `<https://your-n8n.url/webhook/path>` with your webhook url.\\\nthe examples make get requests. you can use whichever http method you set in **http method**.\n\nmake an http request without any parameters:\n\n```\ncurl --request get <https://your-n8n.url/webhook/path>\n```\n\nmake an http request with a body parameter:\n\n```\ncurl --request post <https://your-n8n.url/webhook/path> --data 'key=value'\n```\n\nmake an http request with header parameter:\n\n```\ncurl --request get <https://your-n8n.url/webhook/path> --header 'key=value'\n```\n\nmake an http request to send a file:\n\n```\ncurl --request post <https://your-n8n.url/webhook/path> --form 'key=@/path/to/file'\n```\n\nreplace `/path/to/file` with the path of the file you want to send.\n\n## send a response of type string\n\nby default, the response format is json or an array. to send a response of type string:\n\n1. select **response mode** > **when last node finishes**.\n1. select **response data** > **first entry json**.\n1. select **add option** > **property name**.\n1. enter the name of the property that contains the response. this defaults to `data`.\n1. connect an [edit fields node](../../n8n-nodes-base.set/) to the webhook node.\n1. in the edit fields node, select **add value** > **string**.\n1. enter the name of the property in the **name** field. the name should match the property name from step 4.\n1. enter the string value in the **value** field.\n1. toggle **keep only set** to on (green).\n\nwhen you call the webhook, it sends the string response from the edit fields node.\n\n## test url versus production url\n\nn8n generates two **webhook urls** for each webhook node: a **test url** and a **production url**.\n\nwhile building or testing a workflow, use the **test url**. once you're ready to use your webhook url in production, use the **production url**.\n\n| **url type** | **how to trigger** | **listening duration** | **data shown in editor ui?** |\n| -------------- | -------------------------------------------------------------------------- | ----------------------------- | ---------------------------- |\n| test url | select **listen for test event** and trigger a test event from the source. | 120 seconds | |\n| production url | publish the workflow | until workflow is unpublished | |\n\nrefer to [workflow development](../workflow-development/) for more information.\n\n## ip addresses in whitelist are failing to connect\n\nif you're unable to connect from ip addresses in your ip whitelist, check if you are running n8n behind a reverse proxy.\n\nif so, set the `n8n_proxy_hops` [environment variable](../../../../../hosting/configuration/environment-variables/) to the number of reverse-proxies n8n is running behind.\n\n## only one webhook per path and method\n\nn8n only permits registering one webhook for each path and http method combination (for example, a `get` request for `/my-request`). this avoids ambiguity over which webhook should receive requests.\n\nif you receive a message that the path and method you chose are already in use, you can either:\n\n- unpublish the workflow with the conflicting webhook.\n- change the webhook path and/or method for one of the conflicting webhooks.\n\n## timeouts on n8n cloud\n\nn8n cloud uses cloudflare to protect against malicious traffic. if your webhook doesn't respond within 100 seconds, the incoming request will fail with a [524 status code](https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/).\n\nbecause of this, for long-running processes that might exceed this limit, you may need to introduce polling logic by configuring two separate webhooks:\n\n- one webhook to start the long-running process and send an immediate response.\n- a second webhook that you can call at intervals to query the status of the process and retrieve the result once it's complete.\n common issues and questions",
56216
56220
  "importantTerms": [
56217
56221
  "webhook",
56218
56222
  "node",
@@ -56224,12 +56228,12 @@
56224
56228
  "workflow",
56225
56229
  "select",
56226
56230
  "response",
56227
- "from",
56228
56231
  "test",
56229
56232
  "with",
56230
56233
  "curl",
56231
56234
  "https",
56232
56235
  "that",
56236
+ "from",
56233
56237
  "make",
56234
56238
  "name",
56235
56239
  "methods",
@@ -56241,6 +56245,7 @@
56241
56245
  "production",
56242
56246
  "common",
56243
56247
  "issues",
56248
+ "post",
56244
56249
  "field",
56245
56250
  "data",
56246
56251
  "file",
@@ -91253,7 +91258,7 @@
91253
91258
  "page-0081",
91254
91259
  "page-0086",
91255
91260
  "page-0097",
91256
- "page-0100",
91261
+ "page-0101",
91257
91262
  "page-0105",
91258
91263
  "page-0108",
91259
91264
  "page-0130",
@@ -91310,7 +91315,7 @@
91310
91315
  "page-0086",
91311
91316
  "page-0097",
91312
91317
  "page-0099",
91313
- "page-0100",
91318
+ "page-0101",
91314
91319
  "page-0105",
91315
91320
  "page-0106",
91316
91321
  "page-0108",
@@ -92160,7 +92165,7 @@
92160
92165
  "expression": [
92161
92166
  "page-0002",
92162
92167
  "page-0006",
92163
- "page-0102",
92168
+ "page-0100",
92164
92169
  "page-0112",
92165
92170
  "page-0131",
92166
92171
  "page-0676",
@@ -92278,7 +92283,7 @@
92278
92283
  "page-0071",
92279
92284
  "page-0097",
92280
92285
  "page-0098",
92281
- "page-0100",
92286
+ "page-0101",
92282
92287
  "page-0106",
92283
92288
  "page-0130",
92284
92289
  "page-0143",
@@ -92346,7 +92351,7 @@
92346
92351
  "page-0002",
92347
92352
  "page-0050",
92348
92353
  "page-0100",
92349
- "page-0102",
92354
+ "page-0101",
92350
92355
  "page-0638",
92351
92356
  "page-1197"
92352
92357
  ],
@@ -92488,7 +92493,7 @@
92488
92493
  ],
92489
92494
  "webhook": [
92490
92495
  "page-0002",
92491
- "page-0102",
92496
+ "page-0100",
92492
92497
  "page-0153",
92493
92498
  "page-0170",
92494
92499
  "page-0216",
@@ -92550,7 +92555,7 @@
92550
92555
  "page-0003",
92551
92556
  "page-0012",
92552
92557
  "page-0027",
92553
- "page-0102",
92558
+ "page-0100",
92554
92559
  "page-0231",
92555
92560
  "page-0345",
92556
92561
  "page-0371",
@@ -92708,7 +92713,7 @@
92708
92713
  "page-0093",
92709
92714
  "page-0096",
92710
92715
  "page-0097",
92711
- "page-0102",
92716
+ "page-0100",
92712
92717
  "page-0110",
92713
92718
  "page-0132",
92714
92719
  "page-0144",
@@ -94164,7 +94169,7 @@
94164
94169
  "page-0013",
94165
94170
  "page-0014",
94166
94171
  "page-0022",
94167
- "page-0102",
94172
+ "page-0100",
94168
94173
  "page-0136",
94169
94174
  "page-0151",
94170
94175
  "page-0153",
@@ -94520,7 +94525,7 @@
94520
94525
  "page-0067",
94521
94526
  "page-0068",
94522
94527
  "page-0097",
94523
- "page-0102",
94528
+ "page-0100",
94524
94529
  "page-0134",
94525
94530
  "page-0136",
94526
94531
  "page-0141",
@@ -99652,7 +99657,7 @@
99652
99657
  "expressions": [
99653
99658
  "page-0021",
99654
99659
  "page-0100",
99655
- "page-0102",
99660
+ "page-0101",
99656
99661
  "page-0110",
99657
99662
  "page-0131",
99658
99663
  "page-0515",
@@ -99999,7 +100004,7 @@
99999
100004
  ],
100000
100005
  "common": [
100001
100006
  "page-0027",
100002
- "page-0102",
100007
+ "page-0100",
100003
100008
  "page-0106",
100004
100009
  "page-0131",
100005
100010
  "page-0132",
@@ -100658,7 +100663,7 @@
100658
100663
  ],
100659
100664
  "other": [
100660
100665
  "page-0049",
100661
- "page-0100",
100666
+ "page-0101",
100662
100667
  "page-0106",
100663
100668
  "page-0202",
100664
100669
  "page-1162",
@@ -100715,7 +100720,7 @@
100715
100720
  ],
100716
100721
  "writing": [
100717
100722
  "page-0050",
100718
- "page-0102",
100723
+ "page-0100",
100719
100724
  "page-1153",
100720
100725
  "page-1247"
100721
100726
  ],
@@ -100792,7 +100797,7 @@
100792
100797
  ],
100793
100798
  "javascript": [
100794
100799
  "page-0051",
100795
- "page-0102",
100800
+ "page-0100",
100796
100801
  "page-0132",
100797
100802
  "page-0615",
100798
100803
  "page-0695"
@@ -101760,7 +101765,7 @@
101760
101765
  ],
101761
101766
  "item": [
101762
101767
  "page-0059",
101763
- "page-0102",
101768
+ "page-0100",
101764
101769
  "page-0109",
101765
101770
  "page-0110",
101766
101771
  "page-0111",
@@ -101998,7 +102003,7 @@
101998
102003
  ],
101999
102004
  "body": [
102000
102005
  "page-0068",
102001
- "page-0102",
102006
+ "page-0100",
102002
102007
  "page-0703",
102003
102008
  "page-0824"
102004
102009
  ],
@@ -102298,7 +102303,7 @@
102298
102303
  ],
102299
102304
  "transforming": [
102300
102305
  "page-0086",
102301
- "page-0101"
102306
+ "page-0102"
102302
102307
  ],
102303
102308
  "different": [
102304
102309
  "page-0087",
@@ -102755,7 +102760,7 @@
102755
102760
  ],
102756
102761
  "approaches": [
102757
102762
  "page-0097",
102758
- "page-0101"
102763
+ "page-0102"
102759
102764
  ],
102760
102765
  "generate": [
102761
102766
  "page-0097",
@@ -102853,41 +102858,36 @@
102853
102858
  ],
102854
102859
  "versus": [
102855
102860
  "page-0099",
102856
- "page-0100",
102861
+ "page-0101",
102857
102862
  "page-0710"
102858
102863
  ],
102859
- "transform": [
102860
- "page-0100",
102861
- "page-0638",
102862
- "page-1197"
102863
- ],
102864
102864
  "example:": [
102865
- "page-0102",
102865
+ "page-0100",
102866
102866
  "page-0132",
102867
102867
  "page-0215"
102868
102868
  ],
102869
102869
  "longer": [
102870
- "page-0102",
102870
+ "page-0100",
102871
102871
  "page-0132",
102872
102872
  "page-0566",
102873
102873
  "page-1211"
102874
102874
  ],
102875
102875
  "'json": [
102876
- "page-0102"
102876
+ "page-0100"
102877
102877
  ],
102878
102878
  "output'": [
102879
- "page-0102"
102879
+ "page-0100"
102880
102880
  ],
102881
102881
  "contains": [
102882
- "page-0102"
102882
+ "page-0100"
102883
102883
  ],
102884
102884
  "invalid": [
102885
- "page-0102",
102885
+ "page-0100",
102886
102886
  "page-0558",
102887
102887
  "page-0708"
102888
102888
  ],
102889
102889
  "json": [
102890
- "page-0102",
102890
+ "page-0100",
102891
102891
  "page-0131",
102892
102892
  "page-0515",
102893
102893
  "page-0641",
@@ -102900,7 +102900,7 @@
102900
102900
  "page-1176"
102901
102901
  ],
102902
102902
  "can't": [
102903
- "page-0102",
102903
+ "page-0100",
102904
102904
  "page-0512",
102905
102905
  "page-0519",
102906
102906
  "page-0566",
@@ -102910,9 +102910,14 @@
102910
102910
  "page-1021"
102911
102911
  ],
102912
102912
  "syntax": [
102913
- "page-0102",
102913
+ "page-0100",
102914
102914
  "page-1174"
102915
102915
  ],
102916
+ "transform": [
102917
+ "page-0101",
102918
+ "page-0638",
102919
+ "page-1197"
102920
+ ],
102916
102921
  "linked": [
102917
102922
  "page-0105"
102918
102923
  ],