OpenObserve Traces API

Traces data ingestion operations

OpenAPI Specification

openobserve-traces-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: openobserve Actions Traces API
  description: OpenObserve API documents [https://openobserve.ai/docs/](https://openobserve.ai/docs/)
  contact:
    name: OpenObserve
    url: https://openobserve.ai/
    email: hello@zinclabs.io
  license:
    name: AGPL-3.0
    identifier: AGPL-3.0
  version: 0.90.0
tags:
- name: Traces
  description: Traces data ingestion operations
paths:
  /api/{org_id}/traces/service_graph/topology/current:
    get:
      tags:
      - Traces
      summary: Get current service graph topology
      description: Returns service graph topology from stream storage (last 60 minutes). Stream-only - NO in-memory metrics.
      operationId: GetCurrentServiceGraphTopology
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: stream_name
        in: query
        description: Optional stream name to filter service graph topology
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '403':
          description: Forbidden - Enterprise feature
          content:
            application/json:
              schema:
                type: string
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Traces
        operation: service_graph_topology
  /api/{org_id}/v1/traces:
    post:
      tags:
      - Traces
      summary: Ingest trace data
      description: Accepts and processes distributed tracing data from applications and services. Supports both Protocol Buffers and JSON formats for OTLP (OpenTelemetry Protocol) trace ingestion. Use this endpoint to send trace spans, timing information, and service dependency data for observability and performance monitoring.
      operationId: PostTraces
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: ExportTraceServiceRequest
        content:
          application/x-protobuf:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                code: 200
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        enabled: false
  /api/{org_id}/{stream_name}/traces/latest:
    get:
      tags:
      - Traces
      summary: Get recent trace data
      description: Retrieves the most recent trace data from a specific stream within a time range. Returns trace summaries including trace IDs, span counts, service names, and timing information. You can filter results and control pagination to analyze distributed system performance and identify bottlenecks or errors in your applications.
      operationId: GetLatestTraces
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: stream_name
        in: path
        description: Stream name
        required: true
        schema:
          type: string
      - name: filter
        in: query
        description: 'filter, eg: a=b AND c=d'
        required: false
        schema:
          type: string
      - name: from
        in: query
        description: from
        required: true
        schema:
          type: integer
          format: int64
      - name: size
        in: query
        description: size
        required: true
        schema:
          type: integer
          format: int64
      - name: start_time
        in: query
        description: start time
        required: true
        schema:
          type: integer
          format: int64
      - name: end_time
        in: query
        description: end time
        required: true
        schema:
          type: integer
          format: int64
      - name: timeout
        in: query
        description: timeout, seconds
        required: false
        schema:
          type: integer
          format: int64
      - name: sort_by
        in: query
        description: 'sort by field: start_time, duration (default: start_time)'
        required: false
        schema:
          type: string
      - name: sort_order
        in: query
        description: 'sort order: asc, desc (default: desc)'
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                took: 155
                hits:
                - trace_id: '12345678'
                  spans:
                  - 1
                  - 2
                  service_name:
                  - job1: 1
                    job2: 0
                  first_event:
                    start_time: 1234567890
                    operation_name: operation_name
        '400':
          description: Failure
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
  /api/{org_id}/{stream_name}/traces/session:
    get:
      tags:
      - Traces
      summary: Get recent session data
      description: Retrieves the most recent LLM session data from a specific trace stream within a time range. Sessions group multiple traces that share the same session ID. Returns session summaries including session IDs, trace counts, LLM usage statistics, cost, and timing information.
      operationId: GetLatestSessions
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: stream_name
        in: path
        description: Stream name
        required: true
        schema:
          type: string
      - name: filter
        in: query
        description: 'filter, eg: a=b AND c=d'
        required: false
        schema:
          type: string
      - name: from
        in: query
        description: from
        required: true
        schema:
          type: integer
          format: int64
      - name: size
        in: query
        description: size
        required: true
        schema:
          type: integer
          format: int64
      - name: start_time
        in: query
        description: start time
        required: true
        schema:
          type: integer
          format: int64
      - name: end_time
        in: query
        description: end time
        required: true
        schema:
          type: integer
          format: int64
      - name: timeout
        in: query
        description: timeout, seconds
        required: false
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                took: 155
                total: 2
                from: 0
                size: 10
                hits:
                - session_id: session-abc-123
                  start_time: 1234567890
                  end_time: 1234567900
                  duration: 10
                  trace_count: 3
                  llm_usage_tokens_input: 100
                  llm_usage_tokens_output: 50
                  llm_usage_tokens_total: 150
                  llm_usage_cost_total: 0.005
        '400':
          description: Failure
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
  /api/{org_id}/{stream_name}/traces/user:
    get:
      tags:
      - Traces
      summary: Get recent user data
      description: Retrieves the most recent LLM user data from a specific trace stream within a time range. Users group multiple traces that share the same user ID. Returns user summaries including user IDs, event counts, LLM usage statistics, cost, and timing information.
      operationId: GetLatestUsers
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: stream_name
        in: path
        description: Stream name
        required: true
        schema:
          type: string
      - name: filter
        in: query
        description: 'filter, eg: a=b AND c=d'
        required: false
        schema:
          type: string
      - name: from
        in: query
        description: from
        required: true
        schema:
          type: integer
          format: int64
      - name: size
        in: query
        description: size
        required: true
        schema:
          type: integer
          format: int64
      - name: start_time
        in: query
        description: start time
        required: true
        schema:
          type: integer
          format: int64
      - name: end_time
        in: query
        description: end time
        required: true
        schema:
          type: integer
          format: int64
      - name: timeout
        in: query
        description: timeout, seconds
        required: false
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                took: 155
                total: 2
                from: 0
                size: 10
                hits:
                - user_id: user-12345
                  first_event: 1234567890
                  last_event: 1234567900
                  total_events: 16
                  llm_usage_tokens_total: 885
                  llm_usage_cost_total: 105.3
        '400':
          description: Failure
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
  /api/{org_id}/{stream_name}/traces/{trace_id}/dag:
    get:
      tags:
      - Traces
      summary: Get trace DAG structure
      description: Retrieves the DAG (Directed Acyclic Graph) structure of all spans for a specific trace. Returns nodes (spans) and edges (parent-child relationships) that can be visualized as a trace execution graph. Each node contains span details like service name, operation, and status information.
      operationId: GetTraceDAG
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: stream_name
        in: path
        description: Stream name
        required: true
        schema:
          type: string
      - name: trace_id
        in: path
        description: Trace ID
        required: true
        schema:
          type: string
      - name: start_time
        in: query
        description: start time in microseconds
        required: true
        schema:
          type: integer
          format: int64
      - name: end_time
        in: query
        description: end time in microseconds
        required: true
        schema:
          type: integer
          format: int64
      - name: timeout
        in: query
        description: timeout, seconds
        required: false
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                trace_id: '12345678'
                nodes:
                - span_id: span1
                  parent_span_id: null
                  service_name: frontend
                  operation_name: GET /api
                  span_status: OK
                edges:
                - from: span1
                  to: span2
        '400':
          description: Failure
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
components:
  securitySchemes:
    Authorization:
      type: apiKey
      in: header
      name: Authorization
    BasicAuth:
      type: http
      scheme: basic