Skip to main content
The ingest endpoint accepts a batch of log events as NDJSON and ingests them into the index attached to your ingest API key. Your log shippers authenticate with a per-index ingest API key, so you manage access centrally and each key writes only to its own index. If you want the full setup flow, see Send logs.

Endpoint

Authentication

You must include a valid ingest API key in every request. Create ingest keys in the Rootprint web UI at Settings → API keys. Each key is scoped to exactly one index; Rootprint uses that index as the ingestion target.

Request body

Set Content-Type: application/x-ndjson (or application/json). The body must contain one JSON object per line. Each line represents a single log event. The body cannot be empty. Gzip-compressed bodies are supported: send Content-Encoding: gzip and Rootprint forwards it to Quickwit unchanged.
NDJSON (Newline Delimited JSON) means each log entry is a complete JSON object on its own line, with a newline character (\n) between entries. There is no wrapping array.

Example request

Rootprint targets the index configured on the ingest API key. Check the key in Settings → API keys if you need to confirm where a shipper writes.

Response

On success, Rootprint returns a 200 response. Authentication errors (401, 403) are generated by Rootprint. Success responses and 4xx indexing errors (including 400 for an empty or unparseable body) come from the search engine.
number
The number of log events accepted for indexing in this request.
Example success response:
num_docs_for_processing is the count of documents accepted for indexing, not the count successfully indexed. If individual documents fail validation against the index schema, the search engine logs the failure on the server but the API response stays the same. Inspect the search engine’s stdout (or your log shipper) when you suspect documents are being silently dropped.
The OTLP endpoint behaves differently: POST /v1/logs reports per-record rejections through partial_success. See OTLP reference.

Error responses

App-level error responses include a JSON body with an error object: