@n8n-as-code/skills 2.1.0-next.48 → 2.1.0
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.
- package/dist/assets/n8n-credentials-ontology.json +1 -1
- package/dist/assets/n8n-docs-complete.json +56 -175
- package/dist/assets/n8n-knowledge-index.json +50 -134
- package/dist/assets/n8n-nodes-index.json +5 -5
- package/dist/assets/n8n-nodes-technical.json +5 -5
- package/dist/assets/workflows-index.json +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-05-
|
|
2
|
+
"generatedAt": "2026-05-11T13:29:19.741Z",
|
|
3
3
|
"version": "1.0.0",
|
|
4
4
|
"sourceUrl": "https://docs.n8n.io/llms.txt",
|
|
5
|
-
"totalPages":
|
|
5
|
+
"totalPages": 1278,
|
|
6
6
|
"statistics": {
|
|
7
7
|
"byCategory": {
|
|
8
|
-
"other":
|
|
8
|
+
"other": 513,
|
|
9
9
|
"tutorials": 27,
|
|
10
10
|
"advanced-ai": 28,
|
|
11
11
|
"api": 6,
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"categories": {
|
|
27
27
|
"other": {
|
|
28
28
|
"description": "General documentation and guides",
|
|
29
|
-
"totalPages":
|
|
29
|
+
"totalPages": 513,
|
|
30
30
|
"pages": [
|
|
31
31
|
"page-0001",
|
|
32
32
|
"page-0002",
|
|
@@ -49,7 +49,6 @@
|
|
|
49
49
|
"page-0237",
|
|
50
50
|
"page-0238",
|
|
51
51
|
"page-0239",
|
|
52
|
-
"page-0240",
|
|
53
52
|
"page-0654",
|
|
54
53
|
"page-0655",
|
|
55
54
|
"page-0656",
|
|
@@ -18783,13 +18782,13 @@
|
|
|
18783
18782
|
"nodeName": null,
|
|
18784
18783
|
"nodeType": null,
|
|
18785
18784
|
"content": {
|
|
18786
|
-
"markdown": "# OpenTelemetry tracing\n\nThis feature is still under development - Initially available from 2.19.0\n\nAgent telemetry and open telemetry formatted metrics will be coming soon\n\nn8n can emit [OpenTelemetry](https://opentelemetry.io/) traces for workflow and node executions. Use these traces to monitor execution latency, debug failures, and track requests across services in your observability stack.\n\nFeature availability\n\nOpenTelemetry workflow tracing requires environment variables to be set, so it's available on self-hosted n8n only.\n\n## What you get\n\nWhen you turn on tracing, n8n exports two kinds of spans for each execution:\n\n- **`workflow.execute`**: One span per workflow execution. It records the workflow ID, name, version, node count, execution mode, status, and any error type.\n- **`node.execute`**: One span per node execution, nested inside its workflow span. It records the node ID, name, type, version, and the number of input and output items.\n\nEach span includes resource attributes that identify the n8n instance:\n\n- `service.name` (default `n8n`)\n- `service.version` (the n8n version)\n- `n8n.instance.id`\n- `n8n.instance.role` (for example, `main`, `worker`, or `webhook`)\n\nn8n also handles trace context propagation:\n\n- **Inbound**: If a webhook request includes a [W3C `traceparent` header](https://www.w3.org/TR/trace-context/), n8n uses it as the parent for the workflow span. This links the n8n workflow trace to the upstream caller.\n- **Outbound**: HTTP Request nodes (and other nodes that use the n8n HTTP helpers) can inject a `traceparent` header into outbound requests. Downstream services that support W3C trace context can therefore continue the trace.\n- **Sub-workflows**: A sub-workflow's span uses the parent workflow's span as its parent.\n- **Resumed workflows**: When a workflow resumes after a wait, the new span links back to the previous span using a span link.\n\n## Enable tracing\n\nSet the following environment variables on each n8n instance you want workflow tracing enabled (main, workers, and webhook processors):\n\n```\nexport N8N_OTEL_ENABLED=true\nexport N8N_OTEL_EXPORTER_OTLP_ENDPOINT=http://<your-collector-host>:4318\n```\n\nRestart n8n. The instance starts exporting spans over OTLP HTTP using the Protobuf encoding.\n\nn8n appends `/v1/traces` to the endpoint by default. Point `N8N_OTEL_EXPORTER_OTLP_ENDPOINT` at the base URL of your collector, not the traces path.\n\nIf your collector needs authentication, set `N8N_OTEL_EXPORTER_OTLP_HEADERS` to a comma-separated list of `key=value` pairs:\n\n```\nexport N8N_OTEL_EXPORTER_OTLP_HEADERS=\"authorization=Bearer <your-token>,x-tenant=acme\"\n\n// For added protection - It is recommended to use the `_FILE` postfix if you are putting a token in here:\nexport N8N_OTEL_EXPORTER_OTLP_HEADERS_FILE=/mnt/otel-headers\n```\n\nFor the full list of supported variables, refer to [OpenTelemetry environment variables](../../configuration/environment-variables/opentelemetry/).\n\nQueue mode\n\nIn [queue mode](../../scaling/queue-mode/), set the OpenTelemetry variables on the main, worker, and webhook instances. Trace context is propagated between main, worker and webhook instances.\n\n## Sampling\n\nBy default, n8n exports every trace. To reduce volume in busy instances, set `N8N_OTEL_TRACES_SAMPLE_RATE` to a value between `0` and `1`:\n\n```\n# Export 10% of traces\nexport N8N_OTEL_TRACES_SAMPLE_RATE=0.1\n```\n\nn8n uses a trace ID ratio sampler, so the same trace ID is either fully sampled or fully dropped across all spans in the trace.\n\nn8n will output a trace for every workflow execution - this includes published workflows, unpublished workflows and test executions - In a future release a toggle will be available to track only published workflows\n\n## Reduce span volume\n\nEach node in a workflow produces its own span. For workflows with lots of nodes, this can produce more data than you need. To export only workflow-level spans, set:\n\n```\nexport N8N_OTEL_TRACES_INCLUDE_NODE_SPANS=false\n```\n\nTo stop n8n from injecting `traceparent` headers into outbound HTTP requests, set:\n\n```\nexport N8N_OTEL_TRACES_INJECT_OUTBOUND=false\n```\n\n## Add custom attributes to node spans\n\nIf you're [building a custom node](../../../integrations/creating-nodes/overview/), you can attach custom key-value pairs to the node's span. Call `setMetadata` from the node's `execute` method:\n\n```\nasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\tthis.setMetadata({\n\t\ttracing: {\n\t\t\t'llm.model': 'gpt-4o',\n\t\t\t'llm.token.input': 1500,\n\t\t\t'llm.token.output': 340,\n\t\t},\n\t});\n\n\treturn [this.getInputData()];\n}\n```\n\nn8n prefixes each key with `n8n.node.custom.` on the exported span. Values must be strings, numbers, or boolean.\n\nThis API isn't available from the Code node. It's intended for node authors who want to enrich spans with domain-specific data.\n\n## Try it out with Jaeger\n\nYou can send traces to a local [Jaeger](https://www.jaegertracing.io/) instance to see them in action.\n\n1. Save the following as `docker-compose.yml`:\n\n```\nservices:\n jaeger:\n image: jaegertracing/jaeger:latest\n ports:\n - \"16686:16686\" # UI\n - \"4317:4317\" # OTLP gRPC\n - \"4318:4318\" # OTLP HTTP\n```\n\n2. Start Jaeger:\n\n```\ndocker compose up -d\n```\n\n3. Start n8n with tracing turned on and pointed at Jaeger. Information about [starting n8n](https://github.com/n8n-io/n8n/blob/master/CONTRIBUTING.md) can be found elsewhere in this documentation:\n\n```\nN8N_OTEL_ENABLED=true N8N_OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 n8n start\n```\n\n5. Run a workflow, then open the Jaeger UI at <http://localhost:16686> - Select \"n8n\" as service\" and click \"Find traces\" to see the OpenTelemetry traces emitted by n8n.\n\n## Span attributes\n\nWorkflow and node spans include the following n8n-specific attributes.\n\n### Workflow span (`workflow.execute`)\n\n| Attribute | Description |\n| -------------------------- | ---------------------------------------------------------------------- |\n| `n8n.workflow.id` | Workflow ID. |\n| `n8n.workflow.name` | Workflow name. |\n| `n8n.workflow.version_id` | Workflow version ID. |\n| `n8n.workflow.node_count` | Number of nodes in the workflow. |\n| `n8n.execution.id` | Execution ID. |\n| `n8n.execution.mode` | Execution mode (for example, `manual`, `webhook`, `trigger`, `retry`). |\n| `n8n.execution.status` | Final execution status. |\n| `n8n.execution.is_retry` | `true` if the execution is a retry. |\n| `n8n.execution.retry_of` | The original execution ID, when the execution is a retry. |\n| `n8n.execution.error_type` | Error class name, set when the execution fails. |\n| `n8n.continuation.reason` | Set on a span link when the workflow resumes after a wait. |\n\n### Node span (`node.execute`)\n\n| Attribute | Description |\n| ----------------------------- | -------------------------------------------------------------------------------------- |\n| `n8n.node.id` | Node ID. |\n| `n8n.node.name` | Node name. |\n| `n8n.node.type` | Node type (for example, `n8n-nodes-base.httpRequest`). |\n| `n8n.node.type_version` | Node type version. |\n| `n8n.node.items.input` | Number of input items the node received. |\n| `n8n.node.items.output` | Number of output items the node produced. |\n| `n8n.node.termination_reason` | Why a node span ended without a normal completion (for example, `workflow_cancelled`). |\n| `n8n.node.custom.<key>` | Custom attributes set through `metadata.tracing` in the node output. |\n\nWhen a node fails, n8n records an `exception` event on the span with the standard OpenTelemetry exception attributes (`exception.type`, `exception.message`, `exception.stacktrace`).\n\n## Troubleshooting\n\n### No traces appear in your backend\n\nIf n8n can't reach the OTLP endpoint at startup, it logs an error:\n\n```\nFailed to connect to OpenTelemetry OTLP endpoint during startup\n```\n\nCheck that:\n\n- `N8N_OTEL_ENABLED` is set to `true`.\n- `N8N_OTEL_EXPORTER_OTLP_ENDPOINT` points at the base URL of the collector (not the `/v1/traces` path).\n- The collector is reachable from the n8n container or host.\n- Any required `N8N_OTEL_EXPORTER_OTLP_HEADERS` (such as authentication tokens) are set.\n\nn8n logs OpenTelemetry diagnostics at `warn` level by default. Set `N8N_LOG_LEVEL=debug` to see more detail.\n\n### Worker traces are missing parent context\n\nIn queue mode, workers read the parent trace context from the database. If you only set the OpenTelemetry environment variables on the main instance, worker spans won't link to the parent workflow trace. Set the same variables on every instance type.\n\n## Related resources\n\n- [OpenTelemetry environment variables](../../configuration/environment-variables/opentelemetry/)\n- [W3C Trace Context specification](https://www.w3.org/TR/trace-context/)\n- [OpenTelemetry Collector documentation](https://opentelemetry.io/docs/collector/)\n- [Logging in n8n](../logging/)\n- [Monitoring](../monitoring/)\n",
|
|
18787
|
-
"excerpt": "# OpenTelemetry tracing This feature is still under development
|
|
18785
|
+
"markdown": "# OpenTelemetry tracing\n\nThis feature is still under development\n\n- Initially available from 2.19.0\n- Open telemetry formatted metrics will be coming soon\n\nn8n can emit [OpenTelemetry](https://opentelemetry.io/) traces for workflow and node executions. Use these traces to monitor execution latency, debug failures, and track requests across services in your observability stack.\n\nFeature availability\n\nOpenTelemetry workflow tracing is only available on self-hosted n8n.\n\n## What you get\n\nWhen you turn on tracing, n8n exports two kinds of spans for each execution:\n\n- **`workflow.execute`**: One span per workflow execution. It records the workflow ID, name, version, node count, execution mode, status, and any error type.\n- **`node.execute`**: One span per node execution, nested inside its workflow span. It records the node ID, name, type, version, and the number of input and output items.\n\nEach span includes resource attributes that identify the n8n instance:\n\n- `service.name` (default `n8n`)\n- `service.version` (the n8n version)\n- `n8n.instance.id`\n- `n8n.instance.role` (for example, `main`, `worker`, or `webhook`)\n\nn8n also handles trace context propagation:\n\n- **Inbound**: If a webhook request includes a [W3C `traceparent` header](https://www.w3.org/TR/trace-context/), n8n uses it as the parent for the workflow span. This links the n8n workflow trace to the upstream caller.\n- **Outbound**: HTTP Request nodes (and other nodes that use the n8n HTTP helpers) can inject a `traceparent` header into outbound requests. Downstream services that support W3C trace context can therefore continue the trace.\n- **Sub-workflows**: A sub-workflow's span uses the parent workflow's span as its parent.\n- **Resumed workflows**: When a workflow resumes after a wait, the new span links back to the previous span using a span link.\n\n## Enable tracing\n\nSet the following environment variables on each n8n instance you want workflow tracing enabled (main, workers, and webhook processors):\n\n```\nexport N8N_OTEL_ENABLED=true\nexport N8N_OTEL_EXPORTER_OTLP_ENDPOINT=http://<your-collector-host>:4318\n```\n\nRestart n8n. The instance starts exporting spans over OTLP HTTP using the Protobuf encoding.\n\nn8n appends `/v1/traces` to the endpoint by default. Point `N8N_OTEL_EXPORTER_OTLP_ENDPOINT` at the base URL of your collector, not the traces path.\n\nIf your collector needs authentication, set `N8N_OTEL_EXPORTER_OTLP_HEADERS` to a comma-separated list of `key=value` pairs:\n\n```\nexport N8N_OTEL_EXPORTER_OTLP_HEADERS=\"authorization=Bearer <your-token>,x-tenant=acme\"\n\n// For added protection - It is recommended to use the `_FILE` postfix if you are putting a token in here:\nexport N8N_OTEL_EXPORTER_OTLP_HEADERS_FILE=/mnt/otel-headers\n```\n\nFor the full list of supported variables, refer to [OpenTelemetry environment variables](../../configuration/environment-variables/opentelemetry/).\n\nQueue mode\n\nIn [queue mode](../../scaling/queue-mode/), the OpenTelemetry variables must be set on all instances. Trace context is propagated between instances.\n\n## Sampling\n\nBy default, n8n exports every trace. To reduce volume in busy instances, set `N8N_OTEL_TRACES_SAMPLE_RATE` to a value between `0` and `1`:\n\n```\n# Export 10% of traces\nexport N8N_OTEL_TRACES_SAMPLE_RATE=0.1\n```\n\nn8n uses a trace ID ratio sampler, so the same trace ID is either fully sampled or fully dropped across all spans in the trace.\n\nn8n will output a trace for every workflow execution - this includes published workflows, unpublished workflows and test executions - In a future release a toggle will be available to track only published workflows\n\n## Reduce span volume\n\nEach node in a workflow produces its own span. For workflows with lots of nodes, this can produce more data than you need. To export only workflow-level spans, set:\n\n```\nexport N8N_OTEL_TRACES_INCLUDE_NODE_SPANS=false\n```\n\nTo stop n8n from injecting `traceparent` headers into outbound HTTP requests, set:\n\n```\nexport N8N_OTEL_TRACES_INJECT_OUTBOUND=false\n```\n\n## Add custom attributes to node spans\n\nIf you're [building a custom node](../../../integrations/creating-nodes/overview/), you can attach custom key-value pairs to the node's span. Call `setMetadata` from the node's `execute` method:\n\n```\nasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\tthis.setMetadata({\n\t\ttracing: {\n\t\t\t'llm.model': 'gpt-4o',\n\t\t\t'llm.token.input': 1500,\n\t\t\t'llm.token.output': 340,\n\t\t},\n\t});\n\n\treturn [this.getInputData()];\n}\n```\n\nn8n prefixes each key with `n8n.node.custom.` on the exported span. Values must be strings, numbers, or boolean.\n\nThis API isn't available from the Code node. It's intended for node authors who want to enrich spans with domain-specific data.\n\n## Try it out with Jaeger\n\nYou can send traces to a local [Jaeger](https://www.jaegertracing.io/) instance to see them in action.\n\n1. Save the following as `docker-compose.yml`:\n\n```\nservices:\n jaeger:\n image: jaegertracing/jaeger:latest\n ports:\n - \"16686:16686\" # UI\n - \"4317:4317\" # OTLP gRPC\n - \"4318:4318\" # OTLP HTTP\n```\n\n2. Start Jaeger:\n\n```\ndocker compose up -d\n```\n\n3. Start n8n with tracing turned on and pointed at Jaeger. Information about [starting n8n](https://github.com/n8n-io/n8n/blob/master/CONTRIBUTING.md) can be found elsewhere in this documentation:\n\n```\nN8N_OTEL_ENABLED=true N8N_OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 n8n start\n```\n\n5. Run a workflow, then open the Jaeger UI at <http://localhost:16686> - Select \"n8n\" as service\" and click \"Find traces\" to see the OpenTelemetry traces emitted by n8n.\n\n## Span attributes\n\nWorkflow and node spans include the following n8n-specific attributes.\n\n### Workflow span (`workflow.execute`)\n\n| Attribute | Description |\n| -------------------------- | ---------------------------------------------------------------------- |\n| `n8n.workflow.id` | Workflow ID. |\n| `n8n.workflow.name` | Workflow name. |\n| `n8n.workflow.version_id` | Workflow version ID. |\n| `n8n.workflow.node_count` | Number of nodes in the workflow. |\n| `n8n.execution.id` | Execution ID. |\n| `n8n.execution.mode` | Execution mode (for example, `manual`, `webhook`, `trigger`, `retry`). |\n| `n8n.execution.status` | Final execution status. |\n| `n8n.execution.is_retry` | `true` if the execution is a retry. |\n| `n8n.execution.retry_of` | The original execution ID, when the execution is a retry. |\n| `n8n.execution.error_type` | Error class name, set when the execution fails. |\n| `n8n.continuation.reason` | Set on a span link when the workflow resumes after a wait. |\n\n### Node span (`node.execute`)\n\n| Attribute | Description |\n| ----------------------------- | -------------------------------------------------------------------------------------- |\n| `n8n.node.id` | Node ID. |\n| `n8n.node.name` | Node name. |\n| `n8n.node.type` | Node type (for example, `n8n-nodes-base.httpRequest`). |\n| `n8n.node.type_version` | Node type version. |\n| `n8n.node.items.input` | Number of input items the node received. |\n| `n8n.node.items.output` | Number of output items the node produced. |\n| `n8n.node.termination_reason` | Why a node span ended without a normal completion (for example, `workflow_cancelled`). |\n| `n8n.node.custom.<key>` | Custom attributes set through `metadata.tracing` in the node output. |\n\nWhen a node fails, n8n records an `exception` event on the span with the standard OpenTelemetry exception attributes (`exception.type`, `exception.message`, `exception.stacktrace`).\n\n## Troubleshooting\n\n### No traces appear in your backend\n\nIf n8n can't reach the OTLP endpoint at startup, it logs an error:\n\n```\nFailed to connect to OpenTelemetry OTLP endpoint during startup\n```\n\nCheck that:\n\n- `N8N_OTEL_ENABLED` is set to `true`.\n- `N8N_OTEL_EXPORTER_OTLP_ENDPOINT` points at the base URL of the collector (not the `/v1/traces` path).\n- The collector is reachable from the n8n container or host.\n- Any required `N8N_OTEL_EXPORTER_OTLP_HEADERS` (such as authentication tokens) are set.\n\nn8n logs OpenTelemetry diagnostics at `warn` level by default. Set `N8N_LOG_LEVEL=debug` to see more detail.\n\n### Worker traces are missing parent context\n\nIn queue mode, workers read the parent trace context from the database. If you only set the OpenTelemetry environment variables on the main instance, worker spans won't link to the parent workflow trace. Set the same variables on every instance type.\n\n## Related resources\n\n- [OpenTelemetry environment variables](../../configuration/environment-variables/opentelemetry/)\n- [W3C Trace Context specification](https://www.w3.org/TR/trace-context/)\n- [OpenTelemetry Collector documentation](https://opentelemetry.io/docs/collector/)\n- [Logging in n8n](../logging/)\n- [Monitoring](../monitoring/)\n",
|
|
18786
|
+
"excerpt": "# OpenTelemetry tracing This feature is still under development - Initially available from 2.19.0 - Open telemetry formatted metrics will be coming soon n8n can emit [OpenTelemetry](https://opentelemetry.io/) traces for workflow and node executions. Use these traces to monitor execution latency, debug failures, and track requests across services in your observability stack. Feature availability OpenTelemetry workflow tracing is only available on self-hosted n8n. ## What you get When you t...",
|
|
18788
18787
|
"sections": [
|
|
18789
18788
|
{
|
|
18790
18789
|
"title": "OpenTelemetry tracing",
|
|
18791
18790
|
"level": 1,
|
|
18792
|
-
"content": "This feature is still under development
|
|
18791
|
+
"content": "This feature is still under development\n\n- Initially available from 2.19.0\n- Open telemetry formatted metrics will be coming soon\n\nn8n can emit [OpenTelemetry](https://opentelemetry.io/) traces for workflow and node executions. Use these traces to monitor execution latency, debug failures, and track requests across services in your observability stack.\n\nFeature availability\n\nOpenTelemetry workflow tracing is only available on self-hosted n8n."
|
|
18793
18792
|
},
|
|
18794
18793
|
{
|
|
18795
18794
|
"title": "Export 10% of traces",
|
|
@@ -18836,11 +18835,11 @@
|
|
|
18836
18835
|
"codeExamples": 10,
|
|
18837
18836
|
"complexity": "intermediate",
|
|
18838
18837
|
"readingTime": "6 min",
|
|
18839
|
-
"contentLength":
|
|
18838
|
+
"contentLength": 9779,
|
|
18840
18839
|
"relatedPages": []
|
|
18841
18840
|
},
|
|
18842
18841
|
"searchIndex": {
|
|
18843
|
-
"fullText": "opentelemetry tracing # opentelemetry tracing\n\nthis feature is still under development - initially available from 2.19.0\n\nagent telemetry and open telemetry formatted metrics will be coming soon\n\nn8n can emit [opentelemetry](https://opentelemetry.io/) traces for workflow and node executions. use these traces to monitor execution latency, debug failures, and track requests across services in your observability stack.\n\nfeature availability\n\nopentelemetry workflow tracing requires environment variables to be set, so it's available on self-hosted n8n only.\n\n## what you get\n\nwhen you turn on tracing, n8n exports two kinds of spans for each execution:\n\n- **`workflow.execute`**: one span per workflow execution. it records the workflow id, name, version, node count, execution mode, status, and any error type.\n- **`node.execute`**: one span per node execution, nested inside its workflow span. it records the node id, name, type, version, and the number of input and output items.\n\neach span includes resource attributes that identify the n8n instance:\n\n- `service.name` (default `n8n`)\n- `service.version` (the n8n version)\n- `n8n.instance.id`\n- `n8n.instance.role` (for example, `main`, `worker`, or `webhook`)\n\nn8n also handles trace context propagation:\n\n- **inbound**: if a webhook request includes a [w3c `traceparent` header](https://www.w3.org/tr/trace-context/), n8n uses it as the parent for the workflow span. this links the n8n workflow trace to the upstream caller.\n- **outbound**: http request nodes (and other nodes that use the n8n http helpers) can inject a `traceparent` header into outbound requests. downstream services that support w3c trace context can therefore continue the trace.\n- **sub-workflows**: a sub-workflow's span uses the parent workflow's span as its parent.\n- **resumed workflows**: when a workflow resumes after a wait, the new span links back to the previous span using a span link.\n\n## enable tracing\n\nset the following environment variables on each n8n instance you want workflow tracing enabled (main, workers, and webhook processors):\n\n```\nexport n8n_otel_enabled=true\nexport n8n_otel_exporter_otlp_endpoint=http://<your-collector-host>:4318\n```\n\nrestart n8n. the instance starts exporting spans over otlp http using the protobuf encoding.\n\nn8n appends `/v1/traces` to the endpoint by default. point `n8n_otel_exporter_otlp_endpoint` at the base url of your collector, not the traces path.\n\nif your collector needs authentication, set `n8n_otel_exporter_otlp_headers` to a comma-separated list of `key=value` pairs:\n\n```\nexport n8n_otel_exporter_otlp_headers=\"authorization=bearer <your-token>,x-tenant=acme\"\n\n// for added protection - it is recommended to use the `_file` postfix if you are putting a token in here:\nexport n8n_otel_exporter_otlp_headers_file=/mnt/otel-headers\n```\n\nfor the full list of supported variables, refer to [opentelemetry environment variables](../../configuration/environment-variables/opentelemetry/).\n\nqueue mode\n\nin [queue mode](../../scaling/queue-mode/), set the opentelemetry variables on the main, worker, and webhook instances. trace context is propagated between main, worker and webhook instances.\n\n## sampling\n\nby default, n8n exports every trace. to reduce volume in busy instances, set `n8n_otel_traces_sample_rate` to a value between `0` and `1`:\n\n```\n# export 10% of traces\nexport n8n_otel_traces_sample_rate=0.1\n```\n\nn8n uses a trace id ratio sampler, so the same trace id is either fully sampled or fully dropped across all spans in the trace.\n\nn8n will output a trace for every workflow execution - this includes published workflows, unpublished workflows and test executions - in a future release a toggle will be available to track only published workflows\n\n## reduce span volume\n\neach node in a workflow produces its own span. for workflows with lots of nodes, this can produce more data than you need. to export only workflow-level spans, set:\n\n```\nexport n8n_otel_traces_include_node_spans=false\n```\n\nto stop n8n from injecting `traceparent` headers into outbound http requests, set:\n\n```\nexport n8n_otel_traces_inject_outbound=false\n```\n\n## add custom attributes to node spans\n\nif you're [building a custom node](../../../integrations/creating-nodes/overview/), you can attach custom key-value pairs to the node's span. call `setmetadata` from the node's `execute` method:\n\n```\nasync execute(this: iexecutefunctions): promise<inodeexecutiondata[][]> {\n\tthis.setmetadata({\n\t\ttracing: {\n\t\t\t'llm.model': 'gpt-4o',\n\t\t\t'llm.token.input': 1500,\n\t\t\t'llm.token.output': 340,\n\t\t},\n\t});\n\n\treturn [this.getinputdata()];\n}\n```\n\nn8n prefixes each key with `n8n.node.custom.` on the exported span. values must be strings, numbers, or boolean.\n\nthis api isn't available from the code node. it's intended for node authors who want to enrich spans with domain-specific data.\n\n## try it out with jaeger\n\nyou can send traces to a local [jaeger](https://www.jaegertracing.io/) instance to see them in action.\n\n1. save the following as `docker-compose.yml`:\n\n```\nservices:\n jaeger:\n image: jaegertracing/jaeger:latest\n ports:\n - \"16686:16686\" # ui\n - \"4317:4317\" # otlp grpc\n - \"4318:4318\" # otlp http\n```\n\n2. start jaeger:\n\n```\ndocker compose up -d\n```\n\n3. start n8n with tracing turned on and pointed at jaeger. information about [starting n8n](https://github.com/n8n-io/n8n/blob/master/contributing.md) can be found elsewhere in this documentation:\n\n```\nn8n_otel_enabled=true n8n_otel_exporter_otlp_endpoint=http://127.0.0.1:4318 n8n start\n```\n\n5. run a workflow, then open the jaeger ui at <http://localhost:16686> - select \"n8n\" as service\" and click \"find traces\" to see the opentelemetry traces emitted by n8n.\n\n## span attributes\n\nworkflow and node spans include the following n8n-specific attributes.\n\n### workflow span (`workflow.execute`)\n\n| attribute | description |\n| -------------------------- | ---------------------------------------------------------------------- |\n| `n8n.workflow.id` | workflow id. |\n| `n8n.workflow.name` | workflow name. |\n| `n8n.workflow.version_id` | workflow version id. |\n| `n8n.workflow.node_count` | number of nodes in the workflow. |\n| `n8n.execution.id` | execution id. |\n| `n8n.execution.mode` | execution mode (for example, `manual`, `webhook`, `trigger`, `retry`). |\n| `n8n.execution.status` | final execution status. |\n| `n8n.execution.is_retry` | `true` if the execution is a retry. |\n| `n8n.execution.retry_of` | the original execution id, when the execution is a retry. |\n| `n8n.execution.error_type` | error class name, set when the execution fails. |\n| `n8n.continuation.reason` | set on a span link when the workflow resumes after a wait. |\n\n### node span (`node.execute`)\n\n| attribute | description |\n| ----------------------------- | -------------------------------------------------------------------------------------- |\n| `n8n.node.id` | node id. |\n| `n8n.node.name` | node name. |\n| `n8n.node.type` | node type (for example, `n8n-nodes-base.httprequest`). |\n| `n8n.node.type_version` | node type version. |\n| `n8n.node.items.input` | number of input items the node received. |\n| `n8n.node.items.output` | number of output items the node produced. |\n| `n8n.node.termination_reason` | why a node span ended without a normal completion (for example, `workflow_cancelled`). |\n| `n8n.node.custom.<key>` | custom attributes set through `metadata.tracing` in the node output. |\n\nwhen a node fails, n8n records an `exception` event on the span with the standard opentelemetry exception attributes (`exception.type`, `exception.message`, `exception.stacktrace`).\n\n## troubleshooting\n\n### no traces appear in your backend\n\nif n8n can't reach the otlp endpoint at startup, it logs an error:\n\n```\nfailed to connect to opentelemetry otlp endpoint during startup\n```\n\ncheck that:\n\n- `n8n_otel_enabled` is set to `true`.\n- `n8n_otel_exporter_otlp_endpoint` points at the base url of the collector (not the `/v1/traces` path).\n- the collector is reachable from the n8n container or host.\n- any required `n8n_otel_exporter_otlp_headers` (such as authentication tokens) are set.\n\nn8n logs opentelemetry diagnostics at `warn` level by default. set `n8n_log_level=debug` to see more detail.\n\n### worker traces are missing parent context\n\nin queue mode, workers read the parent trace context from the database. if you only set the opentelemetry environment variables on the main instance, worker spans won't link to the parent workflow trace. set the same variables on every instance type.\n\n## related resources\n\n- [opentelemetry environment variables](../../configuration/environment-variables/opentelemetry/)\n- [w3c trace context specification](https://www.w3.org/tr/trace-context/)\n- [opentelemetry collector documentation](https://opentelemetry.io/docs/collector/)\n- [logging in n8n](../logging/)\n- [monitoring](../monitoring/)\n opentelemetry tracing export 10% of traces",
|
|
18842
|
+
"fullText": "opentelemetry tracing # opentelemetry tracing\n\nthis feature is still under development\n\n- initially available from 2.19.0\n- open telemetry formatted metrics will be coming soon\n\nn8n can emit [opentelemetry](https://opentelemetry.io/) traces for workflow and node executions. use these traces to monitor execution latency, debug failures, and track requests across services in your observability stack.\n\nfeature availability\n\nopentelemetry workflow tracing is only available on self-hosted n8n.\n\n## what you get\n\nwhen you turn on tracing, n8n exports two kinds of spans for each execution:\n\n- **`workflow.execute`**: one span per workflow execution. it records the workflow id, name, version, node count, execution mode, status, and any error type.\n- **`node.execute`**: one span per node execution, nested inside its workflow span. it records the node id, name, type, version, and the number of input and output items.\n\neach span includes resource attributes that identify the n8n instance:\n\n- `service.name` (default `n8n`)\n- `service.version` (the n8n version)\n- `n8n.instance.id`\n- `n8n.instance.role` (for example, `main`, `worker`, or `webhook`)\n\nn8n also handles trace context propagation:\n\n- **inbound**: if a webhook request includes a [w3c `traceparent` header](https://www.w3.org/tr/trace-context/), n8n uses it as the parent for the workflow span. this links the n8n workflow trace to the upstream caller.\n- **outbound**: http request nodes (and other nodes that use the n8n http helpers) can inject a `traceparent` header into outbound requests. downstream services that support w3c trace context can therefore continue the trace.\n- **sub-workflows**: a sub-workflow's span uses the parent workflow's span as its parent.\n- **resumed workflows**: when a workflow resumes after a wait, the new span links back to the previous span using a span link.\n\n## enable tracing\n\nset the following environment variables on each n8n instance you want workflow tracing enabled (main, workers, and webhook processors):\n\n```\nexport n8n_otel_enabled=true\nexport n8n_otel_exporter_otlp_endpoint=http://<your-collector-host>:4318\n```\n\nrestart n8n. the instance starts exporting spans over otlp http using the protobuf encoding.\n\nn8n appends `/v1/traces` to the endpoint by default. point `n8n_otel_exporter_otlp_endpoint` at the base url of your collector, not the traces path.\n\nif your collector needs authentication, set `n8n_otel_exporter_otlp_headers` to a comma-separated list of `key=value` pairs:\n\n```\nexport n8n_otel_exporter_otlp_headers=\"authorization=bearer <your-token>,x-tenant=acme\"\n\n// for added protection - it is recommended to use the `_file` postfix if you are putting a token in here:\nexport n8n_otel_exporter_otlp_headers_file=/mnt/otel-headers\n```\n\nfor the full list of supported variables, refer to [opentelemetry environment variables](../../configuration/environment-variables/opentelemetry/).\n\nqueue mode\n\nin [queue mode](../../scaling/queue-mode/), the opentelemetry variables must be set on all instances. trace context is propagated between instances.\n\n## sampling\n\nby default, n8n exports every trace. to reduce volume in busy instances, set `n8n_otel_traces_sample_rate` to a value between `0` and `1`:\n\n```\n# export 10% of traces\nexport n8n_otel_traces_sample_rate=0.1\n```\n\nn8n uses a trace id ratio sampler, so the same trace id is either fully sampled or fully dropped across all spans in the trace.\n\nn8n will output a trace for every workflow execution - this includes published workflows, unpublished workflows and test executions - in a future release a toggle will be available to track only published workflows\n\n## reduce span volume\n\neach node in a workflow produces its own span. for workflows with lots of nodes, this can produce more data than you need. to export only workflow-level spans, set:\n\n```\nexport n8n_otel_traces_include_node_spans=false\n```\n\nto stop n8n from injecting `traceparent` headers into outbound http requests, set:\n\n```\nexport n8n_otel_traces_inject_outbound=false\n```\n\n## add custom attributes to node spans\n\nif you're [building a custom node](../../../integrations/creating-nodes/overview/), you can attach custom key-value pairs to the node's span. call `setmetadata` from the node's `execute` method:\n\n```\nasync execute(this: iexecutefunctions): promise<inodeexecutiondata[][]> {\n\tthis.setmetadata({\n\t\ttracing: {\n\t\t\t'llm.model': 'gpt-4o',\n\t\t\t'llm.token.input': 1500,\n\t\t\t'llm.token.output': 340,\n\t\t},\n\t});\n\n\treturn [this.getinputdata()];\n}\n```\n\nn8n prefixes each key with `n8n.node.custom.` on the exported span. values must be strings, numbers, or boolean.\n\nthis api isn't available from the code node. it's intended for node authors who want to enrich spans with domain-specific data.\n\n## try it out with jaeger\n\nyou can send traces to a local [jaeger](https://www.jaegertracing.io/) instance to see them in action.\n\n1. save the following as `docker-compose.yml`:\n\n```\nservices:\n jaeger:\n image: jaegertracing/jaeger:latest\n ports:\n - \"16686:16686\" # ui\n - \"4317:4317\" # otlp grpc\n - \"4318:4318\" # otlp http\n```\n\n2. start jaeger:\n\n```\ndocker compose up -d\n```\n\n3. start n8n with tracing turned on and pointed at jaeger. information about [starting n8n](https://github.com/n8n-io/n8n/blob/master/contributing.md) can be found elsewhere in this documentation:\n\n```\nn8n_otel_enabled=true n8n_otel_exporter_otlp_endpoint=http://127.0.0.1:4318 n8n start\n```\n\n5. run a workflow, then open the jaeger ui at <http://localhost:16686> - select \"n8n\" as service\" and click \"find traces\" to see the opentelemetry traces emitted by n8n.\n\n## span attributes\n\nworkflow and node spans include the following n8n-specific attributes.\n\n### workflow span (`workflow.execute`)\n\n| attribute | description |\n| -------------------------- | ---------------------------------------------------------------------- |\n| `n8n.workflow.id` | workflow id. |\n| `n8n.workflow.name` | workflow name. |\n| `n8n.workflow.version_id` | workflow version id. |\n| `n8n.workflow.node_count` | number of nodes in the workflow. |\n| `n8n.execution.id` | execution id. |\n| `n8n.execution.mode` | execution mode (for example, `manual`, `webhook`, `trigger`, `retry`). |\n| `n8n.execution.status` | final execution status. |\n| `n8n.execution.is_retry` | `true` if the execution is a retry. |\n| `n8n.execution.retry_of` | the original execution id, when the execution is a retry. |\n| `n8n.execution.error_type` | error class name, set when the execution fails. |\n| `n8n.continuation.reason` | set on a span link when the workflow resumes after a wait. |\n\n### node span (`node.execute`)\n\n| attribute | description |\n| ----------------------------- | -------------------------------------------------------------------------------------- |\n| `n8n.node.id` | node id. |\n| `n8n.node.name` | node name. |\n| `n8n.node.type` | node type (for example, `n8n-nodes-base.httprequest`). |\n| `n8n.node.type_version` | node type version. |\n| `n8n.node.items.input` | number of input items the node received. |\n| `n8n.node.items.output` | number of output items the node produced. |\n| `n8n.node.termination_reason` | why a node span ended without a normal completion (for example, `workflow_cancelled`). |\n| `n8n.node.custom.<key>` | custom attributes set through `metadata.tracing` in the node output. |\n\nwhen a node fails, n8n records an `exception` event on the span with the standard opentelemetry exception attributes (`exception.type`, `exception.message`, `exception.stacktrace`).\n\n## troubleshooting\n\n### no traces appear in your backend\n\nif n8n can't reach the otlp endpoint at startup, it logs an error:\n\n```\nfailed to connect to opentelemetry otlp endpoint during startup\n```\n\ncheck that:\n\n- `n8n_otel_enabled` is set to `true`.\n- `n8n_otel_exporter_otlp_endpoint` points at the base url of the collector (not the `/v1/traces` path).\n- the collector is reachable from the n8n container or host.\n- any required `n8n_otel_exporter_otlp_headers` (such as authentication tokens) are set.\n\nn8n logs opentelemetry diagnostics at `warn` level by default. set `n8n_log_level=debug` to see more detail.\n\n### worker traces are missing parent context\n\nin queue mode, workers read the parent trace context from the database. if you only set the opentelemetry environment variables on the main instance, worker spans won't link to the parent workflow trace. set the same variables on every instance type.\n\n## related resources\n\n- [opentelemetry environment variables](../../configuration/environment-variables/opentelemetry/)\n- [w3c trace context specification](https://www.w3.org/tr/trace-context/)\n- [opentelemetry collector documentation](https://opentelemetry.io/docs/collector/)\n- [logging in n8n](../logging/)\n- [monitoring](../monitoring/)\n opentelemetry tracing export 10% of traces",
|
|
18844
18843
|
"importantTerms": [
|
|
18845
18844
|
"node",
|
|
18846
18845
|
"workflow",
|
|
@@ -18850,15 +18849,14 @@
|
|
|
18850
18849
|
"trace",
|
|
18851
18850
|
"traces",
|
|
18852
18851
|
"tracing",
|
|
18853
|
-
"variables",
|
|
18854
18852
|
"export",
|
|
18855
18853
|
"this",
|
|
18854
|
+
"variables",
|
|
18856
18855
|
"spans",
|
|
18857
18856
|
"name",
|
|
18858
18857
|
"instance",
|
|
18859
18858
|
"context",
|
|
18860
18859
|
"http",
|
|
18861
|
-
"environment",
|
|
18862
18860
|
"mode",
|
|
18863
18861
|
"type",
|
|
18864
18862
|
"collector",
|
|
@@ -18871,16 +18869,14 @@
|
|
|
18871
18869
|
"version",
|
|
18872
18870
|
"output",
|
|
18873
18871
|
"attributes",
|
|
18874
|
-
"webhook",
|
|
18875
18872
|
"parent",
|
|
18876
18873
|
"nodes",
|
|
18877
18874
|
"workflows",
|
|
18875
|
+
"environment",
|
|
18878
18876
|
"with",
|
|
18879
18877
|
"custom",
|
|
18880
18878
|
"each",
|
|
18881
18879
|
"items",
|
|
18882
|
-
"main",
|
|
18883
|
-
"worker",
|
|
18884
18880
|
"otlp",
|
|
18885
18881
|
"exception",
|
|
18886
18882
|
"available",
|
|
@@ -18890,8 +18886,11 @@
|
|
|
18890
18886
|
"that",
|
|
18891
18887
|
"default",
|
|
18892
18888
|
"example",
|
|
18889
|
+
"webhook",
|
|
18893
18890
|
"true",
|
|
18894
|
-
"token"
|
|
18891
|
+
"token",
|
|
18892
|
+
"queue",
|
|
18893
|
+
"will"
|
|
18895
18894
|
]
|
|
18896
18895
|
}
|
|
18897
18896
|
},
|
|
@@ -20763,13 +20762,13 @@
|
|
|
20763
20762
|
"nodeName": null,
|
|
20764
20763
|
"nodeType": null,
|
|
20765
20764
|
"content": {
|
|
20766
|
-
"markdown": "#
|
|
20767
|
-
"excerpt": "#
|
|
20765
|
+
"markdown": "# Handling API rate limits\n\n[API](../../../glossary/#api) rate limits are restrictions on request frequency. For example, an API may limit the number of requests you can make per minute, or per day.\n\nAPIs can also limits how much data you can send in one request, or how much data the API sends in a single response.\n\n## Identify rate limit issues\n\nWhen an n8n node hits a rate limit, it errors. n8n displays the error message in the node output panel. This includes the error message from the service.\n\nIf n8n received error 429 (too many requests) from the service, the error message is **The service is receiving too many requests from you**.\n\nTo check the rate limits for the service you're using, refer to the API documentation for the service.\n\n## Handle rate limits for integrations\n\nThere are two ways to handle rate limits in n8n's integrations: using the Retry On Fail setting, or using a combination of the [Loop Over Items](../core-nodes/n8n-nodes-base.splitinbatches/) and [Wait](../core-nodes/n8n-nodes-base.wait/) nodes:\n\n- Retry On Fail adds a pause between API request attempts.\n- With Loop Over Items and Wait you can break you request data into smaller chunks, as well as pausing between requests.\n\n### Enable Retry On Fail\n\nWhen you enable Retry On Fail, the node automatically tries the request again if it fails the first time.\n\n1. Open the node.\n1. Select **Settings**.\n1. Enable the **Retry On Fail** toggle.\n1. Configure the retry settings: if using this to work around rate limits, set **Wait Between Tries (ms)** to more than the rate limit. For example, if the API you're using allows one request per second, set **Wait Between Tries (ms)** to `1000` to allow a 1 second wait.\n\n### Use Loop Over Items and Wait\n\nUse the Loop Over Items node to batch the input items, and the Wait node to introduce a pause between each request.\n\n1. Add the Loop Over Items node before the node that calls the API. Refer to [Loop Over Items](../core-nodes/n8n-nodes-base.splitinbatches/) for information on how to configure the node.\n1. Add the Wait node after the node that calls the API, and connect it back to the Loop Over Items node. Refer to [Wait](../core-nodes/n8n-nodes-base.wait/) for information on how to configure the node.\n\nFor example, to handle rate limits when using OpenAI:\n\n## Handle rate limits in the HTTP Request node\n\nThe HTTP Request node has built-in settings for handling rate limits and large amounts of data.\n\n### Batch requests\n\nUse the Batching option to send more than one request, reducing the request size, and introducing a pause between requests. This is the equivalent of using Loop Over Items and Wait.\n\n1. In the HTTP Request node, select **Add Option** > **Batching**.\n1. Set **Items per Batch**: this is the number of input items to include in each request.\n1. Set **Batch Interval (ms)** to introduce a delay between requests. For example, if the API you're using allows one request per second, set **Wait Between Tries (ms)** to `1000` to allow a 1 second wait.\n\n### Paginate results\n\nAPIs paginate their results when they need to send more data than they can handle in a single response. For more information on pagination in the HTTP Request node, refer to [HTTP Request node | Pagination](../core-nodes/n8n-nodes-base.httprequest/#pagination).\n",
|
|
20766
|
+
"excerpt": "# Handling API rate limits [API](../../../glossary/#api) rate limits are restrictions on request frequency. For example, an API may limit the number of requests you can make per minute, or per day. APIs can also limits how much data you can send in one request, or how much data the API sends in a single response. ## Identify rate limit issues When an n8n node hits a rate limit, it errors. n8n displays the error message in the node output panel. This includes the error message from the servic...",
|
|
20768
20767
|
"sections": [
|
|
20769
20768
|
{
|
|
20770
|
-
"title": "
|
|
20769
|
+
"title": "Handling API rate limits",
|
|
20771
20770
|
"level": 1,
|
|
20772
|
-
"content": "
|
|
20771
|
+
"content": "[API](../../../glossary/#api) rate limits are restrictions on request frequency. For example, an API may limit the number of requests you can make per minute, or per day.\n\nAPIs can also limits how much data you can send in one request, or how much data the API sends in a single response."
|
|
20773
20772
|
}
|
|
20774
20773
|
]
|
|
20775
20774
|
},
|
|
@@ -20789,97 +20788,6 @@
|
|
|
20789
20788
|
"community"
|
|
20790
20789
|
],
|
|
20791
20790
|
"useCases": [],
|
|
20792
|
-
"operations": [
|
|
20793
|
-
"triggers",
|
|
20794
|
-
"actions",
|
|
20795
|
-
"n8n adds a trigger node to your workflow",
|
|
20796
|
-
"trigger operations have a bolt icon .",
|
|
20797
|
-
"node : triggers and"
|
|
20798
|
-
],
|
|
20799
|
-
"codeExamples": 0,
|
|
20800
|
-
"complexity": "beginner",
|
|
20801
|
-
"readingTime": "2 min",
|
|
20802
|
-
"contentLength": 2719,
|
|
20803
|
-
"relatedPages": []
|
|
20804
|
-
},
|
|
20805
|
-
"searchIndex": {
|
|
20806
|
-
"fullText": "node types # built-in integrations\n\nthis section contains the [node](../../../glossary/#node-n8n) library: reference documentation for every built-in node in n8n, and their credentials.\n\n## node operations: triggers and actions\n\nwhen you add a node to a workflow, n8n displays a list of available operations. an operation is something a node does, such as getting or sending data.\n\nthere are two types of operation:\n\n- triggers start a workflow in response to specific events or conditions in your services. when you select a trigger, n8n adds a trigger node to your workflow, with the trigger operation you chose pre-selected. when you search for a node in n8n, trigger operations have a bolt icon .\n- actions are operations that represent specific tasks within a workflow, which you can use to manipulate data, perform operations on external systems, and trigger events in other systems as part of your workflows. when you select an action, n8n adds a node to your workflow, with the action operation you chose pre-selected.\n\n## core nodes\n\ncore nodes can be actions or [triggers](../../../glossary/#trigger-node-n8n). whereas most nodes connect to a specific external service, core nodes provide functionality such as logic, scheduling, or generic api calls.\n\n## cluster nodes\n\n[cluster nodes](../../../glossary/#cluster-node-n8n) are node groups that work together to provide functionality in an n8n workflow. instead of using a single node, you use a [root node](../../../glossary/#root-node-n8n) and one or more [sub-nodes](../../../glossary/#sub-node-n8n) that extend the functionality of the node.\n\n## credentials\n\nexternal services need a way to identify and authenticate users. this data can range from an api key over an email/password combination to a long multi-line private key. you can save these in n8n as [credentials](../../../glossary/#credential-n8n).\n\nnodes in n8n can then request that credential information. as another layer of security, only node types with specific access rights can access the credentials.\n\nto make sure that the data is secure, it gets saved to the database encrypted. n8n uses a random personal encryption key, which it automatically generates on the first run of n8n and then saved under `~/.n8n/config`.\n\nto learn more about creating, managing, and sharing credentials, refer to [manage credentials](../../../credentials/).\n\n## community nodes\n\nn8n supports custom nodes built by the community. refer to [community nodes](../../community-nodes/installation/) for guidance on installing and using these nodes.\n\nfor help building your own custom nodes, and publish them to [npm](https://www.npmjs.com/), refer to [creating nodes](../../creating-nodes/overview/) for more information.\n built-in integrations",
|
|
20807
|
-
"importantTerms": [
|
|
20808
|
-
"node",
|
|
20809
|
-
"nodes",
|
|
20810
|
-
"credentials",
|
|
20811
|
-
"glossary",
|
|
20812
|
-
"workflow",
|
|
20813
|
-
"trigger",
|
|
20814
|
-
"operations",
|
|
20815
|
-
"your",
|
|
20816
|
-
"that",
|
|
20817
|
-
"built",
|
|
20818
|
-
"when",
|
|
20819
|
-
"operation",
|
|
20820
|
-
"data",
|
|
20821
|
-
"specific",
|
|
20822
|
-
"community",
|
|
20823
|
-
"types",
|
|
20824
|
-
"triggers",
|
|
20825
|
-
"actions",
|
|
20826
|
-
"with",
|
|
20827
|
-
"external",
|
|
20828
|
-
"core",
|
|
20829
|
-
"functionality",
|
|
20830
|
-
"cluster",
|
|
20831
|
-
"more",
|
|
20832
|
-
"creating",
|
|
20833
|
-
"refer"
|
|
20834
|
-
]
|
|
20835
|
-
}
|
|
20836
|
-
},
|
|
20837
|
-
{
|
|
20838
|
-
"id": "page-0240",
|
|
20839
|
-
"title": "Handle rate limits",
|
|
20840
|
-
"url": "https://docs.n8n.io/integrations/builtin/rate-limits/index.md",
|
|
20841
|
-
"urlPath": "integrations/builtin/rate-limits/index.md",
|
|
20842
|
-
"category": "other",
|
|
20843
|
-
"subcategory": null,
|
|
20844
|
-
"nodeName": null,
|
|
20845
|
-
"nodeType": null,
|
|
20846
|
-
"content": {
|
|
20847
|
-
"markdown": "# Handling API rate limits\n\n[API](../../../glossary/#api) rate limits are restrictions on request frequency. For example, an API may limit the number of requests you can make per minute, or per day.\n\nAPIs can also limits how much data you can send in one request, or how much data the API sends in a single response.\n\n## Identify rate limit issues\n\nWhen an n8n node hits a rate limit, it errors. n8n displays the error message in the node output panel. This includes the error message from the service.\n\nIf n8n received error 429 (too many requests) from the service, the error message is **The service is receiving too many requests from you**.\n\nTo check the rate limits for the service you're using, refer to the API documentation for the service.\n\n## Handle rate limits for integrations\n\nThere are two ways to handle rate limits in n8n's integrations: using the Retry On Fail setting, or using a combination of the [Loop Over Items](../core-nodes/n8n-nodes-base.splitinbatches/) and [Wait](../core-nodes/n8n-nodes-base.wait/) nodes:\n\n- Retry On Fail adds a pause between API request attempts.\n- With Loop Over Items and Wait you can break you request data into smaller chunks, as well as pausing between requests.\n\n### Enable Retry On Fail\n\nWhen you enable Retry On Fail, the node automatically tries the request again if it fails the first time.\n\n1. Open the node.\n1. Select **Settings**.\n1. Enable the **Retry On Fail** toggle.\n1. Configure the retry settings: if using this to work around rate limits, set **Wait Between Tries (ms)** to more than the rate limit. For example, if the API you're using allows one request per second, set **Wait Between Tries (ms)** to `1000` to allow a 1 second wait.\n\n### Use Loop Over Items and Wait\n\nUse the Loop Over Items node to batch the input items, and the Wait node to introduce a pause between each request.\n\n1. Add the Loop Over Items node before the node that calls the API. Refer to [Loop Over Items](../core-nodes/n8n-nodes-base.splitinbatches/) for information on how to configure the node.\n1. Add the Wait node after the node that calls the API, and connect it back to the Loop Over Items node. Refer to [Wait](../core-nodes/n8n-nodes-base.wait/) for information on how to configure the node.\n\nFor example, to handle rate limits when using OpenAI:\n\n## Handle rate limits in the HTTP Request node\n\nThe HTTP Request node has built-in settings for handling rate limits and large amounts of data.\n\n### Batch requests\n\nUse the Batching option to send more than one request, reducing the request size, and introducing a pause between requests. This is the equivalent of using Loop Over Items and Wait.\n\n1. In the HTTP Request node, select **Add Option** > **Batching**.\n1. Set **Items per Batch**: this is the number of input items to include in each request.\n1. Set **Batch Interval (ms)** to introduce a delay between requests. For example, if the API you're using allows one request per second, set **Wait Between Tries (ms)** to `1000` to allow a 1 second wait.\n\n### Paginate results\n\nAPIs paginate their results when they need to send more data than they can handle in a single response. For more information on pagination in the HTTP Request node, refer to [HTTP Request node | Pagination](../core-nodes/n8n-nodes-base.httprequest/#pagination).\n",
|
|
20848
|
-
"excerpt": "# Handling API rate limits [API](../../../glossary/#api) rate limits are restrictions on request frequency. For example, an API may limit the number of requests you can make per minute, or per day. APIs can also limits how much data you can send in one request, or how much data the API sends in a single response. ## Identify rate limit issues When an n8n node hits a rate limit, it errors. n8n displays the error message in the node output panel. This includes the error message from the servic...",
|
|
20849
|
-
"sections": [
|
|
20850
|
-
{
|
|
20851
|
-
"title": "Handling API rate limits",
|
|
20852
|
-
"level": 1,
|
|
20853
|
-
"content": "[API](../../../glossary/#api) rate limits are restrictions on request frequency. For example, an API may limit the number of requests you can make per minute, or per day.\n\nAPIs can also limits how much data you can send in one request, or how much data the API sends in a single response."
|
|
20854
|
-
}
|
|
20855
|
-
]
|
|
20856
|
-
},
|
|
20857
|
-
"metadata": {
|
|
20858
|
-
"keywords": [
|
|
20859
|
-
"handle",
|
|
20860
|
-
"rate",
|
|
20861
|
-
"limits",
|
|
20862
|
-
"handling",
|
|
20863
|
-
"identify",
|
|
20864
|
-
"limit",
|
|
20865
|
-
"issues",
|
|
20866
|
-
"integrations",
|
|
20867
|
-
"enable",
|
|
20868
|
-
"retry",
|
|
20869
|
-
"fail",
|
|
20870
|
-
"loop",
|
|
20871
|
-
"over",
|
|
20872
|
-
"items",
|
|
20873
|
-
"wait",
|
|
20874
|
-
"http",
|
|
20875
|
-
"request",
|
|
20876
|
-
"node",
|
|
20877
|
-
"batch",
|
|
20878
|
-
"requests",
|
|
20879
|
-
"paginate",
|
|
20880
|
-
"results"
|
|
20881
|
-
],
|
|
20882
|
-
"useCases": [],
|
|
20883
20791
|
"operations": [],
|
|
20884
20792
|
"codeExamples": 0,
|
|
20885
20793
|
"complexity": "beginner",
|
|
@@ -20888,12 +20796,12 @@
|
|
|
20888
20796
|
"relatedPages": []
|
|
20889
20797
|
},
|
|
20890
20798
|
"searchIndex": {
|
|
20891
|
-
"fullText": "
|
|
20799
|
+
"fullText": "node types # handling api rate limits\n\n[api](../../../glossary/#api) rate limits are restrictions on request frequency. for example, an api may limit the number of requests you can make per minute, or per day.\n\napis can also limits how much data you can send in one request, or how much data the api sends in a single response.\n\n## identify rate limit issues\n\nwhen an n8n node hits a rate limit, it errors. n8n displays the error message in the node output panel. this includes the error message from the service.\n\nif n8n received error 429 (too many requests) from the service, the error message is **the service is receiving too many requests from you**.\n\nto check the rate limits for the service you're using, refer to the api documentation for the service.\n\n## handle rate limits for integrations\n\nthere are two ways to handle rate limits in n8n's integrations: using the retry on fail setting, or using a combination of the [loop over items](../core-nodes/n8n-nodes-base.splitinbatches/) and [wait](../core-nodes/n8n-nodes-base.wait/) nodes:\n\n- retry on fail adds a pause between api request attempts.\n- with loop over items and wait you can break you request data into smaller chunks, as well as pausing between requests.\n\n### enable retry on fail\n\nwhen you enable retry on fail, the node automatically tries the request again if it fails the first time.\n\n1. open the node.\n1. select **settings**.\n1. enable the **retry on fail** toggle.\n1. configure the retry settings: if using this to work around rate limits, set **wait between tries (ms)** to more than the rate limit. for example, if the api you're using allows one request per second, set **wait between tries (ms)** to `1000` to allow a 1 second wait.\n\n### use loop over items and wait\n\nuse the loop over items node to batch the input items, and the wait node to introduce a pause between each request.\n\n1. add the loop over items node before the node that calls the api. refer to [loop over items](../core-nodes/n8n-nodes-base.splitinbatches/) for information on how to configure the node.\n1. add the wait node after the node that calls the api, and connect it back to the loop over items node. refer to [wait](../core-nodes/n8n-nodes-base.wait/) for information on how to configure the node.\n\nfor example, to handle rate limits when using openai:\n\n## handle rate limits in the http request node\n\nthe http request node has built-in settings for handling rate limits and large amounts of data.\n\n### batch requests\n\nuse the batching option to send more than one request, reducing the request size, and introducing a pause between requests. this is the equivalent of using loop over items and wait.\n\n1. in the http request node, select **add option** > **batching**.\n1. set **items per batch**: this is the number of input items to include in each request.\n1. set **batch interval (ms)** to introduce a delay between requests. for example, if the api you're using allows one request per second, set **wait between tries (ms)** to `1000` to allow a 1 second wait.\n\n### paginate results\n\napis paginate their results when they need to send more data than they can handle in a single response. for more information on pagination in the http request node, refer to [http request node | pagination](../core-nodes/n8n-nodes-base.httprequest/#pagination).\n handling api rate limits",
|
|
20892
20800
|
"importantTerms": [
|
|
20893
20801
|
"node",
|
|
20894
20802
|
"request",
|
|
20895
|
-
"rate",
|
|
20896
20803
|
"wait",
|
|
20804
|
+
"rate",
|
|
20897
20805
|
"limits",
|
|
20898
20806
|
"items",
|
|
20899
20807
|
"nodes",
|
|
@@ -20902,10 +20810,10 @@
|
|
|
20902
20810
|
"over",
|
|
20903
20811
|
"between",
|
|
20904
20812
|
"requests",
|
|
20905
|
-
"handle",
|
|
20906
20813
|
"retry",
|
|
20907
20814
|
"data",
|
|
20908
20815
|
"service",
|
|
20816
|
+
"handle",
|
|
20909
20817
|
"fail",
|
|
20910
20818
|
"core",
|
|
20911
20819
|
"base",
|
|
@@ -94382,7 +94290,6 @@
|
|
|
94382
94290
|
"page-0218",
|
|
94383
94291
|
"page-0230",
|
|
94384
94292
|
"page-0239",
|
|
94385
|
-
"page-0240",
|
|
94386
94293
|
"page-0242",
|
|
94387
94294
|
"page-0243",
|
|
94388
94295
|
"page-0244",
|
|
@@ -95573,7 +95480,6 @@
|
|
|
95573
95480
|
"page-0070",
|
|
95574
95481
|
"page-0079",
|
|
95575
95482
|
"page-0080",
|
|
95576
|
-
"page-0240",
|
|
95577
95483
|
"page-0506",
|
|
95578
95484
|
"page-0540",
|
|
95579
95485
|
"page-0544",
|
|
@@ -95659,7 +95565,6 @@
|
|
|
95659
95565
|
"page-0012",
|
|
95660
95566
|
"page-0026",
|
|
95661
95567
|
"page-0102",
|
|
95662
|
-
"page-0240",
|
|
95663
95568
|
"page-0355",
|
|
95664
95569
|
"page-0381",
|
|
95665
95570
|
"page-0501",
|
|
@@ -96196,7 +96101,6 @@
|
|
|
96196
96101
|
"page-0224",
|
|
96197
96102
|
"page-0226",
|
|
96198
96103
|
"page-0233",
|
|
96199
|
-
"page-0240",
|
|
96200
96104
|
"page-0577",
|
|
96201
96105
|
"page-0580",
|
|
96202
96106
|
"page-0883",
|
|
@@ -100078,7 +99982,6 @@
|
|
|
100078
99982
|
"page-0013",
|
|
100079
99983
|
"page-0020",
|
|
100080
99984
|
"page-0138",
|
|
100081
|
-
"page-0240",
|
|
100082
99985
|
"page-0699"
|
|
100083
99986
|
],
|
|
100084
99987
|
"calls": [
|
|
@@ -102469,7 +102372,6 @@
|
|
|
102469
102372
|
"page-0018",
|
|
102470
102373
|
"page-0066",
|
|
102471
102374
|
"page-0136",
|
|
102472
|
-
"page-0240",
|
|
102473
102375
|
"page-0687",
|
|
102474
102376
|
"page-1156",
|
|
102475
102377
|
"page-1179",
|
|
@@ -102979,7 +102881,6 @@
|
|
|
102979
102881
|
"results": [
|
|
102980
102882
|
"page-0024",
|
|
102981
102883
|
"page-0026",
|
|
102982
|
-
"page-0240",
|
|
102983
102884
|
"page-0558",
|
|
102984
102885
|
"page-0559",
|
|
102985
102886
|
"page-0560",
|
|
@@ -104637,7 +104538,6 @@
|
|
|
104637
104538
|
],
|
|
104638
104539
|
"limits": [
|
|
104639
104540
|
"page-0052",
|
|
104640
|
-
"page-0240",
|
|
104641
104541
|
"page-1006",
|
|
104642
104542
|
"page-1208",
|
|
104643
104543
|
"page-1211"
|
|
@@ -105529,7 +105429,6 @@
|
|
|
105529
105429
|
"page-0070",
|
|
105530
105430
|
"page-0079",
|
|
105531
105431
|
"page-0080",
|
|
105532
|
-
"page-0240",
|
|
105533
105432
|
"page-0635",
|
|
105534
105433
|
"page-0678",
|
|
105535
105434
|
"page-0707",
|
|
@@ -105544,7 +105443,6 @@
|
|
|
105544
105443
|
],
|
|
105545
105444
|
"requests": [
|
|
105546
105445
|
"page-0053",
|
|
105547
|
-
"page-0240",
|
|
105548
105446
|
"page-0422",
|
|
105549
105447
|
"page-0502",
|
|
105550
105448
|
"page-0544",
|
|
@@ -105629,7 +105527,6 @@
|
|
|
105629
105527
|
"page-0111",
|
|
105630
105528
|
"page-0112",
|
|
105631
105529
|
"page-0138",
|
|
105632
|
-
"page-0240",
|
|
105633
105530
|
"page-0683",
|
|
105634
105531
|
"page-0687",
|
|
105635
105532
|
"page-0699",
|
|
@@ -109716,7 +109613,6 @@
|
|
|
109716
109613
|
"integrations": [
|
|
109717
109614
|
"page-0236",
|
|
109718
109615
|
"page-0239",
|
|
109719
|
-
"page-0240",
|
|
109720
109616
|
"page-0891",
|
|
109721
109617
|
"page-0914"
|
|
109722
109618
|
],
|
|
@@ -110073,54 +109969,6 @@
|
|
|
110073
109969
|
"page-0239",
|
|
110074
109970
|
"page-1270"
|
|
110075
109971
|
],
|
|
110076
|
-
"handle": [
|
|
110077
|
-
"page-0240",
|
|
110078
|
-
"page-0527"
|
|
110079
|
-
],
|
|
110080
|
-
"rate": [
|
|
110081
|
-
"page-0240",
|
|
110082
|
-
"page-1006"
|
|
110083
|
-
],
|
|
110084
|
-
"identify": [
|
|
110085
|
-
"page-0240"
|
|
110086
|
-
],
|
|
110087
|
-
"limit": [
|
|
110088
|
-
"page-0240",
|
|
110089
|
-
"page-0568",
|
|
110090
|
-
"page-0576",
|
|
110091
|
-
"page-0640",
|
|
110092
|
-
"page-0683",
|
|
110093
|
-
"page-0707",
|
|
110094
|
-
"page-0813",
|
|
110095
|
-
"page-1221"
|
|
110096
|
-
],
|
|
110097
|
-
"retry": [
|
|
110098
|
-
"page-0240",
|
|
110099
|
-
"page-0723",
|
|
110100
|
-
"page-1273",
|
|
110101
|
-
"page-1279"
|
|
110102
|
-
],
|
|
110103
|
-
"fail": [
|
|
110104
|
-
"page-0240",
|
|
110105
|
-
"page-0723"
|
|
110106
|
-
],
|
|
110107
|
-
"over": [
|
|
110108
|
-
"page-0240",
|
|
110109
|
-
"page-0699"
|
|
110110
|
-
],
|
|
110111
|
-
"wait": [
|
|
110112
|
-
"page-0240",
|
|
110113
|
-
"page-0509",
|
|
110114
|
-
"page-0538",
|
|
110115
|
-
"page-0707"
|
|
110116
|
-
],
|
|
110117
|
-
"batch": [
|
|
110118
|
-
"page-0240",
|
|
110119
|
-
"page-0699"
|
|
110120
|
-
],
|
|
110121
|
-
"paginate": [
|
|
110122
|
-
"page-0240"
|
|
110123
|
-
],
|
|
110124
109972
|
"action": [
|
|
110125
109973
|
"page-0242",
|
|
110126
109974
|
"page-0538",
|
|
@@ -111598,6 +111446,11 @@
|
|
|
111598
111446
|
"page-0538",
|
|
111599
111447
|
"page-0696"
|
|
111600
111448
|
],
|
|
111449
|
+
"wait": [
|
|
111450
|
+
"page-0509",
|
|
111451
|
+
"page-0538",
|
|
111452
|
+
"page-0707"
|
|
111453
|
+
],
|
|
111601
111454
|
"thread": [
|
|
111602
111455
|
"page-0510"
|
|
111603
111456
|
],
|
|
@@ -111732,6 +111585,9 @@
|
|
|
111732
111585
|
"page-0527",
|
|
111733
111586
|
"page-1271"
|
|
111734
111587
|
],
|
|
111588
|
+
"handle": [
|
|
111589
|
+
"page-0527"
|
|
111590
|
+
],
|
|
111735
111591
|
"null": [
|
|
111736
111592
|
"page-0527"
|
|
111737
111593
|
],
|
|
@@ -112274,6 +112130,15 @@
|
|
|
112274
112130
|
"fusion": [
|
|
112275
112131
|
"page-0568"
|
|
112276
112132
|
],
|
|
112133
|
+
"limit": [
|
|
112134
|
+
"page-0568",
|
|
112135
|
+
"page-0576",
|
|
112136
|
+
"page-0640",
|
|
112137
|
+
"page-0683",
|
|
112138
|
+
"page-0707",
|
|
112139
|
+
"page-0813",
|
|
112140
|
+
"page-1221"
|
|
112141
|
+
],
|
|
112277
112142
|
"alpha": [
|
|
112278
112143
|
"page-0568",
|
|
112279
112144
|
"page-1221"
|
|
@@ -112973,12 +112838,18 @@
|
|
|
112973
112838
|
"arrays": [
|
|
112974
112839
|
"page-0697"
|
|
112975
112840
|
],
|
|
112841
|
+
"over": [
|
|
112842
|
+
"page-0699"
|
|
112843
|
+
],
|
|
112976
112844
|
"(split": [
|
|
112977
112845
|
"page-0699"
|
|
112978
112846
|
],
|
|
112979
112847
|
"batches)": [
|
|
112980
112848
|
"page-0699"
|
|
112981
112849
|
],
|
|
112850
|
+
"batch": [
|
|
112851
|
+
"page-0699"
|
|
112852
|
+
],
|
|
112982
112853
|
"reset": [
|
|
112983
112854
|
"page-0699"
|
|
112984
112855
|
],
|
|
@@ -113131,6 +113002,14 @@
|
|
|
113131
113002
|
"could": [
|
|
113132
113003
|
"page-0723"
|
|
113133
113004
|
],
|
|
113005
|
+
"retry": [
|
|
113006
|
+
"page-0723",
|
|
113007
|
+
"page-1273",
|
|
113008
|
+
"page-1279"
|
|
113009
|
+
],
|
|
113010
|
+
"fail": [
|
|
113011
|
+
"page-0723"
|
|
113012
|
+
],
|
|
113134
113013
|
"duplicates": [
|
|
113135
113014
|
"page-0724",
|
|
113136
113015
|
"page-0725",
|
|
@@ -113574,6 +113453,9 @@
|
|
|
113574
113453
|
"trellix": [
|
|
113575
113454
|
"page-1001"
|
|
113576
113455
|
],
|
|
113456
|
+
"rate": [
|
|
113457
|
+
"page-1006"
|
|
113458
|
+
],
|
|
113577
113459
|
"typeform": [
|
|
113578
113460
|
"page-1007",
|
|
113579
113461
|
"page-1131"
|
|
@@ -114708,7 +114590,6 @@
|
|
|
114708
114590
|
"page-0237",
|
|
114709
114591
|
"page-0238",
|
|
114710
114592
|
"page-0239",
|
|
114711
|
-
"page-0240",
|
|
114712
114593
|
"page-0654",
|
|
114713
114594
|
"page-0655",
|
|
114714
114595
|
"page-0656",
|