POST /api/v1/traces receives OpenTelemetry trace data over OTLP/HTTP. The SDK calls it for you, and any stock OpenTelemetry exporter can target it too (see Agents without the SDK).
Request
- Body: an OTLP
ExportTraceServiceRequest, either JSON (Content-Type: application/json, aresourceSpansarray) or protobuf (Content-Type: application/x-protobuforapplication/protobuf).Content-Encoding: gzipis accepted. - Optional header
x-belvedir-session-from: trace: spans without a session id get their trace id as the session. Only traces that contain an LLM call become sessions, and only when the LLM span is in the same request, so keep a trace’s spans in one export.
withSession in the SDK, or a session.id / gen_ai.conversation.id span attribute from other exporters) are grouped into sessions and segmented into tasks; untagged spans still land but are not linked or segmented.
Errors and limits
A
402 means the project has no organization to bill to; create or join one for the project. Trace ingestion itself is not billed.