---
title: "List Conversations"
method: GET
path: "/voice/conversations"
tags: ["Voice Agent Conversations"]
---

# List Conversations

`GET /voice/conversations`

## Request

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

### List Conversations

Lists calls handled by your voice agents, newest first. Once a call finishes processing, mediaId links it to a regular Speak media record -- pull the recording, transcript, and insights through the Media API using that id.

## Query parameters

- `agentId` string
- `callType` 'web' | 'phone'
- `search` string
- `startDate` string
- `endDate` string
- `page` integer
- `limit` integer

## Response `200`

OK

- object
  - `status` 'success'
  - `data` object
    - `conversations` 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
    - `total` integer
    - `page` integer
    - `limit` integer

---

[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)
