OpenObserve Service Streams API

Multi-signal correlation across logs, traces, and metrics (enterprise)

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/openobserve-service-streams-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

openobserve-service-streams-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: openobserve Actions Service Streams 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: Service Streams
  description: Multi-signal correlation across logs, traces, and metrics (enterprise)
paths:
  /{org_id}/service_streams:
    get:
      tags:
      - Service Streams
      operationId: ListServiceStreams
      parameters:
      - name: org_id
        in: path
        description: Organization ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of discovered services
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - Enterprise feature
        '500':
          description: Internal server error
      security:
      - Authorization: []
  /{org_id}/service_streams/_analytics:
    get:
      tags:
      - Service Streams
      summary: GET /api/{org_id}/service_streams/_analytics
      description: 'Get comprehensive dimension analytics including cardinality classification


        Returns:

        - Cardinality of each dimension

        - Cardinality class (VeryLow/Low/Medium/High/VeryHigh)

        - Recommended priority dimensions for correlation

        - Sample values for each dimension


        This endpoint provides the data needed to understand which dimensions

        are stable (good for correlation) vs transient (good for filtering only)'
      operationId: GetServiceStreamAnalytics
      parameters:
      - name: org_id
        in: path
        description: Organization ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Dimension analytics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DimensionAnalyticsSummary'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - Enterprise feature
        '500':
          description: Internal server error
      security:
      - Authorization: []
  /{org_id}/service_streams/_correlate:
    post:
      tags:
      - Service Streams
      summary: POST /api/{org_id}/service_streams/_correlate
      description: "Find related telemetry streams for a given log/trace/metric event\n\nRequest body:\n{\n  \"source_stream\": \"default\",\n  \"source_type\": \"logs\",\n  \"available_dimensions\": {\n    \"k8s-cluster\": \"prod\",\n    \"k8s-namespace\": \"app\",\n    \"k8s-deployment\": \"api\",\n    \"k8s-pod\": \"api-xyz\",\n    \"host\": \"node-123\"\n  }\n}\n\nResponse includes:\n- The matched service\n- Which dimensions were used for matching (minimal set)\n- Which dimensions are available for additional filtering\n- All related streams (logs/traces/metrics) with their dimension requirements"
      operationId: CorrelateServiceStreams
      parameters:
      - name: org_id
        in: path
        description: Organization ID
        required: true
        schema:
          type: string
      requestBody:
        description: Correlation request parameters
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CorrelationRequest'
        required: true
      responses:
        '200':
          description: Correlation results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorrelationResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - Enterprise feature
        '404':
          description: No matching service found
        '500':
          description: Internal server error
      security:
      - Authorization: []
      x-o2-mcp:
        enabled: false
  /{org_id}/service_streams/config/identity:
    get:
      tags:
      - Service Streams
      operationId: GetServiceIdentityConfig
      parameters:
      - name: org_id
        in: path
        description: Organization ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Current identity config
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      security:
      - Authorization: []
    put:
      tags:
      - Service Streams
      operationId: SaveServiceIdentityConfig
      parameters:
      - name: org_id
        in: path
        description: Organization ID
        required: true
        schema:
          type: string
      requestBody:
        description: ServiceIdentityConfig JSON
        content:
          application/json:
            schema: {}
        required: true
      responses:
        '200':
          description: Config saved
        '400':
          description: Invalid config
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      security:
      - Authorization: []
components:
  schemas:
    CorrelationRequest:
      type: object
      required:
      - source_stream
      - source_type
      - available_dimensions
      properties:
        available_dimensions:
          type: object
          description: Available dimensions from the source event
          additionalProperties:
            type: string
          propertyNames:
            type: string
        source_stream:
          type: string
          description: Source stream name
        source_type:
          type: string
          description: Source stream type (logs/traces/metrics)
    RelatedStreams:
      type: object
      description: Related streams grouped by type
      required:
      - logs
      - traces
      - metrics
      properties:
        logs:
          type: array
          items:
            $ref: '#/components/schemas/StreamInfo'
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/StreamInfo'
        traces:
          type: array
          items:
            $ref: '#/components/schemas/StreamInfo'
    CorrelationResponse:
      type: object
      description: Response from the correlate API
      required:
      - service_name
      - matched_dimensions
      - additional_dimensions
      - related_streams
      properties:
        additional_dimensions:
          type: object
          description: Additional dimensions available for filtering
          additionalProperties:
            type: string
          propertyNames:
            type: string
        all_streams:
          type: array
          items:
            $ref: '#/components/schemas/StreamInfo'
          description: 'Flattened list of all streams with explicit stream_type


            This field provides a flat list of all streams where each stream has its

            stream_type explicitly set. This is useful for UIs that:

            1. Display all streams in a single list/table

            2. Need to query streams without maintaining the nested structure

            3. Pass streams between components (type info is preserved)'
        matched_dimensions:
          type: object
          description: Dimensions that were used for matching (minimal set)
          additionalProperties:
            type: string
          propertyNames:
            type: string
        matched_set_id:
          type:
          - string
          - 'null'
          description: 'The identity set that was selected for this correlation (by best-coverage resolution).

            `None` if the feature is not enabled or the set was not determined.'
        related_streams:
          $ref: '#/components/schemas/RelatedStreams'
          description: Related streams grouped by type (for backward compatibility)
        service_name:
          type: string
          description: Matched service name
    DimensionAnalyticsSummary:
      type: object
      description: Dimension analytics summary for an organization
      required:
      - org_id
      - total_dimensions
      - by_cardinality
      - recommended_priority_dimensions
      - dimensions
      - generated_at
      properties:
        available_groups:
          type: array
          items:
            $ref: '#/components/schemas/FoundGroup'
          description: All alias groups found in the org's stream schemas
        by_cardinality:
          type: object
          description: Dimensions by cardinality class
          additionalProperties:
            type: array
            items:
              type: string
          propertyNames:
            type: string
        dimensions:
          type: array
          items:
            $ref: '#/components/schemas/DimensionAnalytics'
          description: All dimension analytics (dimensions with ingested data)
        generated_at:
          type: integer
          format: int64
          description: When this summary was generated
        org_id:
          type: string
          description: Organization ID
        recommended_priority_dimensions:
          type: array
          items:
            type: string
          description: 'Recommended priority dimensions for correlation

            (sorted by cardinality, lowest first)'
        service_field_sources:
          type: array
          items:
            $ref: '#/components/schemas/ServiceFieldSource'
          description: 'Field name sources for the "service" semantic group, ranked by hit count.

            Shows which actual field names in each stream type contributed a service name.'
        total_dimensions:
          type: integer
          description: Total number of dimensions tracked
          minimum: 0
    ServiceFieldSource:
      type: object
      description: 'Describes a raw field name that was used to populate a semantic group,

        along with which stream types it appeared in and how many services used it.'
      required:
      - field_name
      - stream_types
      - hit_count
      properties:
        field_name:
          type: string
          description: The raw field name in the stream, e.g. "kubernetes_labels_app"
        hit_count:
          type: integer
          description: Number of services where this field provided the semantic group value
          minimum: 0
        stream_types:
          type: array
          items:
            type: string
          description: Stream types where this field was used, e.g. ["logs", "traces"]
    FoundGroup:
      type: object
      description: A semantic alias group found in the org's stream schemas.
      required:
      - group_id
      - display
      - stream_types
      - aliases
      - recommended
      properties:
        aliases:
          type: object
          description: 'Actual field name found per stream type, e.g., {"logs": "k8s_cluster_name"}'
          additionalProperties:
            type: string
          propertyNames:
            type: string
        cardinality_class:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/CardinalityClass'
            description: Cardinality class derived from unique_values (None if no data yet)
        display:
          type: string
          description: Human-readable display name, e.g., "K8s Cluster"
        group_id:
          type: string
          description: Semantic group ID, e.g., "k8s-cluster"
        recommended:
          type: boolean
          description: 'True if this group appears in 2+ stream types AND has acceptable cardinality

            (Deprecated: logic moving to UI)'
        stream_types:
          type: array
          items:
            type: string
          description: Which stream types contain a field from this group (e.g., ["logs", "traces"])
        unique_values:
          type:
          - integer
          - 'null'
          description: Number of unique values seen in actual data (None if no data collected yet)
          minimum: 0
    StreamInfo:
      type: object
      description: Information about a stream where a service was discovered
      required:
      - stream_name
      properties:
        filters:
          type: object
          description: 'Optional filter conditions that identify this service in the stream

            Example: {"namespace": "production", "cluster": "us-east-1"}'
          additionalProperties:
            type: string
          propertyNames:
            type: string
        stream_name:
          type: string
          description: Stream name
        stream_type:
          $ref: '#/components/schemas/StreamType'
          description: 'Stream type (logs, metrics, traces)


            This field explicitly identifies the stream type, enabling UIs to:

            1. Query the correct API endpoint (logs/_search vs metrics/_search)

            2. Display appropriate type badges/icons

            3. Handle flattened stream lists without losing type information'
    StreamType:
      type: string
      enum:
      - logs
      - metrics
      - traces
      - service_graph
      - enrichment_tables
      - file_list
      - metadata
      - index
    DimensionAnalytics:
      type: object
      description: Dimension analytics tracking
      required:
      - dimension_name
      - cardinality
      - cardinality_class
      - service_count
      - first_seen
      - last_updated
      properties:
        cardinality:
          type: integer
          description: Current cardinality (number of unique values seen)
          minimum: 0
        cardinality_class:
          $ref: '#/components/schemas/CardinalityClass'
          description: Cardinality class
        dimension_name:
          type: string
          description: Dimension name (e.g., "k8s-cluster", "environment", "service")
        first_seen:
          type: integer
          format: int64
          description: When this dimension was first seen
        last_updated:
          type: integer
          format: int64
          description: When this dimension was last updated
        sample_values:
          type: object
          description: Sample values mapped by stream type, then stream name (limited to 10 for inspection)
          additionalProperties:
            type: object
            additionalProperties:
              type: array
              items:
                type: string
            propertyNames:
              type: string
          propertyNames:
            type: string
        service_count:
          type: integer
          description: Number of services that have this dimension
          minimum: 0
        value_children:
          type: object
          description: 'For each unique value of this dimension, the co-occurring values of other dimensions.

            Example: { "common-dev": { "k8s-namespace": ["introspection", "ziox", "dev"] } }'
          additionalProperties:
            type: object
            additionalProperties:
              type: array
              items:
                type: string
            propertyNames:
              type: string
          propertyNames:
            type: string
        value_counts:
          type: object
          description: 'Number of services that carry each specific value of this dimension.

            Example: { "staging": 42, "prod-us-east": 18, "prod-us-west": 11 }

            Used for per-value coverage: value_counts[v] / service_count = fraction of

            env services in that specific group value.'
          additionalProperties:
            type: integer
            minimum: 0
          propertyNames:
            type: string
    CardinalityClass:
      type: string
      description: 'Cardinality classification for dimensions


        Used to determine which dimensions are stable (good for correlation)

        vs transient (should be filtered out or used only for additional filtering)'
      enum:
      - VeryLow
      - Low
      - Medium
      - High
      - VeryHigh
  securitySchemes:
    Authorization:
      type: apiKey
      in: header
      name: Authorization
    BasicAuth:
      type: http
      scheme: basic