> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rootprint.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Ingest OTLP traces (protobuf)

> OTLP/HTTP traces exporter endpoint. Accepts only application/x-protobuf (ExportTraceServiceRequest). Spans go to the single span store named by TRACE_INDEX_ID, not to the ingest key’s index. Quickwit answers with JSON, so the response is re-encoded as protobuf, preserving the partial_success count of rejected records. Errors use the google.rpc.Status encoding: 415 is JSON, everything else is binary protobuf.



## OpenAPI

````yaml /api/openapi.json post /v1/traces
openapi: 3.1.0
info:
  description: HTTP API for the Rootprint log management platform.
  title: Rootprint API
  version: 0.4.0
servers:
  - description: Rootprint API
    url: https://example.com
security:
  - cookieAuth: []
paths:
  /v1/traces:
    post:
      tags:
        - Trace ingest
      summary: Ingest OTLP traces (protobuf)
      description: >-
        OTLP/HTTP traces exporter endpoint. Accepts only application/x-protobuf
        (ExportTraceServiceRequest). Spans go to the single span store named by
        TRACE_INDEX_ID, not to the ingest key’s index. Quickwit answers with
        JSON, so the response is re-encoded as protobuf, preserving the
        partial_success count of rejected records. Errors use the
        google.rpc.Status encoding: 415 is JSON, everything else is binary
        protobuf.
      operationId: postV1Traces
      requestBody:
        content:
          application/x-protobuf:
            schema:
              description: >-
                Serialised
                opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest
              format: binary
              type: string
        required: true
      responses:
        '200':
          content:
            application/x-protobuf:
              schema:
                description: >-
                  Serialised
                  opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse
                format: binary
                type: string
          description: >-
            Accepted. ExportTraceServiceResponse — empty when every record was
            accepted, or carrying partial_success when Quickwit rejected some.
        '400':
          content:
            application/x-protobuf:
              schema:
                description: google.rpc.Status (protobuf)
                format: binary
                type: string
          description: Upstream rejected the request
        '401':
          content:
            application/x-protobuf:
              schema:
                description: google.rpc.Status (protobuf)
                format: binary
                type: string
          description: Missing ingest bearer token
        '403':
          content:
            application/x-protobuf:
              schema:
                description: google.rpc.Status (protobuf)
                format: binary
                type: string
          description: Invalid ingest bearer token
        '404':
          content:
            application/x-protobuf:
              schema:
                description: google.rpc.Status (protobuf)
                format: binary
                type: string
          description: Route not found
        '413':
          content:
            application/x-protobuf:
              schema:
                description: google.rpc.Status (protobuf)
                format: binary
                type: string
          description: Payload too large
        '415':
          content:
            application/json:
              schema:
                description: google.rpc.Status
                properties:
                  code:
                    description: gRPC status code
                    type: integer
                  message:
                    description: Human-readable error message
                    type: string
                type: object
          description: >-
            Unsupported content-type (only application/x-protobuf accepted) —
            google.rpc.Status (JSON)
        '429':
          content:
            application/x-protobuf:
              schema:
                description: google.rpc.Status (protobuf)
                format: binary
                type: string
          description: Upstream rate limit exceeded — honour retry-after
        '503':
          content:
            application/x-protobuf:
              schema:
                description: google.rpc.Status (protobuf)
                format: binary
                type: string
          description: Upstream unavailable. Every upstream 5xx is reported as 503
      security:
        - ingestBearer: []
components:
  securitySchemes:
    cookieAuth:
      in: cookie
      name: better-auth.session_token
      type: apiKey
    ingestBearer:
      description: Ingest API key
      scheme: bearer
      type: http

````