Export and endpoints
Reference for getting trace data out of Observe — exporting the current view, the available formats, and the OTLP endpoints traces are sent to (cloud and self-hosted).
About
There are two directions for trace data: out of Observe (exporting what you’re viewing) and into Observe (the OTLP endpoints traceAI sends to). This page covers both.
Export from the trace explorer
The download icon in the trace explorer header exports the current view — the traces that match your active filters and time range.
CSV is the only export format. There is no JSON or Parquet download from the trace explorer.
| Format | Use for |
|---|---|
| CSV | Spreadsheet analysis, sharing, importing elsewhere. |
The CSV holds one row per span in the current view, with the columns the explorer shows: trace ID, span name, status, model, provider, latency, token counts, cost, timestamp, and any eval scores present on the span.
Note
The export reflects the current view, so a very large view may be truncated. Narrow the filters or time range to export a complete slice.
Ingestion endpoints
traceAI exports spans over OTLP to FutureAGI. The transport and target are environment-driven:
| Variable | Transport | Default |
|---|---|---|
FI_BASE_URL | HTTP collector | FutureAGI cloud collector |
FI_GRPC_URL | gRPC collector | FutureAGI cloud collector |
When unset, both variables default to the FutureAGI cloud collector, so a cloud project needs no endpoint configuration — only FI_API_KEY and FI_SECRET_KEY.
- Cloud: leave the defaults; set
FI_API_KEYandFI_SECRET_KEY. - Self-hosted: point
FI_BASE_URL/FI_GRPC_URLat your own collector host so spans stay in your network.
Choose the transport with transport=Transport.HTTP (default) or Transport.GRPC in register(). See Set up tracing.
Endpoint contract
The ingestion endpoint is an OTLP/traces receiver — you don’t call it directly; the traceAI SDK’s exporter does. The contract:
| Aspect | Detail |
|---|---|
| Protocol | OTLP over HTTP (protobuf) or gRPC — the OpenTelemetry standard, not a proprietary API. |
| Operation | Export spans (write-only). There is no read/query endpoint; reading happens in the trace explorer. |
| Auth | FI_API_KEY + FI_SECRET_KEY from the keys page, sent by the SDK on every export. Keys are workspace-scoped. |
| Success | The exporter batches spans and sends them in the background; a successful export returns no payload. Spans appear in Observe within seconds. |
| Errors | A 401 means the keys are wrong for this workspace; a 4xx means a malformed/oversized batch; transient 5xx/network errors are retried by the batch exporter. |
| Limits | Spans are sent by the batch span processor on an interval, so a short-lived process must call trace_provider.force_flush() before exit or the last batch is lost. Very large payloads (huge prompts/outputs) can be dropped — mask or trim them at the SDK. |
| Versioning | Pin fi-instrumentation-otel and each instrumentor to a tested version so a release can’t change span shape under you; the wire format follows the OTLP version the SDK ships. |
Warning
Span input and output can carry customer data before they leave your process. Redact at the SDK with TraceConfig or the FI_HIDE_* variables — see Mask span attributes.
Related
Questions & Discussion