Skip to main content
If you already instrument with OpenTelemetry, you can push traces straight to Glassray instead of connecting a provider. Point your existing OTel exporter at Glassray’s OTLP endpoint with a Bearer key - no separate Glassray SDK.
Not on OpenTelemetry? The @glassray/tracing SDK is the zero-dependency drop-in path - same endpoint, no OTel setup. And if you are pointing an existing OTel exporter here, read Bring your own OTel first: the ingest expects each trace’s spans in a single request.

Endpoint

  • Format: OTLP/HTTP JSON - the standard ExportTraceServiceRequest shape, { "resourceSpans": [ ... ] }.
  • Content-Type: application/json is required.
  • Content-Encoding: gzip is supported (and decoded transparently).

Authentication

Send an API key as a Bearer token. The key must carry the traces:write permission.
Create the endpoint and key under Settings → Sources - add an OTLP source and Glassray reveals a traces:write key (once) alongside ready-to-paste exporter snippets.

Exporter configuration

For any OTel-instrumented app, set the standard environment variables. Point OTEL_EXPORTER_OTLP_ENDPOINT at the base path - the OTel exporter appends /v1/traces itself.
If you configure an exporter explicitly in code, use the full traces URL (https://app.glassray.ai/api/public/otel/v1/traces) with the same Authorization header.
This works with any OTel-compatible GenAI instrumentation - OpenLIT, OpenLLMetry, Arize OpenInference, or a self-hosted OpenTelemetry Collector. Point it at the endpoint with the Bearer header and swap Glassray in alongside your other backends.

Behavior

Success

A 200 with an empty {} body acknowledges the batch.

Idempotent

Re-sending the same spans is a no-op - traces are keyed by source and id, so retries are safe.

Size limits

  • Payloads larger than 32 MB are rejected with 413.
  • A single trace whose stored document exceeds 16 MiB is skipped (not stored) rather than failing the whole batch.

Error codes

Once traces are flowing, Glassray classifies them into flows and starts looking for deviations - exactly as it does for pulled traces.