OpenObserve Logs API

Logs data ingestion operations

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-logs-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-logs-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: openobserve Actions Logs 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: Logs
  description: Logs data ingestion operations
paths:
  /api/{org_id}/_bulk:
    post:
      tags:
      - Logs
      summary: Bulk ingest logs (Elasticsearch compatible)
      description: Ingests multiple log records in bulk using Elasticsearch-compatible NDJSON format. Each line contains either an index/create action followed by the document data. This endpoint provides high-throughput ingestion for applications migrating from or integrating with Elasticsearch.
      operationId: LogsIngestionBulk
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      requestBody:
        description: Ingest data (ndjson)
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                took: 2
                errors: true
                items:
                - index:
                    _index: olympics
                    _id: 1
                    status: 200
                    error:
                      type: Too old data, only last 5 hours data can be ingested. Data discarded.
                      reason: Too old data, only last 5 hours data can be ingested. Data discarded.
                      index_uuid: '1'
                      shard: '1'
                      index: olympics
                    original_record:
                      athlete: CHASAPIS, Spiridon
                      city: BER
                      country: USA
                      discipline: Swimming
                      event: 100M Freestyle For Sailors
                      gender: Men
                      medal: Silver
                      onemore: 1
                      season: summer
                      sport: Aquatics
                      year: 1986
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        enabled: false
  /api/{org_id}/loki/api/v1/push:
    post:
      tags:
      - Logs
      summary: Ingest logs via Loki API
      description: Ingests log data using Grafana Loki-compatible API format. Supports both JSON and Protocol Buffers content types with optional compression (gzip for JSON, snappy for Protobuf). Stream names are extracted from the 'stream_name' label in stream metadata. Provides seamless migration path from Loki deployments to OpenObserve while maintaining API compatibility.
      operationId: LogsIngestionLoki
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      requestBody:
        description: Loki-compatible log push data in JSON format. Stream names are extracted from 'stream_name' label in the stream labels. Also supports Protobuf format (application/x-protobuf) with optional compression (gzip for JSON, snappy for Protobuf)
        content:
          application/json:
            schema:
              type: object
              description: 'Internal Loki JSON types for native Loki push API format

                Loki push request - matches native JSON format exactly'
              required:
              - streams
              properties:
                streams:
                  type: array
                  items:
                    $ref: '#/components/schemas/LokiStream'
                  description: Array of log streams, each containing labels and log entries
            example:
              streams:
              - stream:
                  stream_name: application_logs
                  service: api
                  environment: production
                values:
                - - '1609459200000000000'
                  - API request processed successfully
                - - '1609459201000000000'
                  - Database connection established
                  - trace_id: abc123
                    span_id: def456
        required: true
      responses:
        '204':
          description: Success - logs ingested successfully
        '400':
          description: 'Bad Request - Possible causes: empty stream data, invalid labels format (e.g., empty labels), invalid timestamp format (e.g., non-numeric timestamp), unsupported content type (only application/json and application/x-protobuf supported), unsupported content encoding (only gzip for JSON and snappy for Protobuf), protobuf decode errors, JSON parsing errors, or compression/decompression failures'
          content:
            text/plain:
              schema:
                type: string
        '500':
          description: Internal Server Error - Server error during log processing
          content:
            text/plain:
              schema:
                type: string
      security:
      - Authorization: []
      x-o2-mcp:
        enabled: false
  /api/{org_id}/{stream_name}/_json:
    post:
      tags:
      - Logs
      summary: Ingest logs via JSON array
      description: Ingests log data using a JSON array format where multiple log records are submitted as an array in a single request. This is ideal for batch processing scenarios where applications collect multiple log entries before sending them together for improved efficiency.
      operationId: LogsIngestionJson
      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
      requestBody:
        description: Ingest data (json array)
        content:
          application/json:
            schema:
              type: string
            example:
            - Year: 1896
              City: Athens
              Sport: Aquatics
              Discipline: Swimming
              Athlete: Alfred
              Country: HUN
            - Year: 1896
              City: Athens
              Sport: Aquatics
              Discipline: Swimming
              Athlete: HERSCHMANN
              Country: CHN
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                code: 200
                status:
                - name: olympics
                  successful: 3
                  failed: 0
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        description: Ingest logs via JSON array
        category: logs
  /api/{org_id}/{stream_name}/_multi:
    post:
      tags:
      - Logs
      summary: Ingest logs via multi-line JSON
      description: Ingests log data using multi-line JSON format where each line contains a separate JSON object representing a log record. This format is efficient for streaming applications and tools that generate logs in newline-delimited JSON format.
      operationId: LogsIngestionMulti
      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
      requestBody:
        description: Ingest data (multiple line json)
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
              example:
                code: 200
                status:
                - name: olympics
                  successful: 3
                  failed: 0
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        enabled: false
components:
  schemas:
    LokiStream:
      type: object
      description: Loki stream containing labels and log entries
      required:
      - stream
      - values
      properties:
        stream:
          type: object
          description: 'Stream labels as key-value pairs (e.g., {"service": "api", "stream_name": "logs"})'
          additionalProperties:
            type: string
          propertyNames:
            type: string
        values:
          type: array
          items:
            $ref: '#/components/schemas/LokiEntry'
          description: Array of log entries, each containing timestamp, message, and optional structured metadata
    LokiEntry:
      type: object
      description: Loki log entry containing timestamp, message, and optional metadata
      required:
      - timestamp
      - line
      properties:
        line:
          type: string
          description: Log message content
        structured_metadata:
          type:
          - object
          - 'null'
          description: Optional structured metadata as key-value pairs
          additionalProperties:
            type: string
          propertyNames:
            type: string
        timestamp:
          type: string
          description: Timestamp as nanosecond unix epoch string (e.g., "1609459200000000000")
  securitySchemes:
    Authorization:
      type: apiKey
      in: header
      name: Authorization
    BasicAuth:
      type: http
      scheme: basic