Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Ingest Endpoints

The ingest service receives OpenTelemetry data and publishes it to NATS JetStream.

All three OTLP endpoints accept JSON only (OTLP/HTTP proto3 JSON mapping). Protobuf is not yet supported — requests with Content-Type: application/x-protobuf return 415 Unsupported Media Type. Gzip-compressed bodies (Content-Encoding: gzip) are decompressed transparently.

Ingest OTLP log records.

POST /v1/logs
Authorization: Bearer gck_your_key
Content-Type: application/json

Accepts OTLP LogsData as JSON.

Response: 200 OK on success.

Ingest OTLP metric data points.

POST /v1/metrics
Authorization: Bearer gck_your_key
Content-Type: application/json

Accepts OTLP MetricsData as JSON.

Response: 200 OK on success.

Ingest OTLP trace spans.

POST /v1/traces
Authorization: Bearer gck_your_key
Content-Type: application/json

Accepts OTLP TracesData as JSON.

Response: 200 OK on success.

Health check endpoint. Returns a plain-text body.

GET /health

Response:

  • 200 OK with body ok when NATS is connected.
  • 503 Service Unavailable with body nats unhealthy when NATS is down.

The /health endpoint does not send Retry-After. That header is added only on the OTLP endpoints when the NATS publish pipeline is under backpressure (Retry-After: 5).

  • OTLP endpoints accept JSON only; other content types return 415.
  • Oversized payloads return 413 Payload Too Large.
  • Under NATS backpressure, OTLP endpoints return 503 with Retry-After: 5.
  • The ingest service is stateless — it publishes to NATS and returns immediately.
  • Data flows: Ingest → NATS JetStream → S3 writer (in the Prism Engine).

The service also exposes routes used by the Prism plugin, not documented here:

  • POST /v1/prompts — capture a prompt turn (plugin → Postgres)
  • POST /v1/prompts/response — capture the matching response
  • GET /v1/plugin/config — runtime config resolution for the plugin

These are implementation details of the plugin pipeline and are not intended as a public API.

For callers that can’t reach the internal engine, a small set of engine endpoints are proxied through ingest:

RouteMethodTarget
/v1/telemetry/logsGETEngine — see Telemetry Endpoints
/v1/insights/reportGETEngine — see Insights Endpoints
/v1/insights/report/generatePOSTEngine — see Insights Endpoints
/v1/intelligence/prismGETStub — returns a 410 pointer to GET /prism/scores (v2.1) or GET /v1/score_v3/score (v3.0)

Proxy routes require the same gck_* authentication as any other ingest endpoint.