Ingest & OTLP
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:
| Signal | Path |
|---|---|
| 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:
| Prefix | Source | Purpose |
|---|---|---|
gen_ai.* | OpenTelemetry GenAI semconv | Model name, token counts, request/response metadata on LLM spans |
traceloop.entity.* | OpenLLMetry | Framework/workflow entity attributes |
splyntra.* | Splyntra SDKs | Splyntra-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
- Quickstart — first trace in minutes.
- REST API (/v1) — the commercial endpoint surface.
- Self-hosting — run the collector locally.