Send OpenTelemetry traces
POST/api/ingest/otlp/v1/traces
An OTLP/HTTP trace receiver. Point an OpenTelemetry or OpenLIT exporter at this exact URL (set it as the traces endpoint, so the exporter does not append anything) and send the header X-Ingest-Token.
Send protobuf (application/x-protobuf) or JSON (application/json); the response uses the same encoding. Gzip is accepted with Content-Encoding: gzip. Limits: 1 MB per request (compressed and decompressed) and 600 spans per minute per token. The token must be bound to a telemetry source of kind otel.
What is mapped. An LLM span (gen_ai.operation.name of chat, text_completion, completion, generate_content or embeddings) becomes an llm.call event. A tool span (gen_ai.operation.name of execute_tool, or a span with gen_ai.tool.name) becomes a tool.invocation event. Every other span is dropped silently; that is not an error.
What is read. Only a fixed allow-list of attributes: provider (gen_ai.provider.name or gen_ai.system), model (gen_ai.response.model or gen_ai.request.model), token counts (gen_ai.usage.input_tokens or gen_ai.usage.prompt_tokens, and gen_ai.usage.output_tokens or gen_ai.usage.completion_tokens), error status, agent (gen_ai.agent.name, else service.name), tool (gen_ai.tool.name) and bairav.trace_id. Prompts, completions, messages, system instructions and tool arguments are never read or stored, even if your exporter sends them. Cost estimates from the sender are ignored; Bairav prices usage from its own catalogue.
A bad span is counted in partialSuccess.rejectedSpans; it never fails the whole request. The same span sent twice is one event.
Request
Responses
- 200
- 400
- 401
- 403
- 413
- 415
- 429
- 503
An OTLP ExportTraceServiceResponse, in the same encoding as the request.
The body could not be parsed as OTLP.
The token is missing, malformed, unknown or revoked. Repeated failures for one token prefix are rate limited (30 a minute).
The token is valid but is bound to a telemetry source that may not use this endpoint.
The body is larger than the endpoint limit. The size is checked before authentication and again while streaming.
The content type is not protobuf or JSON.
The per-token rate limit was exceeded. Wait Retry-After seconds.
Response Headers
Seconds to wait before retrying.
The rate limiter or storage is temporarily unavailable. Retry after Retry-After seconds. The call is safe to repeat.
Response Headers
Seconds to wait before retrying.