---
title: "Get Conversation"
method: GET
path: "/voice/conversations/{conversationId}"
tags: ["Voice Agent Conversations"]
---

# Get Conversation

`GET /voice/conversations/{conversationId}`

## Request

- Base URL: `https://api.speakai.co/v1`
- URL: `https://api.speakai.co/v1/voice/conversations/{conversationId}`
- Auth: API key in header `x-speakai-key` and API key in header `x-access-token`

### Get Conversation

Fetches a single call by id, scoped to your company. Use mediaId from the response with the Media API to retrieve the recording, transcript, and analysis for this call.

## Path parameters

- `conversationId` string, required

## Response `200`

OK

- object
  - `status` 'success'
  - `data` object
    - `conversation` object
      - `_id` string: MongoDB document id, included because every document has one; use conversationId to identify it.
      - `conversationId` string: Server-generated UUID. Immutable.
      - `agentId` string
      - `agentName` string: Only present on the single-conversation Get response, resolved server-side for display.
      - `companyId` string
      - `userId` string, nullable
      - `widgetSessionId` string, nullable
      - `participants` string[]
      - `sessionId` string
      - `status` 'active' | 'completed' | 'ended' | 'transferred'
      - `duration` number: Call length in seconds.
      - `costs` object: Vendor cost breakdown (LLM, TTS, STT, telephony). Reporting only, not the customer charge.
      - `startedAt` string, date-time, nullable
      - `endedAt` string, date-time, nullable
      - `endedReason` string, nullable
      - `recordingUrls` object
        - `mixed` string
        - `user` string
        - `agent` string
      - `recordingStatus` 'pending' | 'recording' | 'processing' | 'completed' | 'failed'
      - `callType` 'web' | 'phone'
      - `sourceLanguage` string, nullable
      - `phone` object
        - `callSid` string
        - `from` string
        - `to` string
      - `handoff` object
        - `occurred` boolean
        - `targetNumber` string
        - `transferredAt` string, date-time
        - `summary` string
      - `callerId` string, nullable
      - `mediaId` string, nullable: Set once the call's post-call pipeline finishes. This is a regular Speak media record -- use it with the Media API (GET /media/{mediaId}, insights, transcript, export) to pull the recording, transcript, summary, and any Fields this call's Questions wrote onto it.
      - `folderId` string, nullable: The folder the call's media was filed into. See the Folders API.
      - `pipelineState` 'pending' | 'running' | 'completed': Internal post-call processing state. pending/running calls may not have mediaId set yet.
      - `feedback` object
        - `rating` integer
        - `comment` string
        - `submittedAt` string, date-time
      - `createdAt` string, date-time
      - `updatedAt` string, date-time

## Other responses

- `404`: Conversation not found

---

[API](https://skmtc.dev/speakai/apis/speak-ai-api.md) · [All operations](https://skmtc.dev/speakai/apis/speak-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/speakai/apis/speak-ai-api/revisions/52d777e6d46e?raw)
