# otlp_http

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [cloud-data-platform-full.txt](https://docs.redpanda.com/cloud-data-platform-full.txt)

---
title: otlp_http
latest-operator-version: v26.1.4
latest-console-tag: v3.7.3
latest-connect-version: 4.93.0
latest-redpanda-tag: v26.1.9
docname: connect/components/outputs/otlp_http
page-component-name: cloud-data-platform
page-version: master
page-component-version: master
page-component-title: Cloud
page-relative-src-path: connect/components/outputs/otlp_http.adoc
page-edit-url: https://github.com/redpanda-data/cloud-docs/edit/main/modules/develop/pages/connect/components/outputs/otlp_http.adoc
page-git-created-date: "2026-01-23"
page-git-modified-date: "2026-05-26"
---

<!-- Source: https://docs.redpanda.com/cloud-data-platform/develop/connect/components/outputs/otlp_http.md -->

**Type:** Output ▼

[Output](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/outputs/otlp_http/)[Input](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/inputs/otlp_http/)

**Available in:** Cloud, [Self-Managed](https://docs.redpanda.com/connect/components/outputs/otlp_http/%20%22View%20the%20Self-Managed%20version%20of%20this%20component%22)

Send OpenTelemetry traces, logs, and metrics via OTLP/HTTP protocol.

Sends OpenTelemetry telemetry data to a remote collector via OTLP/HTTP protocol.

Accepts batches of Redpanda OTEL v1 protobuf messages (spans, log records, or metrics) and converts them to OTLP format for transmission to OpenTelemetry collectors.

#### Common

```yml
outputs:
  label: ""
  otlp_http:
    endpoint: "" # No default (required)
    max_in_flight: 64
```

#### Advanced

```yml
outputs:
  label: ""
  otlp_http:
    endpoint: "" # No default (required)
    content_type: protobuf
    headers: {}
    timeout: 30s
    proxy_url: ""
    follow_redirects: false
    disable_http2: false
    tls:
      enabled: false
      skip_cert_verify: false
      cert_file: ""
      key_file: ""
    tcp:
      connect_timeout: 0s
      keep_alive:
        idle: 15s
        interval: 15s
        count: 9
      tcp_user_timeout: 0s
    oauth:
      enabled: false
      consumer_key: ""
      consumer_secret: ""
      access_token: ""
      access_token_secret: ""
    basic_auth:
      enabled: false
      username: ""
      password: ""
    jwt:
      enabled: false
      private_key_file: ""
      signing_method: ""
      claims: {}
      headers: {}
    oauth2:
      enabled: false
      client_key: ""
      client_secret: ""
      token_url: ""
      scopes: []
      endpoint_params: {}
    max_in_flight: 64
```

## [](#input-format)Input format

Expects messages in Redpanda OTEL v1 protobuf format with metadata:

-   `signal_type`: "trace", "log", or "metric"


Each batch must contain messages of the same signal type. The entire batch is converted to a single OTLP export request and sent via HTTP POST.

## [](#endpoints)Endpoints

The output automatically appends the signal type path to the base endpoint:

-   Traces: `{endpoint}/v1/traces`

-   Logs: `{endpoint}/v1/logs`

-   Metrics: `{endpoint}/v1/metrics`


## [](#content-types)Content types

Supports two content types:

-   `protobuf` (default): `application/x-protobuf`

-   `json`: `application/json`


## [](#authentication)Authentication

Supports multiple authentication methods:

-   Basic authentication

-   OAuth v1

-   OAuth v2

-   JWT


## [](#fields)Fields

### [](#basic_auth)`basic_auth`

Allows you to specify basic authentication.

**Type**: `object`

### [](#basic_auth-enabled)`basic_auth.enabled`

Whether to use basic authentication in requests.

**Type**: `bool`

**Default**: `false`

### [](#basic_auth-password)`basic_auth.password`

A password to authenticate with.

> ⚠️ **CAUTION**
>
> This field contains sensitive information that usually shouldn’t be added to a configuration directly. For more information, see [Manage Secrets](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/secret-management/) before adding it to your configuration.

**Type**: `string`

**Default**: `""`

### [](#basic_auth-username)`basic_auth.username`

A username to authenticate as.

**Type**: `string`

**Default**: `""`

### [](#content_type)`content_type`

Content type for HTTP requests. Options: 'protobuf' or 'json'.

**Type**: `string`

**Default**: `protobuf`

**Options**: `protobuf`, `json`

### [](#disable_http2)`disable_http2`

Whether or not to disable HTTP/2.

**Type**: `bool`

**Default**: `false`

### [](#endpoint)`endpoint`

The HTTP endpoint of the remote OTLP collector (without the signal path).

**Type**: `string`

### [](#follow_redirects)`follow_redirects`

Transparently follow redirects, i.e. responses with 300-399 status codes. If disabled, the response message will contain the body, status, and headers from the redirect response and the processor will not make a request to the URL set in the Location header of the response.

**Type**: `bool`

**Default**: `false`

### [](#headers)`headers`

A map of headers to add to the request.

This field supports [interpolation functions](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/interpolation/#bloblang-queries).

**Type**: `string`

**Default**: `{}`

```yaml
# Examples:
headers:
  X-Custom-Header: value
  traceparent: ${! tracing_span().traceparent }
```

### [](#jwt)`jwt`

Beta

Allows you to specify JWT authentication.

**Type**: `object`

### [](#jwt-claims)`jwt.claims`

A value used to identify the claims that issued the JWT.

**Type**: `object`

**Default**: `{}`

### [](#jwt-enabled)`jwt.enabled`

Whether to use JWT authentication in requests.

**Type**: `bool`

**Default**: `false`

### [](#jwt-headers)`jwt.headers`

Add optional key/value headers to the JWT.

**Type**: `object`

**Default**: `{}`

### [](#jwt-private_key_file)`jwt.private_key_file`

A file with the PEM encoded via PKCS1 or PKCS8 as private key.

**Type**: `string`

**Default**: `""`

### [](#jwt-signing_method)`jwt.signing_method`

A method used to sign the token such as RS256, RS384, RS512 or EdDSA.

**Type**: `string`

**Default**: `""`

### [](#max_in_flight)`max_in_flight`

The maximum number of messages to have in flight at a given time. Increase this to improve throughput.

**Type**: `int`

**Default**: `64`

### [](#oauth)`oauth`

Allows you to specify open authentication via OAuth version 1.

**Type**: `object`

### [](#oauth-access_token)`oauth.access_token`

A value used to gain access to the protected resources on behalf of the user.

**Type**: `string`

**Default**: `""`

### [](#oauth-access_token_secret)`oauth.access_token_secret`

A secret provided in order to establish ownership of a given access token.

> ⚠️ **CAUTION**
>
> This field contains sensitive information that usually shouldn’t be added to a configuration directly. For more information, see [Manage Secrets](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/secret-management/) before adding it to your configuration.

**Type**: `string`

**Default**: `""`

### [](#oauth-consumer_key)`oauth.consumer_key`

A value used to identify the client to the service provider.

**Type**: `string`

**Default**: `""`

### [](#oauth-consumer_secret)`oauth.consumer_secret`

A secret used to establish ownership of the consumer key.

> ⚠️ **CAUTION**
>
> This field contains sensitive information that usually shouldn’t be added to a configuration directly. For more information, see [Manage Secrets](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/secret-management/) before adding it to your configuration.

**Type**: `string`

**Default**: `""`

### [](#oauth-enabled)`oauth.enabled`

Whether to use OAuth version 1 in requests.

**Type**: `bool`

**Default**: `false`

### [](#oauth2)`oauth2`

Allows you to specify open authentication via OAuth version 2 using the client credentials token flow.

**Type**: `object`

### [](#oauth2-client_key)`oauth2.client_key`

A value used to identify the client to the token provider.

**Type**: `string`

**Default**: `""`

### [](#oauth2-client_secret)`oauth2.client_secret`

A secret used to establish ownership of the client key.

> ⚠️ **CAUTION**
>
> This field contains sensitive information that usually shouldn’t be added to a configuration directly. For more information, see [Manage Secrets](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/secret-management/) before adding it to your configuration.

**Type**: `string`

**Default**: `""`

### [](#oauth2-enabled)`oauth2.enabled`

Whether to use OAuth version 2 in requests.

**Type**: `bool`

**Default**: `false`

### [](#oauth2-endpoint_params)`oauth2.endpoint_params`

A list of optional endpoint parameters, values should be arrays of strings.

**Type**: `object`

**Default**: `{}`

```yaml
# Examples:
endpoint_params:
  audience:
    - https://example.com
  resource:
    - https://api.example.com
```

### [](#oauth2-scopes)`oauth2.scopes[]`

A list of optional requested permissions.

**Type**: `array`

**Default**: `[]`

### [](#oauth2-token_url)`oauth2.token_url`

The URL of the token provider.

**Type**: `string`

**Default**: `""`

### [](#proxy_url)`proxy_url`

An optional HTTP proxy URL.

**Type**: `string`

**Default**: `""`

### [](#tcp)`tcp`

TCP socket configuration.

**Type**: `object`

### [](#tcp-connect_timeout)`tcp.connect_timeout`

Maximum amount of time a dial will wait for a connect to complete. Zero disables.

**Type**: `string`

**Default**: `0s`

### [](#tcp-keep_alive)`tcp.keep_alive`

TCP keep-alive probe configuration.

**Type**: `object`

### [](#tcp-keep_alive-count)`tcp.keep_alive.count`

Maximum unanswered keep-alive probes before dropping the connection. Zero defaults to 9.

**Type**: `int`

**Default**: `9`

### [](#tcp-keep_alive-idle)`tcp.keep_alive.idle`

Duration the connection must be idle before sending the first keep-alive probe. Zero defaults to 15s. Negative values disable keep-alive probes.

**Type**: `string`

**Default**: `15s`

### [](#tcp-keep_alive-interval)`tcp.keep_alive.interval`

Duration between keep-alive probes. Zero defaults to 15s.

**Type**: `string`

**Default**: `15s`

### [](#tcp-tcp_user_timeout)`tcp.tcp_user_timeout`

Maximum time to wait for acknowledgment of transmitted data before killing the connection. Linux-only (kernel 2.6.37+), ignored on other platforms. When enabled, keep\_alive.idle must be greater than this value per RFC 5482. Zero disables.

**Type**: `string`

**Default**: `0s`

### [](#timeout)`timeout`

Timeout for HTTP requests.

**Type**: `string`

**Default**: `30s`

### [](#tls)`tls`

TLS configuration for HTTP client.

**Type**: `object`

### [](#tls-cert_file)`tls.cert_file`

Path to the TLS certificate file for client authentication.

**Type**: `string`

**Default**: `""`

### [](#tls-enabled)`tls.enabled`

Enable TLS connections.

**Type**: `bool`

**Default**: `false`

### [](#tls-key_file)`tls.key_file`

Path to the TLS key file for client authentication.

**Type**: `string`

**Default**: `""`

### [](#tls-skip_cert_verify)`tls.skip_cert_verify`

Skip certificate verification (insecure).

**Type**: `bool`

**Default**: `false`