Quickwit Ingest API

Add documents to indexes via NDJSON format

Operations 1

POST /indexes/{index_id}/ingest Ingest documents #

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/quickwit-ingest-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

quickwit-ingest-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Quickwit REST Cluster Ingest API
  description: 'The Quickwit REST API provides endpoints for indexing NDJSON documents, executing full-text and aggregation search queries, managing indexes and data sources, streaming field values, deleting documents by query, and monitoring cluster health. Quickwit is a cloud-native search engine for log management and full-text search at petabyte scale.

    '
  version: 0.8.2
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  contact:
    name: Quickwit, Inc.
    email: hello@quickwit.io
  x-api-evangelist-rating:
    designScore: 70
    reliability: 80
    documentation: 75
servers:
- url: http://localhost:7280/api/v1
  description: Local Quickwit node
tags:
- name: Ingest
  description: Add documents to indexes via NDJSON format
paths:
  /indexes/{index_id}/ingest:
    post:
      operationId: ingestDocuments
      summary: Ingest documents
      description: 'Ingests NDJSON documents into an index. Each line in the request body must be a valid JSON object. The commit parameter controls when the documents become searchable.

        '
      tags:
      - Ingest
      parameters:
      - $ref: '#/components/parameters/indexId'
      - name: commit
        in: query
        description: 'Controls when documents become searchable. ''auto'' lets Quickwit decide, ''wait_for'' waits for next commit, ''force'' triggers an immediate commit.

          '
        required: false
        schema:
          type: string
          enum:
          - auto
          - wait_for
          - force
          default: auto
      - name: detailed_response
        in: query
        description: Include parse_failures in the response
        required: false
        schema:
          type: boolean
          default: false
      requestBody:
        required: true
        content:
          application/x-ndjson:
            schema:
              type: string
              description: NDJSON formatted documents, one per line
            example: '{"message": "log line 1", "timestamp": 1700000000}

              {"message": "log line 2", "timestamp": 1700000001}

              '
      responses:
        '200':
          description: Documents ingested successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngestResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  parameters:
    indexId:
      name: index_id
      in: path
      description: The index identifier
      required: true
      schema:
        type: string
      example: my-index
  schemas:
    ApiError:
      type: object
      required:
      - message
      properties:
        message:
          type: string
          description: Human-readable error message
      example:
        message: Index 'my-index' not found
    IngestResponse:
      type: object
      properties:
        num_docs_for_processing:
          type: integer
          description: Number of documents submitted for processing
        num_ingested_docs:
          type: integer
          description: Number of documents successfully ingested
        num_rejected_docs:
          type: integer
          description: Number of documents rejected due to parse errors
        parse_failures:
          type: array
          items:
            type: object
            properties:
              reason:
                type: string
              document:
                type: string
          description: Details of parse failures (only if detailed_response=true)
  responses:
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    BadRequest:
      description: Bad request - invalid parameters or body
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'