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

# List conversation metrics

> List all metrics computed for a specific conversation.




## OpenAPI

````yaml /api-reference/v1/conversations-v1.yaml get /conversations/{conversation_id}/metrics
openapi: 3.0.3
info:
  title: Coval Conversations API
  version: 1.0.0
  description: |

    Submit and manage conversation evaluations.
  contact:
    name: Coval API Support
    email: support@coval.dev
    url: https://docs.coval.ai
  license:
    name: Proprietary
    url: https://coval.dev/terms
servers:
  - url: https://api.coval.dev/v1
    description: Production API
security:
  - ApiKeyAuth: []
tags:
  - name: Conversations
    description: Submit and manage real-world conversation monitoring evaluations
  - name: Audio
    description: Upload audio for evaluation and access conversation audio files
paths:
  /conversations/{conversation_id}/metrics:
    get:
      tags:
        - Conversations
      summary: List conversation metrics
      description: |
        List all metrics computed for a specific conversation.
      operationId: listConversationMetrics
      parameters:
        - name: conversation_id
          in: path
          description: Unique conversation identifier
          required: true
          schema:
            type: string
            minLength: 22
            maxLength: 26
          example: gk3jK9mPq2xRt5vW8yZaBc
        - name: filter
          in: query
          description: >
            Filter expression syntax.


            Values may be unquoted or double-quoted. Values containing spaces
            must be quoted.


            **Supported fields:**

            - `metric_name` (string): Filter by metric name (e.g.,
            `metric_name=latency`)

            - `status` (string): Filter by status (e.g., `status=COMPLETED`)

            - `output_type` (string): Filter by type (e.g., `output_type=float`)


            **Examples:**

            - `filter=status=COMPLETED`

            - `filter=metric_name=latency AND status=COMPLETED`

            - `filter=output_type=float`
          required: false
          schema:
            type: string
          example: status=COMPLETED
        - name: page_size
          in: query
          description: Maximum number of metrics to return (1-1000)
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 50
          example: 50
        - name: page_token
          in: query
          description: Pagination token from previous response (for fetching next page)
          required: false
          schema:
            type: string
          example: eyJvZmZzZXQiOiA1MH0=
        - name: order_by
          in: query
          description: |
            Field to order results by.

            **Supported fields:**
            - `metric_name` (default): Sort by metric name alphabetically
            - `create_time`: Sort by creation time
            - `start_time`: Sort by computation start time
            - `end_time`: Sort by computation end time
            - `value`: Sort by metric value (float types only)

            **Prefix with `-` for descending order** (e.g., `-create_time`)
          required: false
          schema:
            type: string
            default: metric_name
          example: metric_name
      responses:
        '200':
          description: List of metrics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListConversationMetricsResponse'
              examples:
                success:
                  summary: List of conversation metrics
                  value:
                    metrics:
                      - metric_output_id: 01JCQR8Z9PQSTNVWXY12345678
                        metric_id: 29BlkepvvX19ebbLDB0y6Q
                        value: 2.35
                        status: COMPLETED
                      - metric_output_id: 01JCQR9A1BRSUWVXYZ12345678
                        metric_id: mymKvEg6ZA65srXbTX5wSM
                        value: positive
                        status: COMPLETED
                      - metric_output_id: 01JCQR9B2CRTUVWXYZ12345678
                        metric_id: fstokU4ev5UmT8sUBexiwV
                        value: resolved
                        status: COMPLETED
        '400':
          $ref: '#/components/responses/InvalidArgument'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    ListConversationMetricsResponse:
      type: object
      required:
        - metrics
      properties:
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/SimpleMetricOutput'
          description: List of simplified metric outputs
        next_page_token:
          type: string
          nullable: true
          description: Pagination token for next page (null if no more results)
          example: eyJvZmZzZXQiOiAxMDB9
    SimpleMetricOutput:
      type: object
      required:
        - metric_output_id
        - metric_id
        - status
      properties:
        metric_output_id:
          type: string
          description: Unique metric output identifier (26-char ULID)
          minLength: 26
          maxLength: 26
          example: 01JCQR8Z9PQSTNVWXY12345678
        metric_id:
          type: string
          description: Metric definition identifier (22-char ID)
          minLength: 22
          maxLength: 26
          example: 29BlkepvvX19ebbLDB0y6Q
        metric_version_ulid:
          type: string
          nullable: true
          minLength: 26
          maxLength: 26
          description: >-
            ULID of the metric version this output was scored against (null for
            outputs produced before metric versioning landed)
          example: 01JCQR8Z9PQSTNVWXY12345678
        value:
          description: >
            Metric value (can be float, string, or list of strings depending on
            metric type, or null if failed)
          anyOf:
            - type: number
            - type: string
            - type: array
              items:
                type: string
          example: 2.35
        status:
          type: string
          enum:
            - IN QUEUE
            - IN PROGRESS
            - COMPLETED
            - FAILED
          description: Status of metric computation
          example: COMPLETED
        explanation:
          type: string
          nullable: true
          description: >-
            The LLM judge's reasoning for this metric output, as a flat string.
            Null for metrics that produce no explanation (non-judge metrics) or
            when the output is not yet computed. This is a convenience surfacing
            of the reasoning that otherwise lives nested under
            result.llm.answer_explanation (or result.explanation); it is
            populated in both the list and single-output responses so callers do
            not have to request the full result object to read it.
          example: >-
            The agent never confirmed the caller's address before ending the
            call.
        result:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Structured metric result. Its keys depend on the metric type — for
            LLM-judge metrics the judge's reasoning is at
            result.llm.answer_explanation and the evaluation prompt at
            result.llm.prompt. Null for metrics that produce no structured
            result.
          example:
            llm:
              answer_explanation: >-
                The agent never confirmed the caller's address before ending the
                call.
              prompt: Did the agent confirm the caller's address?
      description: |
        Simplified metric output for conversations API.
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Error code
              enum:
                - INVALID_ARGUMENT
                - UNAUTHENTICATED
                - NOT_FOUND
                - ALREADY_EXISTS
                - PAYLOAD_TOO_LARGE
                - INTERNAL_ERROR
              example: INVALID_ARGUMENT
            message:
              type: string
              description: Human-readable error message
              example: Missing required input data
            details:
              type: array
              items:
                $ref: '#/components/schemas/ErrorDetail'
              description: Additional error details
              default: []
    ErrorDetail:
      type: object
      properties:
        field:
          type: string
          description: Field that caused the error
          example: transcript
        description:
          type: string
          description: Detailed description of the error
          example: At least one of transcript, audio, or audio_url must be provided
  responses:
    InvalidArgument:
      description: Invalid request arguments
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingInput:
              summary: Missing required input
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: Missing required input data
                  details:
                    - field: transcript
                      description: At least one of transcript or audio_url must be provided
            invalidFilter:
              summary: Invalid filter expression
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: Invalid filter expression
                  details:
                    - field: filter
                      description: >-
                        Unknown field 'invalid_field'. Valid fields: status,
                        create_time, occurred_at, external_conversation_id
            invalidPageSize:
              summary: Invalid page_size
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: Invalid page_size
                  details:
                    - field: page_size
                      description: page_size must be between 1 and 250
            audioFormatInvalid:
              summary: Unsupported audio format
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: >-
                    Unsupported audio format: MP4. Only WAV and MP3 files are
                    supported.
                  details:
                    - field: audio_url
                      description: >-
                        Audio format detected as MP4 via magic byte analysis.
                        Convert to WAV or MP3.
            audioTooShort:
              summary: Audio duration too short
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: 'Audio too short: 3.0 seconds. Minimum duration is 5 seconds.'
                  details:
                    - field: audio_url
                      description: >-
                        Audio file duration is below the 5 second minimum
                        requirement
            audioTooLong:
              summary: Audio duration too long
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: >-
                    Audio too long: 75.0 minutes. Maximum duration is 60
                    minutes.
                  details:
                    - field: audio_url
                      description: Audio file duration exceeds the 1 hour maximum limit
            audioTooLarge:
              summary: Audio file size too large
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: 'Audio file too large: 250.0 MB. Maximum size is 200 MB.'
                  details:
                    - field: audio_url
                      description: Audio file size exceeds 200 MB limit
            audioEmpty:
              summary: Empty audio file
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: Audio file is empty.
                  details:
                    - field: audio_url
                      description: Audio file contains no data
            audioCorrupt:
              summary: Corrupt or invalid audio file
              value:
                error:
                  code: INVALID_ARGUMENT
                  message: >-
                    Invalid or corrupt audio file. Unable to read audio
                    metadata.
                  details:
                    - field: audio_url
                      description: Audio file headers could not be read or are corrupted
    Unauthenticated:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: UNAUTHENTICATED
              message: Invalid or missing API key
              details: []
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            conversationNotFound:
              summary: Conversation not found
              value:
                error:
                  code: NOT_FOUND
                  message: Conversation not found
                  details: []
            simulationAccess:
              summary: Attempted to access simulation
              value:
                error:
                  code: NOT_FOUND
                  message: Conversation not found
                  details: []
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              code: INTERNAL_ERROR
              message: An internal error occurred while processing the request
              details: []
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: |
        API key for authentication.

````