> ## 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.

# List metrics annotated with compatibility for a session

> Returns evaluable metrics annotated with whether they can be satisfied by the session's product metadata and test-case availability, plus a `relevance` ranking derived from the session's test case's test (`linked`/`matching`/`none`). A session evaluation scores output that is already stored, so the version needs no conversation target (endpoint, phone, or WebRTC connection) and compatibility never depends on one. Production (monitoring) sessions have no test case, so every metric is `none`, and a metric is incompatible when it needs a test-case param that monitoring cannot supply (expected_output, context, expected_tools, user_persona, goal, scenario, stopping_criterias). A metric needing only `input` stays compatible while some turn of the session yields text of its own; a session whose turns carry only a file, or audio with no transcript, makes `input` unreadable and that metric incompatible. Span-dependent and runtime-only params are out of scope and treated as always satisfied.



## OpenAPI

````yaml https://api.galtea.ai/openapi.json get /sessions/{id}/compatible-metrics
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:
  /sessions/{id}/compatible-metrics:
    get:
      tags:
        - sessions
      summary: List metrics annotated with compatibility for a session
      description: >-
        Returns evaluable metrics annotated with whether they can be satisfied
        by the session's product metadata and test-case availability, plus a
        `relevance` ranking derived from the session's test case's test
        (`linked`/`matching`/`none`). A session evaluation scores output that is
        already stored, so the version needs no conversation target (endpoint,
        phone, or WebRTC connection) and compatibility never depends on one.
        Production (monitoring) sessions have no test case, so every metric is
        `none`, and a metric is incompatible when it needs a test-case param
        that monitoring cannot supply (expected_output, context, expected_tools,
        user_persona, goal, scenario, stopping_criterias). A metric needing only
        `input` stays compatible while some turn of the session yields text of
        its own; a session whose turns carry only a file, or audio with no
        transcript, makes `input` unreadable and that metric incompatible.
        Span-dependent and runtime-only params are out of scope and treated as
        always satisfied.
      operationId: listCompatibleMetricsBySession
      parameters:
        - name: id
          in: path
          description: Session ID to evaluate compatibility against
          required: true
          schema:
            type: string
        - name: limit
          in: query
          description: Maximum number of metrics to return (default 100)
          required: false
          schema:
            type: integer
        - name: inferenceResultId
          in: query
          description: >-
            The turn a run would judge. Input readability is then decided from
            that turn alone, matching what an evaluation targeting it is sent.
            Omit to answer for every turn of the session.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of metrics with compatibility annotations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CompatibleMetric'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Session not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    CompatibleMetric:
      type: object
      description: >-
        Metric annotated with compatibility against the evaluation context:
        product metadata, test-case availability, and the conversation endpoint
        connection output mapping when the evaluation has to produce new output.
        Span-dependent and runtime-only params are out of scope and treated as
        always satisfied.
      properties:
        id:
          type: string
          example: metric_123
        name:
          type: string
          example: Accuracy
        source:
          type: string
          enum:
            - SELF_HOSTED
            - FULL_PROMPT
            - PARTIAL_PROMPT
            - HUMAN_EVALUATION
            - GEVAL
            - DEEPEVAL
            - DETERMINISTIC
          nullable: true
          example: PARTIAL_PROMPT
          description: >-
            Evaluation method for the metric. `FULL_PROMPT` is deprecated for
            creation — `POST /metrics` rejects it with a 400. Use
            `PARTIAL_PROMPT` for new AI Evaluation metrics. The value remains in
            the enum because existing FULL_PROMPT metrics are still returned by
            reads and filters.
        description:
          type: string
          nullable: true
          example: Measures the accuracy of responses
        isCompatible:
          type: boolean
          description: >-
            Whether the metric can be satisfied by the resolved evaluation
            context. Always checked against the product metadata and test-case
            availability; the conversation endpoint connection output mapping is
            only checked when the evaluation has to produce new output. For a
            session, a metric reading `input` is also incompatible when no turn
            yields text without a file beside it, because the judge is sent the
            turns and can read neither a document nor an untranscribed audio
            part. Pass `inferenceResultId` to answer for the one turn a run
            would judge. A metric reading `conversation_turns` stays compatible:
            the turns are scored as logged.
        incompatibilityReason:
          type: string
          nullable: true
          description: >-
            Human-readable explanation of why the metric is incompatible.
            Non-null iff `isCompatible === false`.
          example: 'Missing required parameters: product_capabilities, retrieval_context'
        relevance:
          type: string
          enum:
            - linked
            - matching
            - none
          description: >-
            How relevant the metric is to the tests the evaluation runs against.
            `linked`: linked to a specification of one of those tests.
            `matching`: linked to a same-product specification whose testType
            matches one of those tests. `none`: neither, or no test context was
            provided.
          example: linked
      required:
        - id
        - name
        - isCompatible
        - relevance
    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-...`.

````