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

# Health

> Basic health check for the indexer service.



## OpenAPI

````yaml GET /health
openapi: 3.0.3
info:
  title: Umbra Indexer Read Service
  description: >
    Read-only REST API for querying Umbra mixer tree state, UTXO records,

    and Merkle inclusion proofs.


    ## Response Encoding


    **All endpoints** support `application/x-protobuf` encoding. The encoding

    strategy differs by endpoint category:


    - **Always Protobuf** (no content negotiation): stats, tree metadata, Merkle
    proofs,
      and all UTXO data endpoints. These endpoints always respond with
      `Content-Type: application/x-protobuf` regardless of the `Accept` header.
    - **Content negotiation** (health endpoints only): respond with JSON by
    default,
      or Protobuf when `Accept: application/x-protobuf` is set. Send
      `Accept: application/x-protobuf` for consistent protobuf-only clients.

    ## UTXO Response Layouts


    The three UTXO data endpoints (`GET /v1/utxos`, `GET
    /v1/utxos/{absolute_index}`,

    `GET /v1/trees/{tree_index}/utxos`) support two Protobuf response layouts

    controlled by the `X-Response-Layout` request header:


    - **Row-oriented** (default) -- `UtxoResponse` message: each UTXO is a
      self-contained `UtxoDataItem` sub-message. Easier to iterate record-by-record.
    - **Columnar** (`X-Response-Layout: columnar`) -- `UtxoColumnarResponse`
    message:
      each field across all UTXOs is packed into a parallel array inside a single
      `UtxoColumns` sub-message. Compresses significantly better over the wire and is
      preferred by vectorized consumers (e.g. data pipelines, analytics).

    ## Rate Limiting


    All endpoints are subject to rate limiting. Exceeded limits return `429 Too
    Many Requests`.


    ## Compression


    All responses are compressed. Send `Accept-Encoding: gzip, br`.


    ## Absolute Index


    The **absolute index** is a globally monotonic cursor across all Merkle
    trees:

    ```

    absolute_index = tree_index * MAX_LEAVES_PER_TREE + insertion_index

    ```

    where `MAX_LEAVES_PER_TREE = 1,048,576` (2^20).
  version: 0.1.0
  contact:
    name: Umbra Protocol
servers:
  - url: https://utxo-indexer.api.umbraprivacy.com
    description: Mainnet
  - url: https://utxo-indexer.api-devnet.umbraprivacy.com
    description: Devnet
security: []
tags:
  - name: health
    description: |
      Health and readiness probes for Kubernetes or load-balancer checks.
      Support both JSON and Protobuf via `Accept` header negotiation.
  - name: stats
    description: Aggregate statistics for the UTXO index. Always Protobuf.
  - name: trees
    description: Per-tree Merkle metadata and Merkle inclusion proofs. Always Protobuf.
  - name: utxos
    description: >
      UTXO data queries with absolute-index-based pagination. Always Protobuf.

      Supports row-oriented and columnar response layouts via
      `X-Response-Layout`.
paths:
  /health:
    get:
      tags:
        - health
      summary: Basic health check
      description: >
        Returns `{"status":"ok"}` (or its Protobuf equivalent) whenever the HTTP

        server is accepting connections. Performs no I/O and never queries
        downstream

        dependencies.


        **Content negotiation**: Send `Accept: application/x-protobuf` to
        receive a

        Protobuf-encoded `BasicHealthResponse`; omit or send any other value for
        JSON.
      operationId: basicHealth
      parameters:
        - name: Accept
          in: header
          required: false
          description: >
            Response format selector. Set to `application/x-protobuf` for
            Protobuf

            encoding; any other value (or absent) returns JSON.
          schema:
            type: string
            enum:
              - application/json
              - application/x-protobuf
      responses:
        '200':
          description: Service is accepting connections.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicHealthResponse'
              example:
                status: ok
            application/x-protobuf:
              schema:
                $ref: '#/components/schemas/BasicHealthResponse'
components:
  schemas:
    BasicHealthResponse:
      type: object
      description: Minimal health indicator returned by `GET /health`.
      required:
        - status
      properties:
        status:
          type: string
          description: Always `"ok"` when the HTTP server is accepting connections.
          example: ok

````