> ## 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 a call

> Returns one call with its numbers, channel, status, timestamps, hang-up reason and SIP code, answering-machine detection result and media metrics. `agent_id` is the agent that handled the call's conversation.



## OpenAPI

````yaml api-reference/voice-openapi.json GET /v1/projects/{projectId}/calls/{id}
openapi: 3.0.3
info:
  title: Clarity Voice API
  version: '1.0'
  description: >-
    Voice agents and their tools, outbound calls, conversations, campaigns,
    telephony, 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.
  - name: Phone numbers
    description: >-
      The phone numbers of a project, where their calls come from, and how
      agents call out from them.
  - name: Inbound SIP trunks
    description: Bring calls from your own SIP infrastructure to Clarity agents.
  - name: Outbound SIP trunks
    description: >-
      The SIP endpoints Clarity dials through for outbound calls from your
      numbers.
  - name: Tools
    description: The tools agents call during a conversation, and which agents use them.
paths:
  /v1/projects/{projectId}/calls/{id}:
    parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      - $ref: '#/components/parameters/CallId'
    get:
      tags:
        - Calls
      summary: Get a call
      description: >-
        Returns one call with its numbers, channel, status, timestamps, hang-up
        reason and SIP code, answering-machine detection result and media
        metrics. `agent_id` is the agent that handled the call's conversation.
      operationId: getCall
      responses:
        '200':
          description: The call.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Call'
              example:
                id: 1b6453892473a467d07372d45eb05abc
                project_id: 3c59dc04-8a4b-4f7e-9b1a-6c2a0e5d1f22
                platform_id: RM_kQ3vZx7pLm2T
                platform_name: livekit
                conversation_id: 8f14e45f-ceea-467f-a0e6-3f1c2b9d7a10
                participant_identity: sip_+966500000000
                originator:
                  type: pstn
                  phone_number: '+966110000000'
                receiver:
                  type: pstn
                  phone_number: '+966500000000'
                did: '+966110000000'
                remote_number: '+966500000000'
                status: completed
                reason: null
                direction: outgoing
                type: pstn
                duration: 95
                context: null
                created_at: '2026-10-20T09:15:00.000Z'
                updated_at: '2026-10-20T09:16:38.000Z'
                ringing_at: '2026-10-20T09:15:00.500Z'
                answered_at: '2026-10-20T09:15:02.000Z'
                ended_at: '2026-10-20T09:16:37.000Z'
                hangup_reason: agent_hangup
                hangup_sip_code: null
                scheduled_for: null
                amd_result: null
                tags: null
                room_name: call-8f14e45f
                region_profile: null
                agent_id: 6f4922f4-5568-461a-8f1d-9c3b2a1e7d55
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: The call, or the project, does not exist or is not accessible.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Call not found
components:
  parameters:
    ProjectIdPath:
      name: projectId
      in: path
      required: true
      schema:
        type: string
      description: Project id
    CallId:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: Call id
  schemas:
    Call:
      type: object
      required:
        - id
        - project_id
      properties:
        id:
          type: string
        project_id:
          type: string
        platform_id:
          type: string
          nullable: true
        platform_name:
          type: string
          nullable: true
        conversation_id:
          type: string
          nullable: true
          description: >-
            The conversation this call belongs to; null for a scheduled call
            that has not started.
        participant_identity:
          type: string
          nullable: true
          description: The call's participant identity in the media room.
        originator:
          anyOf:
            - $ref: '#/components/schemas/CallParty'
            - additionalProperties: true
              type: object
          nullable: true
        receiver:
          anyOf:
            - $ref: '#/components/schemas/CallParty'
            - additionalProperties: true
              type: object
          nullable: true
        did:
          type: string
          nullable: true
          description: Our side phone (DID) when PSTN
        remote_number:
          type: string
          nullable: true
          description: Far end phone when PSTN
        status:
          type: string
          enum:
            - scheduled
            - accepted
            - ringing
            - ongoing
            - completed
            - busy
            - no-answer
            - failed
            - cancelled
          nullable: true
        reason:
          additionalProperties: true
          nullable: true
          type: object
        direction:
          type: string
          enum:
            - incoming
            - outgoing
          nullable: true
        type:
          type: string
          enum:
            - pstn
            - webrtc
            - sip
            - whatsapp
          nullable: true
          description: Call type / channel
        duration:
          type: integer
          format: int64
          nullable: true
        context:
          additionalProperties: true
          nullable: true
          type: object
        created_at:
          type: string
          format: date-time
          nullable: true
        updated_at:
          type: string
          format: date-time
          nullable: true
        ringing_at:
          type: string
          format: date-time
          nullable: true
        answered_at:
          type: string
          format: date-time
          nullable: true
        ended_at:
          type: string
          format: date-time
          nullable: true
        signalling_metrics:
          additionalProperties: true
          nullable: true
          type: object
        media_metrics:
          additionalProperties: true
          nullable: true
          type: object
        media_insights:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Caller-side network statistics (round-trip time, jitter, loss)
            reported by the web widget. Null for phone calls.
        hangup_reason:
          type: string
          nullable: true
        hangup_sip_code:
          type: string
          nullable: true
        scheduled_for:
          type: string
          format: date-time
          nullable: true
        amd_result:
          additionalProperties: true
          nullable: true
          type: object
        tags:
          type: array
          nullable: true
          items:
            type: string
        room_name:
          type: string
          nullable: true
          description: >-
            Name of the media room backing this call. Distinct from
            `platform_id` (the room's id).
        agent_id:
          type: string
          nullable: true
          description: >-
            The agent that handled the call's conversation. On `GET
            .../calls?status=ongoing`, a call an AI agent transferred to agents
            names its Voice Assist agent (see `transfer`).
        region_profile:
          type: string
          nullable: true
          description: >-
            The regional deployment profile that served the call; null for the
            default.
        eval_submission_id:
          type: string
          nullable: true
          description: The evaluation run this call belongs to, for evaluation calls.
        eval_scenario_id:
          type: string
          nullable: true
          description: The evaluation scenario this call played, for evaluation calls.
        eval_run_index:
          type: integer
          nullable: true
        eval_temp_sheet_ids:
          additionalProperties: true
          nullable: true
          type: object
        warnings:
          type: array
          description: >-
            In-call warnings raised on the call's conversation (list endpoint
            only).
          items:
            $ref: '#/components/schemas/CallWarningSummary'
        live_monitor:
          type: object
          nullable: true
          description: Only present on `GET .../calls?status=ongoing`.
          properties:
            can_monitor:
              type: boolean
              description: >-
                Whether the call currently has a resolvable LiveKit room to join
                (`room_name` is set).
            can_barge_in:
              type: boolean
              description: >-
                Barge-in is available for this call's agent type (false for a
                Voice Assist call).
            can_steer:
              type: boolean
              description: >-
                Steering is available for this call's agent type (false for a
                Voice Assist call).
            can_hang_up:
              type: boolean
              description: >-
                Hanging up is available for this call's agent type (false for a
                Voice Assist call, which the operator ends).
            active_barge_in:
              type: boolean
              description: >-
                Whether another admin already holds an active barge-in on this
                call.
        assist:
          nullable: true
          description: >-
            Only present on `GET .../calls?status=ongoing`; null unless the
            call's agent is a Voice Assist agent.
          allOf:
            - $ref: '#/components/schemas/AssistLiveCallInfo'
        transfer:
          type: object
          nullable: true
          description: >-
            Only present on `GET .../calls?status=ongoing`; null unless an AI
            agent transferred the call to agents through Voice Assist.
          required:
            - ai_agent
            - target
            - fell_back_to_any
            - transferred_at
          properties:
            ai_agent:
              type: object
              description: >-
                The AI agent that transferred the call. `id` and `name` are
                empty once it is deleted.
              properties:
                id:
                  type: string
                name:
                  type: string
            target:
              type: object
              description: Who the call was transferred to.
              required:
                - kind
              properties:
                kind:
                  type: string
                  enum:
                    - any_agent
                    - team
                    - user
                team_id:
                  type: string
                  description: Only for `team`.
                team_name:
                  type: string
                  description: Only for `team`.
                user_id:
                  type: string
                  description: Only for `user`.
                user_name:
                  type: string
                  description: Only for `user`.
            fell_back_to_any:
              type: boolean
              description: >-
                The configured team or person no longer existed at transfer
                time, so the call went to any agent.
            transferred_at:
              type: string
              format: date-time
    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 a call or answer one itself — a campaign, an
            outbound caller ID, a dispatched call, an eval; a number's inbound
            dispatch rule accepts one; the body carries `agent_type` and
            `agent_id`), `ASSIST_FLEET_NOT_CONFIGURED` (422 on a dispatch rule
            naming a Voice Assist agent in a project whose LiveKit has no Voice
            Assist listener), `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), `INVALID_CUSTOMER_TIMEZONE`
            (400, `customer_timezone` is not a time zone name; the body carries
            the value), `VOICE_ASSISTANT_REQUIRED` (403, the organization is not
            licensed for Voice Assist), `ORGANIZATION_UNAVAILABLE` (503),
            `REGION_PROFILE_CONFLICT` (503), `LLM_SERVICE_TIER_UNAVAILABLE`
            (422, an agent's processing speed is not offered by its model or not
            enabled for the organization; `reason` says which) and
            `AUTH_UPSTREAM_UNAVAILABLE` (503 on any endpoint, with
            `Retry-After`: the credential could not be checked right now; it was
            not rejected and the request was not carried out).
    CallParty:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - pstn
            - sip
            - webrtc
            - whatsapp
          description: Party type / channel
        phone_number:
          type: string
          nullable: true
          description: E.164 or national number (PSTN)
        sip_uri:
          type: string
          nullable: true
          description: SIP URI (SIP)
        user_id:
          type: string
          nullable: true
          description: User/session identifier (WebRTC)
    CallWarningSummary:
      type: object
      description: An in-call warning raised on a conversation, without its evidence.
      required:
        - id
        - category
        - severity
        - source
        - reason
        - occurrence_count
        - first_raised_at
        - last_updated_at
      properties:
        id:
          type: string
        category:
          type: string
          description: >-
            `tool_failure`, `caller_not_understood`, `abuse_attempt`,
            `provider_unavailable`, `negative_sentiment` or `escalation_risk`.
        severity:
          type: string
          enum:
            - warning
            - critical
        source:
          type: string
          enum:
            - deterministic
            - judgment
          description: >-
            `deterministic` (a rule fired) or `judgment` (a model judged the
            conversation).
        reason:
          type: string
          description: >-
            Why the warning was raised. A placeholder while personal-data
            redaction is still pending (`reason_withheld`).
        reason_withheld:
          type: boolean
        occurrence_count:
          type: integer
        first_raised_at:
          type: string
        last_updated_at:
          type: string
        raised_at_offset_ms:
          type: integer
          nullable: true
          description: >-
            Milliseconds from the start of the call, to find the moment in the
            recording.
    AssistLiveCallInfo:
      type: object
      description: >-
        The `assist` block of an ongoing-list row: the queue item's data plus
        the operator's claim, for a call whose agent is of type `assist`.
        Composed per request; nothing is stored.
      required:
        - operator_user_id
        - claimed_at
        - joined_at
        - waiting_since
        - language
        - origin
        - caller
        - kb_collection_id
      properties:
        operator_user_id:
          type: string
          nullable: true
          description: >-
            The operator holding the call (the unended claim); null while
            waiting for one.
        claimed_at:
          type: string
          format: date-time
          nullable: true
        joined_at:
          type: string
          format: date-time
          nullable: true
          description: Null between the claim and the operator's arrival in the room.
        waiting_since:
          type: string
          format: date-time
          description: >-
            The conversation's start (the call's own start when the conversation
            is not active).
        language:
          type: string
          description: >-
            The queue's display label; both languages primary first for a pair
            ("Arabic · English"); "" when unknown.
        origin:
          type: string
          description: >-
            try_it | demo | production ("" when the conversation is not active;
            a future origin still parses).
        caller:
          $ref: '#/components/schemas/AssistCallerSummary'
        kb_collection_id:
          type: string
          nullable: true
    AssistCallerSummary:
      type: object
      description: >-
        The caller summary: who is calling, as the one contact lookup resolved
        it. Never the entered email; the phone whenever one is known (spec 118).
      required:
        - identity_entered
        - outcome
        - customer_id
        - display_name
        - avatar_url
        - secondary_match
      properties:
        identity_entered:
          type: boolean
        outcome:
          type: string
          enum:
            - not_attempted
            - matched
            - unmatched
            - failed
        customer_id:
          type: integer
          nullable: true
        display_name:
          type: string
          nullable: true
        avatar_url:
          type: string
          nullable: true
        secondary_match:
          type: boolean
        phone:
          type: string
          description: >-
            The caller's phone in E.164 (`+966551234567`), whatever the lookup's
            outcome: a phone call's own calling number, or a phone typed on Try
            it or the demo page. Absent when none is known (a hidden number, a
            call without one).
  responses:
    Unauthorized:
      description: >-
        No credential was sent, or the API key is invalid or revoked. A key that
        could not be checked at all answers 503 `AUTH_UPSTREAM_UNAVAILABLE`
        instead (see Errors).
      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.