> For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.n8n.io/connect/n8n-api/log-streaming.md).

# Log Streaming

Operations about log streaming destinations

## List streamable event types

> List the event types that can be streamed to a log streaming destination. Requires the \`eventBusDestination:list\` scope and the Log Streaming feature to be licensed.<br>

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"tags":[{"name":"LogStreaming","description":"Operations about log streaming destinations"}],"servers":[{"url":"/api/v1","description":"Current n8n instance (self-hosted built-in playground)"},{"url":"{url}/api/v1","description":"Self-hosted n8n instance","variables":{"url":{"default":"https://example.com"}}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-N8N-API-KEY"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"event-types":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"array","description":"Event names that can be streamed to a destination.","items":{"type":"string"}}}}},"responses":{"unauthorized":{"description":"Unauthorized"},"forbidden":{"description":"Forbidden"}}},"paths":{"/settings/log-streaming/event-types":{"get":{"tags":["LogStreaming"],"summary":"List streamable event types","description":"List the event types that can be streamed to a log streaming destination. Requires the `eventBusDestination:list` scope and the Log Streaming feature to be licensed.\n","responses":{"200":{"description":"Operation successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/event-types"}}}},"401":{"$ref":"#/components/responses/unauthorized"},"403":{"$ref":"#/components/responses/forbidden"}}}}}}
```

## List log streaming destinations

> List the configured log streaming destinations. Requires the \`eventBusDestination:list\` scope and the Log Streaming feature to be licensed.<br>

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"tags":[{"name":"LogStreaming","description":"Operations about log streaming destinations"}],"servers":[{"url":"/api/v1","description":"Current n8n instance (self-hosted built-in playground)"},{"url":"{url}/api/v1","description":"Self-hosted n8n instance","variables":{"url":{"default":"https://example.com"}}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-N8N-API-KEY"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"destination.list":{"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"type":"array","description":"The configured log streaming destinations.","items":{"$ref":"#/components/schemas/destination"}}}},"destination":{"type":"object","oneOf":[{"$ref":"#/components/schemas/destination.webhook"},{"$ref":"#/components/schemas/destination.syslog"},{"$ref":"#/components/schemas/destination.sentry"}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.\n"},"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"type":{"type":"string","enum":["webhook"],"description":"Sends each event as an HTTP request to a URL."},"url":{"type":"string","format":"uri","description":"Target URL that receives the event payload."},"method":{"type":"string","description":"HTTP method used for the request."},"sendHeaders":{"type":"boolean","description":"Whether to attach custom headers to the request."},"specifyHeaders":{"type":"string","description":"How custom headers are provided — `keypair` or `json`."},"headerParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonHeaders":{"type":"string","description":"Custom headers as a JSON string when `specifyHeaders` is `json`."},"sendQuery":{"type":"boolean","description":"Whether to attach query parameters to the request."},"specifyQuery":{"type":"string","description":"How query parameters are provided — `keypair` or `json`."},"queryParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","description":"Request timeout in milliseconds."},"allowUnauthorizedCerts":{"type":"boolean","description":"Accept self-signed or otherwise invalid TLS certificates."},"queryParameterArrays":{"type":"string","enum":["indices","brackets","repeat"],"description":"How array-valued query parameters are serialized into the query string."},"redirect":{"type":"object","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}},"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","description":"Syslog server port."},"protocol":{"type":"string","enum":["udp","tcp","tls"],"description":"Transport protocol."},"facility":{"type":"integer","minimum":0,"maximum":23,"description":"Syslog facility code (0–23, per RFC 5424). Common values: 0 Kernel, 1 User, 3 System, 13 Audit, 14 Alert, 16 Local0, 17 Local1, 18 Local2, 19 Local3, 20 Local4, 21 Local5, 22 Local6, 23 Local7.\n"},"app_name":{"type":"string","description":"Application name reported in the syslog message."},"tlsCa":{"type":"string","description":"PEM-encoded CA certificate used when `protocol` is `tls`."}}}]},"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"type":{"type":"string","enum":["sentry"],"description":"Sends each event to a Sentry project."},"dsn":{"type":"string","format":"uri","description":"Sentry DSN the events are sent to."}}}]}},"responses":{"unauthorized":{"description":"Unauthorized"},"forbidden":{"description":"Forbidden"}}},"paths":{"/settings/log-streaming/destinations":{"get":{"tags":["LogStreaming"],"summary":"List log streaming destinations","description":"List the configured log streaming destinations. Requires the `eventBusDestination:list` scope and the Log Streaming feature to be licensed.\n","responses":{"200":{"description":"Operation successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/destination.list"}}}},"401":{"$ref":"#/components/responses/unauthorized"},"403":{"$ref":"#/components/responses/forbidden"}}}}}}
```

## Create a log streaming destination

> Create a log streaming destination. The destination takes effect exactly as it would from the UI, using the same validation. Requires the \`eventBusDestination:create\` scope and the Log Streaming feature to be licensed. When destinations are managed via environment variables, the write is rejected with 409 and nothing is created; reads still return the current values.<br>

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"tags":[{"name":"LogStreaming","description":"Operations about log streaming destinations"}],"servers":[{"url":"/api/v1","description":"Current n8n instance (self-hosted built-in playground)"},{"url":"{url}/api/v1","description":"Self-hosted n8n instance","variables":{"url":{"default":"https://example.com"}}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-N8N-API-KEY"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"destination":{"type":"object","oneOf":[{"$ref":"#/components/schemas/destination.webhook"},{"$ref":"#/components/schemas/destination.syslog"},{"$ref":"#/components/schemas/destination.sentry"}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.\n"},"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"type":{"type":"string","enum":["webhook"],"description":"Sends each event as an HTTP request to a URL."},"url":{"type":"string","format":"uri","description":"Target URL that receives the event payload."},"method":{"type":"string","description":"HTTP method used for the request."},"sendHeaders":{"type":"boolean","description":"Whether to attach custom headers to the request."},"specifyHeaders":{"type":"string","description":"How custom headers are provided — `keypair` or `json`."},"headerParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonHeaders":{"type":"string","description":"Custom headers as a JSON string when `specifyHeaders` is `json`."},"sendQuery":{"type":"boolean","description":"Whether to attach query parameters to the request."},"specifyQuery":{"type":"string","description":"How query parameters are provided — `keypair` or `json`."},"queryParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","description":"Request timeout in milliseconds."},"allowUnauthorizedCerts":{"type":"boolean","description":"Accept self-signed or otherwise invalid TLS certificates."},"queryParameterArrays":{"type":"string","enum":["indices","brackets","repeat"],"description":"How array-valued query parameters are serialized into the query string."},"redirect":{"type":"object","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}},"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","description":"Syslog server port."},"protocol":{"type":"string","enum":["udp","tcp","tls"],"description":"Transport protocol."},"facility":{"type":"integer","minimum":0,"maximum":23,"description":"Syslog facility code (0–23, per RFC 5424). Common values: 0 Kernel, 1 User, 3 System, 13 Audit, 14 Alert, 16 Local0, 17 Local1, 18 Local2, 19 Local3, 20 Local4, 21 Local5, 22 Local6, 23 Local7.\n"},"app_name":{"type":"string","description":"Application name reported in the syslog message."},"tlsCa":{"type":"string","description":"PEM-encoded CA certificate used when `protocol` is `tls`."}}}]},"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"type":{"type":"string","enum":["sentry"],"description":"Sends each event to a Sentry project."},"dsn":{"type":"string","format":"uri","description":"Sentry DSN the events are sent to."}}}]}},"responses":{"badRequest":{"description":"The request is invalid or provides malformed data."},"unauthorized":{"description":"Unauthorized"},"forbidden":{"description":"Forbidden"},"conflict":{"description":"Conflict"}}},"paths":{"/settings/log-streaming/destinations":{"post":{"tags":["LogStreaming"],"summary":"Create a log streaming destination","description":"Create a log streaming destination. The destination takes effect exactly as it would from the UI, using the same validation. Requires the `eventBusDestination:create` scope and the Log Streaming feature to be licensed. When destinations are managed via environment variables, the write is rejected with 409 and nothing is created; reads still return the current values.\n","requestBody":{"description":"The destination to create.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/destination"}}}},"responses":{"200":{"description":"Operation successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/destination"}}}},"400":{"$ref":"#/components/responses/badRequest"},"401":{"$ref":"#/components/responses/unauthorized"},"403":{"$ref":"#/components/responses/forbidden"},"409":{"$ref":"#/components/responses/conflict"}}}}}}
```

## Send a test message to a log streaming destination

> Send a test message to the destination to verify it is reachable and configured correctly. Requires the \`eventBusDestination:test\` scope and the Log Streaming feature to be licensed.<br>

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"tags":[{"name":"LogStreaming","description":"Operations about log streaming destinations"}],"servers":[{"url":"/api/v1","description":"Current n8n instance (self-hosted built-in playground)"},{"url":"{url}/api/v1","description":"Self-hosted n8n instance","variables":{"url":{"default":"https://example.com"}}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-N8N-API-KEY"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"test-result":{"type":"object","additionalProperties":false,"required":["success"],"properties":{"success":{"type":"boolean","description":"Whether the test message was delivered to the destination successfully."}}}},"responses":{"unauthorized":{"description":"Unauthorized"},"forbidden":{"description":"Forbidden"},"notFound":{"description":"The specified resource was not found."}}},"paths":{"/settings/log-streaming/destinations/{id}/test":{"post":{"tags":["LogStreaming"],"summary":"Send a test message to a log streaming destination","description":"Send a test message to the destination to verify it is reachable and configured correctly. Requires the `eventBusDestination:test` scope and the Log Streaming feature to be licensed.\n","parameters":[{"name":"id","in":"path","description":"The id of the log streaming destination.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Operation successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/test-result"}}}},"401":{"$ref":"#/components/responses/unauthorized"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/notFound"}}}}}}
```

## Retrieve a log streaming destination

> Retrieve a single log streaming destination by id. Requires the \`eventBusDestination:read\` scope and the Log Streaming feature to be licensed.<br>

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"tags":[{"name":"LogStreaming","description":"Operations about log streaming destinations"}],"servers":[{"url":"/api/v1","description":"Current n8n instance (self-hosted built-in playground)"},{"url":"{url}/api/v1","description":"Self-hosted n8n instance","variables":{"url":{"default":"https://example.com"}}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-N8N-API-KEY"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"destination":{"type":"object","oneOf":[{"$ref":"#/components/schemas/destination.webhook"},{"$ref":"#/components/schemas/destination.syslog"},{"$ref":"#/components/schemas/destination.sentry"}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.\n"},"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"type":{"type":"string","enum":["webhook"],"description":"Sends each event as an HTTP request to a URL."},"url":{"type":"string","format":"uri","description":"Target URL that receives the event payload."},"method":{"type":"string","description":"HTTP method used for the request."},"sendHeaders":{"type":"boolean","description":"Whether to attach custom headers to the request."},"specifyHeaders":{"type":"string","description":"How custom headers are provided — `keypair` or `json`."},"headerParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonHeaders":{"type":"string","description":"Custom headers as a JSON string when `specifyHeaders` is `json`."},"sendQuery":{"type":"boolean","description":"Whether to attach query parameters to the request."},"specifyQuery":{"type":"string","description":"How query parameters are provided — `keypair` or `json`."},"queryParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","description":"Request timeout in milliseconds."},"allowUnauthorizedCerts":{"type":"boolean","description":"Accept self-signed or otherwise invalid TLS certificates."},"queryParameterArrays":{"type":"string","enum":["indices","brackets","repeat"],"description":"How array-valued query parameters are serialized into the query string."},"redirect":{"type":"object","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}},"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","description":"Syslog server port."},"protocol":{"type":"string","enum":["udp","tcp","tls"],"description":"Transport protocol."},"facility":{"type":"integer","minimum":0,"maximum":23,"description":"Syslog facility code (0–23, per RFC 5424). Common values: 0 Kernel, 1 User, 3 System, 13 Audit, 14 Alert, 16 Local0, 17 Local1, 18 Local2, 19 Local3, 20 Local4, 21 Local5, 22 Local6, 23 Local7.\n"},"app_name":{"type":"string","description":"Application name reported in the syslog message."},"tlsCa":{"type":"string","description":"PEM-encoded CA certificate used when `protocol` is `tls`."}}}]},"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"type":{"type":"string","enum":["sentry"],"description":"Sends each event to a Sentry project."},"dsn":{"type":"string","format":"uri","description":"Sentry DSN the events are sent to."}}}]}},"responses":{"unauthorized":{"description":"Unauthorized"},"forbidden":{"description":"Forbidden"},"notFound":{"description":"The specified resource was not found."}}},"paths":{"/settings/log-streaming/destinations/{id}":{"get":{"tags":["LogStreaming"],"summary":"Retrieve a log streaming destination","description":"Retrieve a single log streaming destination by id. Requires the `eventBusDestination:read` scope and the Log Streaming feature to be licensed.\n","parameters":[{"name":"id","in":"path","description":"The id of the log streaming destination.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Operation successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/destination"}}}},"401":{"$ref":"#/components/responses/unauthorized"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/notFound"}}}}}}
```

## Update a log streaming destination

> Replace an existing log streaming destination. The update takes effect exactly as it would from the UI, using the same validation. Requires the \`eventBusDestination:update\` scope and the Log Streaming feature to be licensed. When destinations are managed via environment variables, the write is rejected with 409 and nothing is changed; reads still return the current values.<br>

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"tags":[{"name":"LogStreaming","description":"Operations about log streaming destinations"}],"servers":[{"url":"/api/v1","description":"Current n8n instance (self-hosted built-in playground)"},{"url":"{url}/api/v1","description":"Self-hosted n8n instance","variables":{"url":{"default":"https://example.com"}}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-N8N-API-KEY"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"destination":{"type":"object","oneOf":[{"$ref":"#/components/schemas/destination.webhook"},{"$ref":"#/components/schemas/destination.syslog"},{"$ref":"#/components/schemas/destination.sentry"}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.\n"},"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"type":{"type":"string","enum":["webhook"],"description":"Sends each event as an HTTP request to a URL."},"url":{"type":"string","format":"uri","description":"Target URL that receives the event payload."},"method":{"type":"string","description":"HTTP method used for the request."},"sendHeaders":{"type":"boolean","description":"Whether to attach custom headers to the request."},"specifyHeaders":{"type":"string","description":"How custom headers are provided — `keypair` or `json`."},"headerParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonHeaders":{"type":"string","description":"Custom headers as a JSON string when `specifyHeaders` is `json`."},"sendQuery":{"type":"boolean","description":"Whether to attach query parameters to the request."},"specifyQuery":{"type":"string","description":"How query parameters are provided — `keypair` or `json`."},"queryParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","description":"Request timeout in milliseconds."},"allowUnauthorizedCerts":{"type":"boolean","description":"Accept self-signed or otherwise invalid TLS certificates."},"queryParameterArrays":{"type":"string","enum":["indices","brackets","repeat"],"description":"How array-valued query parameters are serialized into the query string."},"redirect":{"type":"object","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}},"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","description":"Syslog server port."},"protocol":{"type":"string","enum":["udp","tcp","tls"],"description":"Transport protocol."},"facility":{"type":"integer","minimum":0,"maximum":23,"description":"Syslog facility code (0–23, per RFC 5424). Common values: 0 Kernel, 1 User, 3 System, 13 Audit, 14 Alert, 16 Local0, 17 Local1, 18 Local2, 19 Local3, 20 Local4, 21 Local5, 22 Local6, 23 Local7.\n"},"app_name":{"type":"string","description":"Application name reported in the syslog message."},"tlsCa":{"type":"string","description":"PEM-encoded CA certificate used when `protocol` is `tls`."}}}]},"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"type":{"type":"string","enum":["sentry"],"description":"Sends each event to a Sentry project."},"dsn":{"type":"string","format":"uri","description":"Sentry DSN the events are sent to."}}}]}},"responses":{"badRequest":{"description":"The request is invalid or provides malformed data."},"unauthorized":{"description":"Unauthorized"},"forbidden":{"description":"Forbidden"},"notFound":{"description":"The specified resource was not found."},"conflict":{"description":"Conflict"}}},"paths":{"/settings/log-streaming/destinations/{id}":{"put":{"tags":["LogStreaming"],"summary":"Update a log streaming destination","description":"Replace an existing log streaming destination. The update takes effect exactly as it would from the UI, using the same validation. Requires the `eventBusDestination:update` scope and the Log Streaming feature to be licensed. When destinations are managed via environment variables, the write is rejected with 409 and nothing is changed; reads still return the current values.\n","parameters":[{"name":"id","in":"path","description":"The id of the log streaming destination.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"The destination fields to apply.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/destination"}}}},"responses":{"200":{"description":"Operation successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/destination"}}}},"400":{"$ref":"#/components/responses/badRequest"},"401":{"$ref":"#/components/responses/unauthorized"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/notFound"},"409":{"$ref":"#/components/responses/conflict"}}}}}}
```

## Delete a log streaming destination

> Remove a log streaming destination. Requires the \`eventBusDestination:delete\` scope and the Log Streaming feature to be licensed. When destinations are managed via environment variables, the delete is rejected with 409 and nothing is removed; reads still return the current values.<br>

```json
{"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"tags":[{"name":"LogStreaming","description":"Operations about log streaming destinations"}],"servers":[{"url":"/api/v1","description":"Current n8n instance (self-hosted built-in playground)"},{"url":"{url}/api/v1","description":"Self-hosted n8n instance","variables":{"url":{"default":"https://example.com"}}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-N8N-API-KEY"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"destination":{"type":"object","oneOf":[{"$ref":"#/components/schemas/destination.webhook"},{"$ref":"#/components/schemas/destination.syslog"},{"$ref":"#/components/schemas/destination.sentry"}],"description":"A log streaming destination. The `type` field selects the variant and its type-specific fields: `webhook`, `syslog`, or `sentry`.\n"},"destination.webhook":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","url"],"properties":{"type":{"type":"string","enum":["webhook"],"description":"Sends each event as an HTTP request to a URL."},"url":{"type":"string","format":"uri","description":"Target URL that receives the event payload."},"method":{"type":"string","description":"HTTP method used for the request."},"sendHeaders":{"type":"boolean","description":"Whether to attach custom headers to the request."},"specifyHeaders":{"type":"string","description":"How custom headers are provided — `keypair` or `json`."},"headerParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonHeaders":{"type":"string","description":"Custom headers as a JSON string when `specifyHeaders` is `json`."},"sendQuery":{"type":"boolean","description":"Whether to attach query parameters to the request."},"specifyQuery":{"type":"string","description":"How query parameters are provided — `keypair` or `json`."},"queryParameters":{"$ref":"#/components/schemas/parameter-list"},"jsonQuery":{"type":"string","description":"Query parameters as a JSON string when `specifyQuery` is `json`."},"options":{"type":"object","additionalProperties":true,"description":"Additional HTTP request options.","properties":{"timeout":{"type":"integer","description":"Request timeout in milliseconds."},"allowUnauthorizedCerts":{"type":"boolean","description":"Accept self-signed or otherwise invalid TLS certificates."},"queryParameterArrays":{"type":"string","enum":["indices","brackets","repeat"],"description":"How array-valued query parameters are serialized into the query string."},"redirect":{"type":"object","additionalProperties":true,"description":"Redirect-following behaviour.","properties":{"redirect":{"type":"object","additionalProperties":true,"properties":{"followRedirects":{"type":"boolean","description":"Whether to follow HTTP redirects."},"maxRedirects":{"type":"integer","description":"Maximum number of redirects to follow."}}}}},"proxy":{"type":"object","additionalProperties":true,"description":"Outbound proxy configuration.","properties":{"proxy":{"type":"object","additionalProperties":true,"properties":{"protocol":{"type":"string","enum":["https","http"],"description":"Proxy protocol."},"host":{"type":"string","description":"Proxy host, without protocol or port."},"port":{"type":"integer","description":"Proxy port."}}}}},"socket":{"type":"object","additionalProperties":true,"description":"Connection socket options.","properties":{"keepAlive":{"type":"boolean","description":"Whether to keep sockets open for reuse."},"maxSockets":{"type":"integer","description":"Maximum sockets per host kept open at once."},"maxFreeSockets":{"type":"integer","description":"Maximum idle sockets per host kept open."}}}}}}}]},"destination.common":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"Server-generated unique id of the destination. Returned in responses; not accepted in requests."},"label":{"type":"string","description":"Human-readable name shown in the UI."},"enabled":{"type":"boolean","description":"Whether the destination currently receives events."},"subscribedEvents":{"type":"array","items":{"type":"string"},"description":"Event names (or group prefixes, e.g. `n8n.workflow`, which matches all `n8n.workflow.*` events) this destination receives. Retrieve the full list of streamable event names from `GET /settings/log-streaming/event-types`.\n"},"anonymizeAuditMessages":{"type":"boolean","description":"Whether audit message payloads are anonymized before being sent."},"circuitBreaker":{"type":"object","additionalProperties":true,"description":"Circuit-breaker tuning for delivery. After repeated failures the destination stops sending for a cool-down window instead of hammering an unhealthy target. All fields are optional; sensible defaults apply when omitted.\n","properties":{"maxFailures":{"type":"integer","description":"Maximum failures within the sliding window before the breaker opens."},"failureWindow":{"type":"integer","description":"Sliding window, in milliseconds, over which failures are counted."}}}}},"parameter-list":{"type":"object","additionalProperties":true,"description":"Key-value pairs used when the matching `specify*` field is `keypair`.","properties":{"parameters":{"type":"array","items":{"type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"description":"Parameter value. Usually a string; numbers, booleans and null are also accepted.\n"}}}}}},"destination.syslog":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","host"],"properties":{"type":{"type":"string","enum":["syslog"],"description":"Sends each event to a syslog server."},"host":{"type":"string","description":"Syslog server host."},"port":{"type":"integer","description":"Syslog server port."},"protocol":{"type":"string","enum":["udp","tcp","tls"],"description":"Transport protocol."},"facility":{"type":"integer","minimum":0,"maximum":23,"description":"Syslog facility code (0–23, per RFC 5424). Common values: 0 Kernel, 1 User, 3 System, 13 Audit, 14 Alert, 16 Local0, 17 Local1, 18 Local2, 19 Local3, 20 Local4, 21 Local5, 22 Local6, 23 Local7.\n"},"app_name":{"type":"string","description":"Application name reported in the syslog message."},"tlsCa":{"type":"string","description":"PEM-encoded CA certificate used when `protocol` is `tls`."}}}]},"destination.sentry":{"allOf":[{"$ref":"#/components/schemas/destination.common"},{"type":"object","additionalProperties":true,"required":["type","dsn"],"properties":{"type":{"type":"string","enum":["sentry"],"description":"Sends each event to a Sentry project."},"dsn":{"type":"string","format":"uri","description":"Sentry DSN the events are sent to."}}}]}},"responses":{"unauthorized":{"description":"Unauthorized"},"forbidden":{"description":"Forbidden"},"notFound":{"description":"The specified resource was not found."},"conflict":{"description":"Conflict"}}},"paths":{"/settings/log-streaming/destinations/{id}":{"delete":{"tags":["LogStreaming"],"summary":"Delete a log streaming destination","description":"Remove a log streaming destination. Requires the `eventBusDestination:delete` scope and the Log Streaming feature to be licensed. When destinations are managed via environment variables, the delete is rejected with 409 and nothing is removed; reads still return the current values.\n","parameters":[{"name":"id","in":"path","description":"The id of the log streaming destination.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Operation successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/destination"}}}},"401":{"$ref":"#/components/responses/unauthorized"},"403":{"$ref":"#/components/responses/forbidden"},"404":{"$ref":"#/components/responses/notFound"},"409":{"$ref":"#/components/responses/conflict"}}}}}}
```
