Programmatic access (ingestion API)

ObserveKit's ingestion endpoints are the stable, externally-callable API — authenticated with a source API key (or, for install, a short-lived token). They're what the agent and OTel SDKs use, and you can call them directly.

> There is no public REST API for managing resources (sources, alerts, dashboards, etc.). Those endpoints are the web UI's own backend: they require a browser session (JWT), are CORS-locked to the UI origin, and aren't intended for programmatic use. API keys authorize ingestion only — they can't read data or manage resources.

Endpoints

Method + PathAuthPurpose
POST /v1/tracesAPI keyOTLP traces (HTTP 4318; gRPC 4317)
POST /v1/metricsAPI keyOTLP metrics
POST /v1/logsAPI keyOTLP logs
POST /api/v1/ingestAPI keyAgent log ingest
POST /api/v1/metrics/ingestAPI keyAgent metric ingest
POST /api/v1/heartbeatAPI keyAgent heartbeat / version report
POST /api/v1/webhooks/deployAPI keyRecord a deployment marker
GET /install/{token}install tokenRender the agent manifest (24h token)
GET /api/v1/healthnoneLiveness — {"status":"ok"}

Base URL in production: https://observekit-api.expeed.com.

Auth

Send the source API key as either header:

X-API-Key: <your-key>
Authorization: Bearer <your-key>

See API keys for where to get and how to rotate one. For OTLP specifically (per-language SDK setup, service sources) see Sending data with OpenTelemetry.

Limits

  • Body size: 10 MiB per request (compressed and decompressed). gzip and zstd accepted.
  • Rate: ingestion is limited to 600 requests/minute per source IP. Batch, don't spray single events.
  • Batch size: the agent log-ingest path caps a batch at 10,000 entries — larger batches are rejected.

Recording a deployment marker

POST /api/v1/webhooks/deploy with your API key writes a marker that shows up on charts (see Deployments) so you can correlate a rollout with a metric/error change.

Health check

GET /api/v1/health needs no auth and returns {"status":"ok","service":"observekit-server"} — use it for uptime probes.