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.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.
Endpoint
Authentication
OTEL_EXPORTER_OTLP_LOGS_HEADERS, the value must be URL-encoded:
Supported content types
Rootprint acceptsapplication/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: gzipis 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 to400, and any upstream 5xx or network failure is clamped to a retryable 503.
| Status | Meaning |
|---|---|
200 | Accepted. Empty body. |
400 | Empty request body, or Quickwit rejected the payload. |
401 | Missing Bearer API key. |
403 | Invalid or unknown ingest API key. |
415 | Content-Type is not application/x-protobuf. |
429 | Upstream Quickwit is rate-limited. Retry-After is echoed (default 5). |
503 | Upstream 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
| Variable | Value |
|---|---|
OTEL_SERVICE_NAME | Your service name (lands in service_name). |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | https://<your-rootprint>/v1/logs |
OTEL_EXPORTER_OTLP_LOGS_HEADERS | Authorization=Bearer%20<your-ingest-token> |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | http/protobuf (required) |
OTEL_LOG_LEVEL | Minimum 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 theAuthorization header. See Manage indexes.
