Skip to main content

Ingest & OTLP

Availability

Open core · self-host + all Splyntra Cloud plans

Splyntra's ingest is OpenTelemetry-native. Any OTLP/HTTP exporter — the Splyntra SDKs, the OpenTelemetry SDKs, or a hyperscaler agent platform — can send spans and logs directly, with no proprietary format.

Endpoints

The collector exposes standard OTLP/HTTP paths:

SignalPath
Traces/v1/traces
Logs/v1/logs

Prefix them with your base URL — https://ingest.splyntra.com on Cloud, or http://localhost:4318 when self-hosting.

Authentication headers

Send your ingest key as a bearer token. With a raw OpenTelemetry exporter, pass it through the standard OTEL_EXPORTER_OTLP_HEADERS variable:

export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.splyntra.com"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer ${SPLYNTRA_API_KEY}"
export OTEL_SERVICE_NAME="support-agent"

The header the collector requires is simply:

Authorization: Bearer <ingest key>

The development-only fallback key splyntra_dev_key is accepted when the collector runs in development mode and rejected in production. See API overview.

Semantic conventions

The collector reads three families of attributes and folds them into the same span model, so third-party OTel and hyperscaler platforms ingest natively:

PrefixSourcePurpose
gen_ai.*OpenTelemetry GenAI semconvModel name, token counts, request/response metadata on LLM spans
traceloop.entity.*OpenLLMetryFramework/workflow entity attributes
splyntra.*Splyntra SDKsSplyntra-specific span kinds, risk, and cost attributes

Because token counts and model names arrive via gen_ai.*, cost attribution and the risk score work on spans emitted by exporters that never touched a Splyntra SDK. Amazon Bedrock AgentCore and Google Vertex Agent Engine, for example, emit OTel gen_ai spans that ingest natively at /v1/traces. See Agent platforms.

Multi-tenant org scoping

In a multi-tenant deployment, the dashboard BFF talks to the collector over a trusted service channel (COLLECTOR_SERVICE_TOKEN) and scopes each request to an organization with a header:

X-Splyntra-Org-Id: <org id>

When COLLECTOR_SERVICE_TOKEN is blank, the collector runs single-tenant and no org header is needed. Tenant isolation lives at this collector boundary — never in the browser-facing key.

Raw OpenTelemetry example

You can point any OTLP/HTTP exporter at Splyntra. The variables below are all the OpenTelemetry SDK needs:

export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.splyntra.com"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer ${SPLYNTRA_API_KEY}"
export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
export OTEL_SERVICE_NAME="support-agent"

Emit gen_ai.* attributes on your LLM spans and Splyntra picks up model, tokens, and cost automatically. For one-line auto-instrumentation instead, use the Python or TypeScript SDK.

Next steps