Skip to main content
RunAgain ingests over OTLP/HTTP. Any OpenTelemetry-capable runtime can export to it — the SDK integrations are just convenience wrappers over these endpoints.

Base URL

Authentication

Every request must carry a project API key, via either header:
Missing or unknown keys return 401.

Endpoints

OTLP traces
Standard OTLP spans. Accepts application/json or application/x-protobuf. Spans are normalized into RunAgain’s model (gen_ai provider, model, tokens, cost, tool name, session/conversation ids).
OTLP logs (Claude Code)
OTLP log-events, used for Claude Code. Accepts application/json only. Each event is mapped to a span and grouped into a trace by session.id.
Runagain Probes capture
A captured outbound HTTP(S) interaction from the sandbox proxy. Accepts application/json. Stored as a SPAN_KIND_CLIENT span nested in the agent’s trace (trace context from the request’s traceparent). The collector recomputes the request fingerprint server-side and returns it. See Probes.
Runagain Probes session
The sandbox proxy registers on startup and receives its policy (mode, fixture_set, scenario, ignore_rules). Accepts application/json; defaults to learn mode when no session config is set.

Trace context propagation

For captured HTTP calls to nest under the LLM/tool span that made them, the agent’s HTTP client must propagate the W3C traceparent header (00-<trace_id>-<span_id>-<flags>) — standard behavior for any OpenTelemetry-instrumented client. The proxy reads it to reuse the trace and set the parent span. Without it, captures fall back to a degraded, best-effort match. Captured interactions promote these fields to typed columns (filterable in the trace explorer): http_method, http_host, http_path, http_status_code, http_fingerprint, http_fixture_set, http_scenario, http_replayed. The full request and response envelopes are stored in the span’s input / output (offloaded to blob storage above the size threshold).

Example

Responses

Large span inputs/outputs are automatically offloaded to blob storage above a size threshold, so you can trace big prompts and responses without bloating queries.