Troubleshooting & FAQ
Quick fixes for the issues teams hit most often. If none apply, check the Ingest & OTLP and Configuration references.
No data appears in the dashboard
Work through three things in order:
- Endpoint. Confirm the SDK's
endpoint(orOTEL_EXPORTER_OTLP_ENDPOINT) points where your collector actually is —https://ingest.splyntra.comon Cloud,http://localhost:4318when self-hosting. A trailing typo or wrong port silently drops spans. - Key. The ingest key must be valid and sent as
Authorization: Bearer <key>. See the 401 section below. - Instrumentation. Make sure you actually initialize the SDK before your
agent/LLM code runs, and that
instrumentnames the frameworks/providers you use (e.g.("openai",)/["openai"]). An instrumentor whose package isn't installed is a safe no-op — but it also captures nothing.
Also confirm you selected the right project and environment in the dashboard;
a run sent with environment="development" won't show under a production filter.
401 Unauthorized
The key is missing, malformed, or wrong:
- The header must be exactly
Authorization: Bearer <ingest key>— the wordBearerand a space, then the raw key. - Raw keys are shown once at creation and stored only as SHA-256 hashes. If you lost it, mint a new one under Settings → API keys.
- Pass the key through an environment variable, not a literal, so it isn't truncated or quoted incorrectly.
The dev key is rejected in production
splyntra_dev_key is a development-only fallback. The collector accepts it only
when running with ENV/NODE_ENV=development, and rejects it in production
(fail-closed). Mint a real ingest key and set SPLYNTRA_API_KEY to it. Production
services should refuse to start on the dev key — see
Production agent.
The guard let a request through (fail-open)
The inline guard is fail-open by default (guard_fail_open=True /
guardFailOpen: true): if the guard service is unreachable, the call is allowed
so a guard outage doesn't take your agent down. If you need blocking to take
precedence over availability, set fail-open to false to fail closed. Also confirm
guard is set to "block" (not "monitor" or "off") for enforcement. See
Guardrails.
Spans are missing from short-lived scripts
Spans are buffered and exported asynchronously. A script that exits immediately after its last call can terminate before the batch is flushed. Flush explicitly before the process ends:
- TypeScript:
await splyntra.shutdown(); - Python: the SDK flushes on normal interpreter exit and on
SIGTERM/SIGINT; for a hard early exit, let the process drain rather than killing it.
Long-running services flush on graceful shutdown — just make sure you flush before
process.exit(). See Production agent.
Commercial endpoints return 404
The governance, identity, and compliance endpoints
(/v1/ledger, /v1/policies, /v1/delegation, /v1/authorize, /v1/spend-limits,
/v1/approvals, /v1/approval-rules, /v1/compliance/*, /v1/identity/*) are
registered only by the commercial collector-cloud binary. The Community
collector imports none of the ee/* modules, so these paths return 404 by
design. To use them, run the Enterprise/Cloud edition. The open-core endpoints
(/v1/traces, /v1/logs, /v1/scorers, /v1/guard, /v1/integrations/<platform>)
are present in every edition. See API overview and
Editions & licensing.
Still stuck?
- Ingest & OTLP — endpoints, headers, and semconv.
- Configuration — the full env reference.
- Glossary — definitions of the terms used across the docs.