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 + Path | Auth | Purpose |
|---|---|---|
POST /v1/traces | API key | OTLP traces (HTTP 4318; gRPC 4317) |
POST /v1/metrics | API key | OTLP metrics |
POST /v1/logs | API key | OTLP logs |
POST /api/v1/ingest | API key | Agent log ingest |
POST /api/v1/metrics/ingest | API key | Agent metric ingest |
POST /api/v1/heartbeat | API key | Agent heartbeat / version report |
POST /api/v1/webhooks/deploy | API key | Record a deployment marker |
GET /install/{token} | install token | Render the agent manifest (24h token) |
GET /api/v1/health | none | Liveness — {"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).
gzipandzstdaccepted. - 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.