curl -X GET "https://api.nedzo.ai/v1/conversations/123e4567-e89b-12d3-a456-426614174000" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"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"
}
Conversations
Get a conversation
Read one conversation log: summary, outcome, extracted fields, and the transcript, messages or call recording.
GET
/
conversations
/
{id}
curl -X GET "https://api.nedzo.ai/v1/conversations/123e4567-e89b-12d3-a456-426614174000" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"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"
}
Read only, on every plan. Use the
conversationId that Make a call returns to read a call’s result once it ends.
- Calls include
transcript,transcriptTurnsandrecordingUrl. 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, hasrecordingUrl: null. - Text threads include one page of
messages, oldest first.roleiscontact,aiorteammate. - Website widget sessions include
transcriptandtranscriptTurns.
string
required
Conversation UUID
string
Workspace UUID (required for account API keys, optional for workspace API keys)
integer
default:"100"
Text threads only: messages per page, from 1 to 500
integer
default:"0"
Text threads only: how many messages to skip
Transcript turns
Calls and widget sessions havetranscriptTurns, 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 havemessages, 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.
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 |
curl -X GET "https://api.nedzo.ai/v1/conversations/123e4567-e89b-12d3-a456-426614174000" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"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"
}
Was this page helpful?
