Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.rootprint.io/llms.txt

Use this file to discover all available pages before exploring further.

Rootprint exposes an OTLP HTTP endpoint that accepts OpenTelemetry logs, authenticates them with an ingest API key, and forwards them to Quickwit’s OTLP endpoint. The target index is fixed by the API key — the exporter does not choose it.

Endpoint

POST https://<your-rootprint>/v1/logs

Authentication

Authorization: Bearer <ingest-token>
When used through OTEL_EXPORTER_OTLP_LOGS_HEADERS, the value must be URL-encoded:
OTEL_EXPORTER_OTLP_LOGS_HEADERS=Authorization=Bearer%20<your-ingest-token>
The %20 between Bearer and the token is required — OTEL SDKs expect header values in URL-encoded form.

Supported content types

Rootprint accepts application/x-protobuf only. Any other Content-Type returns 415 Unsupported Media Type. Quickwit’s upstream OTLP endpoint does not accept JSON, and Rootprint does not transcode JSON to protobuf. 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).

Size and encoding

  • Rootprint does not impose its own body-size limit on OTLP requests. The effective ceiling comes from Quickwit’s OTLP endpoint and any reverse proxy you place in front of Rootprint — size requests there if you need a hard limit.
  • Content-Encoding: gzip is forwarded to Quickwit unchanged.

Response codes

Rootprint maps OTLP errors to gRPC-style status codes. Upstream Quickwit rejections (malformed protobuf, schema mismatch, oversized payload) are normalized to 400, and any upstream 5xx or network failure is clamped to a retryable 503.
StatusMeaning
200Accepted. Empty body.
400Empty request body, or Quickwit rejected the payload.
401Missing Bearer API key.
403Invalid or unknown ingest API key.
415Content-Type is not application/x-protobuf.
429Upstream Quickwit is rate-limited. Retry-After is echoed (default 5).
503Upstream Quickwit error or network failure. Retry-After: 5.
Rootprint returns an empty 200 on success rather than a populated OTLP PartialSuccess response. OTEL SDKs treat an empty 200 as a full success and do not retry.

Environment variables

VariableValue
OTEL_SERVICE_NAMEYour service name (lands in service_name).
OTEL_EXPORTER_OTLP_LOGS_ENDPOINThttps://<your-rootprint>/v1/logs
OTEL_EXPORTER_OTLP_LOGS_HEADERSAuthorization=Bearer%20<your-ingest-token>
OTEL_EXPORTER_OTLP_LOGS_PROTOCOLhttp/protobuf (required)
OTEL_LOG_LEVELMinimum severity emitted by the SDK itself.

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.