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

# Get conversation metrics

> Returns the quality and cost figures of a conversation: LLM token usage, the number of tool calls and turns, the median end-to-end reply latency, and whether the call was judged resolved. Every field is null until the figures have been recorded (shortly after the call ends), and stays null for calls made before metrics were captured.



## OpenAPI

````yaml /api-reference/voice-openapi.json get /v1/projects/{projectId}/conversations/{id}/metrics
openapi: 3.0.3
info:
  title: Clarity Voice API
  version: '1.0'
  description: Voice agents, outbound calls, conversations, campaigns, and evals.
servers:
  - url: https://voice-api.onclarity.com
security:
  - organizationApiKey: []
tags:
  - name: Projects
    description: >-
      The projects your organization owns. Every other resource lives in a
      project.
  - name: Agents
    description: Create, configure, version and publish voice agents.
  - name: Outbound calls
    description: Have a published agent phone a number now.
  - name: Conversations
    description: >-
      One record per call session, with its calls, recordings, transcripts and
      artifacts.
  - name: Calls
    description: The calls of a project, with their status, direction, timing and outcome.
  - name: Campaigns
    description: Outbound calling campaigns that phone a list of numbers on a schedule.
  - name: Eval suites
    description: >-
      Reusable sets of eval scenarios and test cases to measure an agent
      against.
  - name: Eval judges
    description: The LLM judges that score eval calls against your test cases.
  - name: Eval scenarios
    description: The simulated-caller scenarios of your eval suites.
  - name: Eval test cases
    description: The checks a judge applies to each eval call.
  - name: Eval submissions
    description: Run an eval suite against an agent and read the verdicts.
paths:
  /v1/projects/{projectId}/conversations/{id}/metrics:
    parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      - $ref: '#/components/parameters/ConversationId'
    get:
      tags:
        - Conversations
      summary: Get conversation metrics
      description: >-
        Returns the quality and cost figures of a conversation: LLM token usage,
        the number of tool calls and turns, the median end-to-end reply latency,
        and whether the call was judged resolved. Every field is null until the
        figures have been recorded (shortly after the call ends), and stays null
        for calls made before metrics were captured.
      operationId: getConversationMetrics
      responses:
        '200':
          description: The conversation's metrics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationMetrics'
              example:
                total_tokens: 18452
                prompt_tokens: 17210
                completion_tokens: 1242
                cached_tokens: 12800
                tool_call_count: 3
                e2e_median_latency_ms: 1180
                num_turns: 9
                resolution_state: resolved
                resolution_reason: The caller's appointment was moved to Thursday at 10:00.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: >-
            The project or conversation does not exist, or your key cannot reach
            it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Conversation not found
components:
  parameters:
    ProjectIdPath:
      name: projectId
      in: path
      required: true
      schema:
        type: string
      description: Project id
    ConversationId:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: Conversation id
  schemas:
    ConversationMetrics:
      type: object
      description: Quality and cost figures of one conversation. Null means not recorded.
      properties:
        total_tokens:
          type: integer
          nullable: true
          description: LLM tokens used, input plus output.
        prompt_tokens:
          type: integer
          nullable: true
          description: LLM input tokens.
        completion_tokens:
          type: integer
          nullable: true
          description: LLM output tokens.
        cached_tokens:
          type: integer
          nullable: true
          description: Input tokens served from the provider's prompt cache.
        tool_call_count:
          type: integer
          nullable: true
          description: Number of tool calls the agent made.
        e2e_median_latency_ms:
          type: integer
          nullable: true
          description: >-
            Median time, in milliseconds, from the end of the caller's speech to
            the start of the agent's reply. Replies slower than 10 seconds are
            left out as broken.
        num_turns:
          type: integer
          nullable: true
          description: Number of conversation turns.
        resolution_state:
          type: string
          nullable: true
          description: >-
            The resolution verdict: `resolved`, `unresolved`, `pending` or
            `not_applicable`.
        resolution_reason:
          type: string
          nullable: true
          description: Why the call was judged that way.
    Error:
      type: object
      required:
        - error
      additionalProperties: true
      properties:
        error:
          type: string
          description: Error message
        code:
          type: string
          description: >-
            A stable machine-readable reason, present on the refusals a client
            may branch on. Among them: `PUBLISH_CAPABILITY_REQUIRED` (403, the
            credential may not change what is live), `AGENT_NOT_PUBLISHED` (409,
            the agent has no published version yet),
            `AGENT_TYPE_NOT_DISPATCHABLE` (422, a Voice Assist agent named where
            an agent must place or take a call; the body carries `agent_type`
            and `agent_id`), `NOT_APPLICABLE_TO_AGENT_TYPE` (422, a voice-only
            setting written on a Voice Assist agent), `AGENT_TYPE_BOUNDARY`
            (409), `AGENT_TYPE_NOT_SUPPORTED` (400), `VOICE_ASSISTANT_REQUIRED`
            (403, the organization is not licensed for Voice Assist),
            `ORGANIZATION_UNAVAILABLE` (503) and `REGION_PROFILE_CONFLICT`
            (503).
  responses:
    Unauthorized:
      description: No credential was sent, or the API key is invalid or revoked.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Invalid or revoked token
    Forbidden:
      description: >-
        The credential carries no access to this project, or the operation needs
        administrative rights
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    organizationApiKey:
      type: http
      scheme: bearer
      description: >-
        Your organization API key (it starts with `anek_org_`). The same key
        works on the Voice API and the Support API. See
        [Authentication](/authentication).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.