Skip to main content
Rootprint exposes an OTLP HTTP endpoint that accepts OpenTelemetry logs, authenticates them with an ingest API key, and ingests them into the target index. The target index is fixed by the API key.

Endpoint

Authentication

When used through OTEL_EXPORTER_OTLP_LOGS_HEADERS, the value must be URL-encoded:

Supported content types

Rootprint accepts application/x-protobuf only. Any other Content-Type returns 415 Unsupported Media Type. Every major OTEL SDK already defaults to protobuf for HTTP logs, with one exception: the JavaScript package @opentelemetry/exporter-logs-otlp-http defaults to JSON. If you are using that package, switch to @opentelemetry/exporter-logs-otlp-proto (same OTLPLogExporter API).

Encoding

Content-Encoding: gzip / x-gzip, zstd, deflate / x-deflate, and identity (or no header) for uncompressed. Any other value is rejected. OTEL SDKs send gzip or no compression.

Response codes

Rootprint maps OTLP errors to gRPC-style status codes. Upstream 4xx statuses pass through as sent, and any upstream 5xx or network failure is clamped to a retryable 503. On a 413, lower the agent’s batch size (batch.max_bytes in Vector, send_batch_max_size on the Collector’s batch processor) or raise the proxy’s body limit.

Environment variables

Index target

The target index is pinned by the ingest API key, not by the SDK. To write to a different index, create an ingest API key scoped to that index in Settings → API keys and use its value in the Authorization header. See Manage indexes.
Rootprint also accepts OTLP traces at POST /v1/traces, with the same ingest key and the same protobuf-only rule. Spans ignore the index scope described above: they always go to the span store named by TRACE_INDEX_ID, whatever index the key is pinned to. See Send traces.