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

# Get Call

> Retrieve a single call with its full transcript and analysis.



## OpenAPI

````yaml https://api.usetuner.ai/public/openapi.json get /api/v1/workspaces/{workspace_id}/agents/{agent_id}/calls/{call_id}
openapi: 3.1.0
info:
  title: My Public API
  version: 1.0.0
servers:
  - url: https://api.usetuner.ai
security: []
tags:
  - name: calls
    x-group: Calls
  - name: workspaces
    x-group: Workspaces
  - name: simulation
    x-group: Simulation
  - name: agent-settings
    x-group: Agent Settings
  - name: agents
    x-group: Agents
  - name: scenarios
    x-group: Scenarios
  - name: traces
    x-group: Traces
  - name: providers
    x-group: Providers
paths:
  /api/v1/workspaces/{workspace_id}/agents/{agent_id}/calls/{call_id}:
    get:
      tags:
        - calls
        - calls
      summary: Get Call
      description: Retrieve a single call with its full transcript and analysis.
      operationId: >-
        get_call_details_api_v1_workspaces__workspace_id__agents__agent_id__calls__call_id__get
      parameters:
        - name: call_id
          in: path
          required: true
          schema:
            type: integer
            description: Tuner's internal numeric ID for the call.
            title: Call Id
          description: Tuner's internal numeric ID for the call.
        - name: agent_id
          in: path
          required: true
          schema:
            type: integer
            description: Tuner's internal numeric ID for the agent.
            title: Agent Id
          description: Tuner's internal numeric ID for the agent.
        - name: workspace_id
          in: path
          required: true
          schema:
            type: integer
            description: Workspace ID. Find this in Workspace > General Settings.
            title: Workspace Id
          description: Workspace ID. Find this in Workspace > General Settings.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallDetailsResponse'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                detail: Not authenticated
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: You do not have access to this workspace.
          content:
            application/json:
              example:
                detail: User does not have access to workspace 42
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Agent or call not found.
          content:
            application/json:
              example:
                detail: Call with ID 88 not found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - Bearer: []
components:
  schemas:
    CallDetailsResponse:
      properties:
        id:
          type: integer
          title: Id
          description: Call database ID
        call_intent:
          anyOf:
            - type: string
            - type: 'null'
          title: Call Intent
          description: Call intent
        call_outcome:
          anyOf:
            - $ref: '#/components/schemas/CallOutcome'
            - type: 'null'
          description: Call outcome with value and type
        date:
          type: string
          title: Date
          description: Call start date in ISO 8601 format
        duration_ms:
          anyOf:
            - type: integer
            - type: 'null'
          title: Duration Ms
          description: Call duration in milliseconds
        call_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Call Status
          description: Call status
        disconnection_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Disconnection Reason
          description: Disconnection reason
        cost:
          type: number
          title: Cost
          description: >-
            Call cost in cents (canonical unit). Frontend converts to dollars
            for display.
          default: 0
        latency:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Latency
          description: >-
            Raw persisted latency payload from DB with top-level keys (for
            example: e2e/llm/stt/tts/eou). Any metadata key is excluded.
        voice_metrics:
          anyOf:
            - $ref: '#/components/schemas/VoiceMetricsSummary'
            - type: 'null'
          description: Aggregated voice metrics derived from call latency + transcript
        customer_number:
          type: string
          title: Customer Number
          description: Customer phone number
          default: ''
        caller_phone_number:
          anyOf:
            - type: string
            - type: 'null'
          title: Caller Phone Number
          description: Caller phone number (for phone_call type)
        call_id:
          type: string
          title: Call Id
          description: Provider call ID
        recording_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Recording Url
          description: URL to call recording
        extracted_fields:
          additionalProperties:
            type: string
          type: object
          title: Extracted Fields
          description: Extracted data fields from LLM
        evaluations:
          additionalProperties: true
          type: object
          title: Evaluations
          description: Call evaluations (placeholder)
        transcript_with_tool_calls:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Transcript With Tool Calls
          description: >-
            Raw transcript segments as stored, including agent/user messages,
            node transitions, and tool calls.
        end_goal:
          anyOf:
            - type: string
            - type: 'null'
          title: End Goal
          description: 'Deprecated: use `scenario.goal`. Simulation scenario end goal.'
          deprecated: true
        persona:
          anyOf:
            - type: string
            - type: 'null'
          title: Persona
          description: 'Deprecated: use `scenario.label`. Simulation scenario persona.'
          deprecated: true
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: 'Deprecated: use `scenario.situation`. Simulation scenario prompt.'
          deprecated: true
        scenario_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Scenario Type
          description: >-
            Deprecated: use `scenario.type` / `simulation_kind`. 'Routine call'
            for functional, 'Pressure call' for adversarial, 'recorded_clips'
            for a replay call.
          deprecated: true
        simulation_kind:
          anyOf:
            - type: string
              enum:
                - scenario
                - replay
            - type: 'null'
          title: Simulation Kind
          description: >-
            'scenario' for a generated/library simulation call (see `scenario`),
            'replay' for a deterministic recorded-clips replay call (see
            `simulation_replay`). Null for a non-simulation call.
        scenario:
          anyOf:
            - $ref: '#/components/schemas/SimulationScenarioDetails'
            - type: 'null'
          description: >-
            Scenario content and context. Null for non-simulation calls and for
            replay calls (see simulation_replay instead).
        simulation_replay:
          anyOf:
            - $ref: '#/components/schemas/SimulationReplayInfo'
            - type: 'null'
          description: >-
            Deterministic-replay context -- non-null only for calls produced by
            a recorded-clips replay run. Null for generated simulation calls and
            non-simulation calls.
        pii_redaction_status:
          anyOf:
            - type: string
              enum:
                - redacted
                - partial_failure
                - failed
            - type: 'null'
          title: Pii Redaction Status
          description: >-
            PII redaction outcome. Null when redaction was not attempted
            (disabled workspace, simulation call, or pre-feature call);
            otherwise one of 'redacted', 'partial_failure', or 'failed'.
        retention_erased_scope:
          anyOf:
            - type: string
              enum:
                - transcript_recording
                - caller_data
            - type: 'null'
          title: Retention Erased Scope
          description: >-
            Retention erasure scope applied to this call. Null when the call was
            never erased. The 'full' scope never appears here -- it deletes the
            call row entirely, so those calls 404 instead.
        retention_erased_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Retention Erased At
          description: >-
            When retention erasure ran for this call, ISO 8601. Null when never
            erased.
        metadata:
          anyOf:
            - $ref: '#/components/schemas/CallMetadataResponse'
            - type: 'null'
          description: >-
            Call-level metadata: AI models, AI usage, and remaining
            customer-supplied keys. Null when the call has none.
      type: object
      required:
        - id
        - date
        - call_id
      title: CallDetailsResponse
      description: Detailed call information response.
    ErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
          description: Human-readable description of what went wrong.
      type: object
      required:
        - detail
      title: ErrorResponse
      description: Error body returned when a request fails.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CallOutcome:
      properties:
        value:
          type: string
          title: Value
          description: Call outcome value/label
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
          description: Call outcome type (e.g., 'success', 'failure')
      type: object
      required:
        - value
      title: CallOutcome
      description: Call outcome with value and type.
    VoiceMetricsSummary:
      properties:
        p50_latency:
          anyOf:
            - type: number
            - type: 'null'
          title: P50 Latency
          description: P50 e2e latency in milliseconds
        p75_latency:
          anyOf:
            - type: number
            - type: 'null'
          title: P75 Latency
          description: P75 e2e latency in milliseconds
        p90_latency:
          anyOf:
            - type: number
            - type: 'null'
          title: P90 Latency
          description: P90 e2e latency in milliseconds
        p95_latency:
          anyOf:
            - type: number
            - type: 'null'
          title: P95 Latency
          description: P95 e2e latency in milliseconds
        p99_latency:
          anyOf:
            - type: number
            - type: 'null'
          title: P99 Latency
          description: P99 e2e latency in milliseconds
        longest_agent_monologue_ms:
          anyOf:
            - type: number
            - type: 'null'
          title: Longest Agent Monologue Ms
          description: Longest continuous agent monologue duration in milliseconds
      type: object
      title: VoiceMetricsSummary
      description: Aggregated voice metrics surfaced on call details.
    SimulationScenarioDetails:
      properties:
        type:
          type: string
          enum:
            - routine
            - pressure
          title: Type
          description: functional->routine, adversarial->pressure
        label:
          anyOf:
            - type: string
            - type: 'null'
          title: Label
          description: 'scenario_label_from_snapshot: persona, else name'
        goal:
          anyOf:
            - type: string
            - type: 'null'
          title: Goal
          description: Snapshot goal; blank treated as null
        situation:
          anyOf:
            - type: string
            - type: 'null'
          title: Situation
          description: situation_from_generated_scenario; blank -> null
        first_line:
          anyOf:
            - type: string
            - type: 'null'
          title: First Line
          description: Snapshot first_line (library runs only); blank -> null
        stop_condition:
          anyOf:
            - type: string
            - type: 'null'
          title: Stop Condition
          description: Snapshot stop_condition (when the caller hangs up); blank -> null
        intent:
          anyOf:
            - type: string
            - type: 'null'
          title: Intent
          description: Snapshot intent label; blank -> null
        tags:
          items:
            type: string
          type: array
          title: Tags
          description: Snapshot tags (library runs only); [] otherwise
        target_eval:
          anyOf:
            - $ref: '#/components/schemas/SimulationScenarioTargetEval'
            - type: 'null'
          description: From the execution's target_ai_evaluation column
        test_profile:
          anyOf:
            - $ref: '#/components/schemas/SimulationTestProfile'
            - type: 'null'
          description: The run's simulation profile, if one was used
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: Display string for the run's caller persona language/accent
        noise:
          anyOf:
            - $ref: '#/components/schemas/SimulationNoise'
            - type: 'null'
          description: The run's noise environment
        origin:
          type: string
          enum:
            - manual
            - ai_generated
          title: Origin
          description: >-
            'manual' iff the linked library scenario (not soft-deleted) has
            origin 'manual'; 'ai_generated' otherwise, including when the link
            is deleted or absent.
        library_scenario_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Library Scenario Id
          description: >-
            The linked library scenario's id, when it exists and is not
            soft-deleted
      type: object
      required:
        - type
        - origin
      title: SimulationScenarioDetails
      description: >-
        Scenario content and context for a simulation call (ENG-1543).


        All content fields (everything but `origin`/`library_scenario_id`) come
        from the

        execution's frozen snapshot -- never from the live library `scenario`
        row, so editing

        or deleting a library scenario never changes what a past call's details
        show.
    SimulationReplayInfo:
      properties:
        voice_clip_set_id:
          type: integer
          title: Voice Clip Set Id
          description: Clip set replayed into this call
        voice_clip_set_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Voice Clip Set Name
          description: Clip set display name at the time of the run
        source_call_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Source Call Id
          description: Production call the clips were sliced from
        source_channel_mode:
          anyOf:
            - type: string
              enum:
                - multi_channel
                - mono
            - type: 'null'
          title: Source Channel Mode
          description: Channel layout of the source recording
        repetition:
          anyOf:
            - type: integer
            - type: 'null'
          title: Repetition
          description: 1-based repetition index of this call within its clip set
        clip_count:
          type: integer
          title: Clip Count
          description: Number of caller-turn clips played back
        replay_settings:
          additionalProperties: true
          type: object
          title: Replay Settings
          description: Replay tuning knobs frozen onto the run
        turn_timings:
          items:
            $ref: '#/components/schemas/SimulationReplayTurnTiming'
          type: array
          title: Turn Timings
          description: >-
            Per-turn timings, ordered by turn_index. Empty when the replay
            runtime's best-effort write of timings never landed -- never null
            and never an error.
      type: object
      required:
        - voice_clip_set_id
        - clip_count
      title: SimulationReplayInfo
      description: >-
        Deterministic-replay context for a call produced by a recorded-clips
        replay run.


        Everything except ``turn_timings`` comes from the scenario's
        ``generated_scenario``

        snapshot, frozen at run time; ``turn_timings`` comes from the call's own
        metadata.
    CallMetadataResponse:
      properties:
        ai_models:
          anyOf:
            - $ref: '#/components/schemas/CallAiModelsResponse'
            - type: 'null'
          description: AI model identifiers used during the call; None when all are missing
        ai_usage:
          anyOf:
            - $ref: '#/components/schemas/CallAiUsageResponse'
            - type: 'null'
          description: AI usage/cost metrics for the call; None when all are missing
        extra:
          additionalProperties: true
          type: object
          title: Extra
          description: >-
            Remaining customer-supplied metadata keys from
            general_meta_data_raw, excluding the keys already surfaced elsewhere
            (ai_models, usage_token, simulation_correlation_id).
      type: object
      title: CallMetadataResponse
      description: >-
        Call-level metadata: AI models, AI usage, and remaining
        customer-supplied keys.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    SimulationScenarioTargetEval:
      properties:
        type:
          type: string
          enum:
            - eval
            - outcome
          title: Type
          description: Target evaluation kind
        value:
          type: string
          title: Value
          description: Raw stored value (eval name, or the outcome text)
        label:
          type: string
          title: Label
          description: >-
            Display label. For 'eval', the agent's current eval display name
            resolved from `value`, falling back to `value` itself when no active
            eval matches (renamed or deleted). For 'outcome', always equal to
            `value`.
      type: object
      required:
        - type
        - value
        - label
      title: SimulationScenarioTargetEval
      description: Target AI evaluation for a simulation scenario, resolved for display.
    SimulationTestProfile:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Simulation profile name at run time
        fields:
          additionalProperties: true
          type: object
          title: Fields
          description: The profile's frozen key/value snapshot
      type: object
      title: SimulationTestProfile
      description: The customer-facts test profile used by a simulation run, if any.
    SimulationNoise:
      properties:
        name:
          type: string
          title: Name
          description: Noise environment display name
        intensity:
          anyOf:
            - type: number
            - type: 'null'
          title: Intensity
          description: Noise gain applied for the run
      type: object
      required:
        - name
      title: SimulationNoise
      description: Background noise environment used by a simulation run.
    SimulationReplayTurnTiming:
      properties:
        turn_index:
          type: integer
          title: Turn Index
          description: Zero-based position of the clip within the set
        clip_started_ms:
          type: integer
          title: Clip Started Ms
          description: Offset into the call at which the clip started playing, in ms
        clip_ended_ms:
          type: integer
          title: Clip Ended Ms
          description: Offset into the call at which the clip finished playing, in ms
        agent_first_audio_ms:
          anyOf:
            - type: integer
            - type: 'null'
          title: Agent First Audio Ms
          description: >-
            Offset at which the agent's first audio for this turn arrived. Null
            when the agent never spoke after this clip -- must not be coerced to
            0.
        agent_turn_ended_ms:
          anyOf:
            - type: integer
            - type: 'null'
          title: Agent Turn Ended Ms
          description: >-
            Offset at which the agent's turn was detected as finished. Null if
            it never finished.
        waited_ms:
          type: integer
          title: Waited Ms
          description: >-
            How long the replayer waited for the agent before playing the next
            clip
        wait_capped:
          type: boolean
          title: Wait Capped
          description: True when the wait hit `max_wait_ms` instead of the agent finishing
        overlapped:
          type: boolean
          title: Overlapped
          description: True when the clip started while the agent was still speaking
      type: object
      required:
        - turn_index
        - clip_started_ms
        - clip_ended_ms
        - waited_ms
        - wait_capped
        - overlapped
      title: SimulationReplayTurnTiming
      description: >-
        One caller turn's playback/response timing from a deterministic replay
        call.


        A straight read of
        ``simulation_calls.call_metadata["replay_turn_timings"]``, written

        best-effort by the replay runtime -- see
        ``app.services.simulation_clip_replay``.
    CallAiModelsResponse:
      properties:
        stt:
          anyOf:
            - type: string
            - type: 'null'
          title: Stt
          description: Speech-to-text (ASR) model identifier used during the call
        llm:
          anyOf:
            - type: string
            - type: 'null'
          title: Llm
          description: LLM model identifier used during the call
        tts:
          anyOf:
            - type: string
            - type: 'null'
          title: Tts
          description: Text-to-speech model identifier used during the call
        extra:
          additionalProperties: true
          type: object
          title: Extra
          description: >-
            Any other key in the customer-supplied ai_models object we don't
            recognize by name.
      type: object
      title: CallAiModelsResponse
      description: AI model identifiers surfaced on the call detail 'AI Models' section.
    CallAiUsageResponse:
      properties:
        input_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Input Tokens
          description: LLM input (prompt) token count
        output_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Output Tokens
          description: LLM output (completion) token count
        llm_cost:
          anyOf:
            - type: number
            - type: 'null'
          title: Llm Cost
          description: >-
            LLM cost in cents (canonical unit, matching
            CallDetailsResponse.cost).
        voice_cost:
          anyOf:
            - type: number
            - type: 'null'
          title: Voice Cost
          description: >-
            Combined STT + TTS cost in cents (canonical unit). Covers both
            directions of speech; None only when neither component cost is
            available.
        stt_duration_seconds:
          anyOf:
            - type: number
            - type: 'null'
          title: Stt Duration Seconds
          description: >-
            Speech-to-text audio duration processed, in seconds. Sent by
            non-Vapi providers (custom API, LiveKit, Dograh, Pipecat, some
            Retell-labeled integrations) that do not populate
            llm_cost/voice_cost.
        llm_tokens:
          anyOf:
            - type: integer
            - type: 'null'
          title: Llm Tokens
          description: >-
            Total LLM token count for the call. Sent by non-Vapi providers as a
            single total rather than the input_tokens/output_tokens split Vapi
            provides.
        tts_characters:
          anyOf:
            - type: integer
            - type: 'null'
          title: Tts Characters
          description: >-
            Number of characters synthesized by text-to-speech during the call.
            Sent by non-Vapi providers in place of a per-direction voice cost
            breakdown.
        extra:
          additionalProperties: true
          type: object
          title: Extra
          description: >-
            Any other key in the customer-supplied usage_token object we don't
            recognize by name.
      type: object
      title: CallAiUsageResponse
      description: AI usage/cost metrics surfaced on the call detail 'AI Usage' section.
  securitySchemes:
    Bearer:
      type: http
      description: >-
        Use Tuner API key (tr_api_...) or user session token. Find your API key
        in Workspace Settings > API Keys.
      scheme: bearer

````

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