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

# Get a conversation

> Read one conversation log: summary, outcome, extracted fields, and the transcript, messages or call recording.

Read only, on every plan. Use the `conversationId` that [Make a call](/api-reference/calls) returns to read a call's result once it ends.

* **Calls** include `transcript`, `transcriptTurns` and `recordingUrl`. The recording link works for 15 minutes (`recordingUrlExpiresAt`); request the conversation again for a fresh one. A call with no recording, or one whose recording isn't stored with Nedzo, has `recordingUrl: null`.
* **Text threads** include one page of `messages`, oldest first. `role` is `contact`, `ai` or `teammate`.
* **Website widget sessions** include `transcript` and `transcriptTurns`.

<ParamField path="id" type="string" required>
  Conversation UUID
</ParamField>

<ParamField query="workspaceId" type="string">
  Workspace UUID (required for account API keys, optional for workspace API keys)
</ParamField>

<ParamField query="messagesLimit" type="integer" default="100">
  Text threads only: messages per page, from 1 to 500
</ParamField>

<ParamField query="messagesOffset" type="integer" default="0">
  Text threads only: how many messages to skip
</ParamField>

## Transcript turns

Calls and widget sessions have `transcriptTurns`, in the order they happened.

| Field | What it is |
| - | - |
| `role` | `ai` for the agent, `customer` for the person, or `event` for something that happened on the call. Today an `event` marks a warm transfer to a person. Its `text` says what happened, and it is not speech. |
| `text` | What was said, or what happened |
| `offsetSeconds` | Seconds from the start of the call. `null` when it is not known. |

## Messages

Text threads have `messages`, one page at a time, oldest first. Each page has `items`, `total`, `limit`, `offset` and `hasMore`. Calls and widget sessions have `messages: null`.

| Field | What it is |
| - | - |
| `id` | Message UUID |
| `direction` | `inbound` (from the contact) or `outbound` (to the contact) |
| `role` | `contact`, `ai` (sent by the agent) or `teammate` (sent by a person on your team) |
| `content` | The message text |
| `subject` | The email subject. `null` for other channels. |
| `status` | The delivery status the channel gave, or `null` |
| `createdAt` | When the message was saved |

`channel` and `outcome` take the same values as in [List conversations](/api-reference/conversations/list#channels).

## Errors

| Status | When |
| - | - |
| `400` | A query value is not valid, or an account key leaves out `workspaceId` |
| `402` | The account has no plan, or its subscription is not active |
| `404` | The workspace or the conversation does not exist, or this key can't read it |

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.nedzo.ai/v1/conversations/123e4567-e89b-12d3-a456-426614174000" \
      -H "Authorization: Bearer YOUR_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "workspaceId": "789e4567-e89b-12d3-a456-426614174000",
    "type": "voice",
    "channel": "call",
    "direction": "outbound",
    "status": "closed",
    "agentId": "456e4567-e89b-12d3-a456-426614174000",
    "contactId": "321e4567-e89b-12d3-a456-426614174000",
    "outcome": "appointment_booked",
    "summary": "The caller booked a cleaning for Tuesday at 10am.",
    "startedAt": "2026-10-01T15:02:11Z",
    "endedAt": "2026-10-01T15:05:40Z",
    "durationSeconds": 209,
    "createdAt": "2026-10-01T15:02:05Z",
    "updatedAt": "2026-10-01T15:06:02Z",
    "extractedFields": [
      { "name": "Preferred day", "value": "Tuesday" }
    ],
    "transcript": "AI: Hi, this is Sam from Bright Dental...",
    "transcriptTurns": [
      { "role": "ai", "text": "Hi, this is Sam from Bright Dental.", "offsetSeconds": 0.8 },
      { "role": "customer", "text": "Hi Sam.", "offsetSeconds": 3.1 }
    ],
    "messages": null,
    "recordingUrl": "https://recordings.example/abc.mp3?signature=...",
    "recordingUrlExpiresAt": "2026-10-11T10:15:00Z"
  }
  ```
</ResponseExample>


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