Skip to content

Sends events as HTTP requests to a webhook or API endpoint.

to_http url:string, [method=string, headers=record, timeout=duration,
parallel=int, tls=record, connection_timeout=duration,
max_retry_count=int, retry_delay=duration] {}

The to_http operator sends each input event as an HTTP request to a webhook or API endpoint. A required printer sub-pipeline turns each input event into bytes, which become the request body. By default, the operator sends requests with the POST method.

Non-2xx HTTP status codes emit warnings. Request failures, such as connection or retry exhaustion, cause pipeline errors.

URL to send the request to.

The URL is resolved as a secret, so you can pass a secret name to avoid hardcoding sensitive URLs.

One of the following HTTP methods to use:

  • get
  • head
  • post
  • put
  • del
  • connect
  • options
  • trace

Defaults to post.

A required pipeline that receives events and must return bytes. The output of this pipeline becomes the HTTP request body.

Use this pipeline to choose the request format explicitly. For example, use write_ndjson, write_json, or another byte-producing pipeline.

Record of headers to send with the request.

Maximum number of requests that can be in progress at any time.

Defaults to 1.

TLS configuration. Provide an empty record (tls={}) to enable TLS with defaults or set fields to customize it.

{
skip_peer_verification: bool, // skip certificate verification.
cacert: string, // CA bundle to verify peers.
certfile: string, // client certificate to present.
keyfile: string, // private key for the client certificate.
min_version: string, // minimum TLS version (`"1.0"`, `"1.1"`, `"1.2"`, "1.3"`).
ciphers: string, // OpenSSL cipher list string.
client_ca: string, // CA to validate client certificates.
require_client_cert, // require clients to present a certificate.
}

The client_ca and require_client_cert options are only applied for operators that accept incoming client connections, and otherwise ignored.

Any value not specified in the record will either be picked up from the configuration or if not configured will not be used by the operator.

See the Node TLS Setup guide for more details.

Timeout for the connection.

Defaults to 5s.

The maximum times to retry a failed request. Every request has its own retry count.

Defaults to 0.

The duration to wait between each retry.

Defaults to 1s.

Send each event as a JSON POST request:

from {message: "hello", severity: "info"}
to_http "https://example.com/webhook" {
write_ndjson
}

Use the printer sub-pipeline to control how the operator serializes each event:

from {foo: "bar"}
to_http "https://example.com/api" {
write_json
}
from {foo: "bar"}
to_http "https://example.com/api",
method="put",
headers={"X-Custom": "value"} {
write_ndjson
}
from {data: "sensitive"}
to_http "https://secure.example.com/api",
tls={skip_peer_verification: true} {
write_ndjson
}

Increase throughput by sending multiple requests concurrently:

from_file "events.json" {
read_json
}
to_http "https://example.com/ingest", parallel=4 {
write_ndjson
}

Last updated: