Skip to Content
Rius

What OTLP endpoint and headers does Rius use?

Rius takes OTLP over HTTP at https://ingest.eu.console.rius-glassflow.com/v1/traces, with your API key in an Authorization: Bearer header. You send protobuf (recommended) or JSON, and you can enable gzip. Each request can be up to 16 MiB. You can set all of this with the standard OTEL_EXPORTER_OTLP environment variables, with no Rius SDK.

How it works

Rius ingests traces over one HTTP endpoint. These are the details your exporter needs:

  • URL: https://ingest.eu.console.rius-glassflow.com/v1/traces. The host carries your workspace’s region in the subdomain, and the examples here use eu. Use your workspace’s region.
  • Header: Authorization: Bearer followed by an API key from the console. The key decides which workspace the traces land in. Keys start with ri_, and older keys that start with gf_ keep working.
  • Protocol: OTLP over HTTP, either http/protobuf (recommended) or http/json. There is no gRPC endpoint, so an exporter that speaks gRPC cannot send here. JSON requests get JSON replies.
  • Content type: application/x-protobuf or application/json.
  • Compression: Content-Encoding: gzip is accepted. Span batches compress well, so it is worth enabling.
  • Size limit: 16 MiB per request, measured on the body and on its decompressed form. Default exporter batch sizes sit far below this.
  • Signals: traces only. Rius does not ingest OTLP metrics or logs.

The base endpoint variable and the traces-specific variable differ in one way. An exporter that reads OTEL_EXPORTER_OTLP_ENDPOINT appends /v1/traces itself, so you give it the base URL. OTEL_EXPORTER_OTLP_TRACES_ENDPOINT is used as written, so you give it the full path.

Set it up

  1. Create an API key in the console. The trace LLM calls with OpenTelemetry guide covers the full setup for each sender.

  2. Export the standard variables with the base URL. They take effect through the SDK: register a tracer provider with an OTLP/HTTP exporter that has no endpoint or headers set in code (in Java, through AutoConfiguredOpenTelemetrySdk), or run the zero-code agent in Python, Node.js, Java or .NET:

export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.eu.console.rius-glassflow.com" export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf" export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer <your API key>" export OTEL_SERVICE_NAME="my-agent" # Keep long LLM spans whole; the default of 128 attributes is too low export OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT=4096
  1. If you prefer variables that apply only to traces, use the traces-specific set. The endpoint carries the full path, and the space in the header is written as %20:
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://ingest.eu.console.rius-glassflow.com/v1/traces export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf export OTEL_EXPORTER_OTLP_TRACES_HEADERS="Authorization=Bearer%20ri_..."
  1. Set OTEL_EXPORTER_OTLP_PROTOCOL to http/protobuf explicitly. In Node, @opentelemetry/exporter-trace-otlp-http sends JSON, which Rius accepts, but @opentelemetry/exporter-trace-otlp-proto is the better choice.

  2. If you send through an OpenTelemetry Collector, use the otlphttp exporter, not otlp, which speaks gRPC. Give it the base URL, set compression: gzip and pass the key in headers.

  3. Run one traced call and open Traces in the console. If a request is rejected, the status code tells you why:

StatusCause
400The body is not valid OTLP for its content type.
401The API key is wrong or revoked.
402Billing blocks ingest, for example because the trial has ended.
413The body is over 16 MiB. Send smaller batches.
415The content type is neither application/x-protobuf nor application/json.
429The workspace is over its plan’s ingest rate. Retry after the Retry-After delay.
503A temporary failure. Retry with backoff.

The span attribute reference lists which attributes to set so the spans get model, token and cost analytics.

What you get

  • Traces from any OpenTelemetry SDK or Collector arrive in the workspace that your API key belongs to, with no Rius SDK and no re-instrumentation.
  • Each LLM call shows its model and token counts, and Rius computes the cost on its side. You never send a cost attribute.
  • Clear errors. A 401, 413 or 415 points to the key, the batch size or the content type.
  • A rate hint. A 429 carries Retry-After, in seconds, up to 60, so your exporter knows how long to back off.

When something else fits

  • If your tooling only speaks OTLP over gRPC, or exports metrics and logs, it cannot send to Rius, which takes OTLP over HTTP and traces only.
  • If you have no tracing yet in Python or TypeScript, the Rius SDK sets up the exporter, endpoint and header for you with one init() call.

Still stuck? Get help

Last updated on