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

# Get human annotation count and optimization eligibility

> Returns the optimization-eligibility snapshot for a metric.

`count` is the number of evaluations that have both an AI score and a
human-provided score (annotation). For FULL_PROMPT/PARTIAL_PROMPT metrics
this means the AI judged the evaluation and a human later reviewed it.
For HUMAN_EVALUATION metrics both fields hold the same human-provided
value (for analytics compatibility).

`disagreementCount` is the subset of `count` where the human verdict flips
the AI's verdict — both are binarized at 0.5 (any score >= 0.5 is class 1,
anything below is class 0) and the row counts only when the two classes
differ. These are the rows the optimizer learns from.

`minAnnotations` and `minDisagreements` are the api-enforced thresholds
(mirrored from the metrics-generator hard thresholds). Optimize is rejected
early unless `count >= minAnnotations` AND `disagreementCount >= minDisagreements`.




## OpenAPI

````yaml https://api.galtea.ai/openapi.json get /metrics/{id}/human-annotation-count
openapi: 3.0.0
info:
  version: 1.0.0
  title: Product Management Service API
  description: API documentation for Product Management Service
  contact:
    name: Galtea AI
servers:
  - url: https://api.galtea.ai
security:
  - bearerAuth: []
tags: []
externalDocs:
  description: Galtea Platform Documentation
  url: https://docs.galtea.ai
paths:
  /metrics/{id}/human-annotation-count:
    get:
      tags:
        - metrics
      summary: Get human annotation count and optimization eligibility
      description: >
        Returns the optimization-eligibility snapshot for a metric.


        `count` is the number of evaluations that have both an AI score and a

        human-provided score (annotation). For FULL_PROMPT/PARTIAL_PROMPT
        metrics

        this means the AI judged the evaluation and a human later reviewed it.

        For HUMAN_EVALUATION metrics both fields hold the same human-provided

        value (for analytics compatibility).


        `disagreementCount` is the subset of `count` where the human verdict
        flips

        the AI's verdict — both are binarized at 0.5 (any score >= 0.5 is class
        1,

        anything below is class 0) and the row counts only when the two classes

        differ. These are the rows the optimizer learns from.


        `minAnnotations` and `minDisagreements` are the api-enforced thresholds

        (mirrored from the metrics-generator hard thresholds). Optimize is
        rejected

        early unless `count >= minAnnotations` AND `disagreementCount >=
        minDisagreements`.
      operationId: getMetricHumanAnnotationCount
      parameters:
        - name: id
          in: path
          description: Metric ID
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Annotation/disagreement counts and thresholds retrieved successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - disagreementCount
                  - minAnnotations
                  - minDisagreements
                properties:
                  count:
                    type: integer
                    description: Evaluations with both an AI score and a human score.
                  disagreementCount:
                    type: integer
                    description: >-
                      Subset of `count` where the human verdict flips the AI's
                      (AI and human on opposite sides of 0.5).
                  minAnnotations:
                    type: integer
                    description: Minimum annotations required to optimize this metric.
                  minDisagreements:
                    type: integer
                    description: Minimum disagreements required to optimize this metric.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Metric not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          example: Error type
        message:
          type: string
          example: Error message description
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key authorization. Pass your API key in the Authorization header as
        a Bearer token. Both new (`gsk_*`) and legacy (`gsk-`) API keys are
        accepted, e.g. `Authorization: Bearer gsk_...` or `Authorization: Bearer
        gsk-...`.

````