---
title: "Get a lead's conversation"
method: GET
path: "/leads/{id}/conversation"
tags: ["Replies"]
---

# Get a lead's conversation

`GET /leads/{id}/conversation`

## Request

- Base URL: `https://api.emailchaser.com/r`
- URL: `https://api.emailchaser.com/r/leads/{id}/conversation`
- Auth: HTTP bearer

Returns the lead's full email thread in chronological order: outbound emails (sent, scheduled, and unsent drafts) and inbound replies. Each item carries direction (inbound/outbound), status, and, for categorized inbound emails, the AI response category. fromAddress on an outbound email is the workspace mailbox it is sent from, and a campaign sequence email carries stepIndex (0 = initial email, 1..N = follow-ups). Unsent drafts, including AI-suggested replies awaiting human review, are marked with isDraft. An AI reply draft (isDraft true, campaignId null) can be edited with PUT /reply-drafts/{id} and sent with POST /reply-drafts/{id}/send, using its id from this list. Drafts that belong to a campaign cannot be sent this way.

## Path parameters

- `id` integer, required

## Response `200`

The lead's conversation thread

- ModelsGetLeadConversationResponse
  - `items` ModelsConversationItem[]
    - `body` string
    - `campaignId` integer
    - `createdAt` string
    - `direction` string: Direction is "inbound" (received from the prospect) or "outbound" (sent, scheduled, or drafted by the workspace).
    - `fromAddress` string: FromAddress is who the email is from: on an inbound email the prospect, on an outbound one the workspace mailbox it was sent (or is scheduled to be sent) from. Left out on an outbound email that has no mailbox yet, such as a campaign email not scheduled yet.
    - `id` integer
    - `isDraft` boolean: IsDraft marks unsent drafts (status draft or followup_draft), including AI-suggested replies awaiting human review. An AI reply draft (campaignId null) can be edited with PUT /reply-drafts/{id} and sent with POST /reply-drafts/{id}/send, using this id. Drafts that belong to a campaign cannot be sent this way.
    - `responseCategory` string: ResponseCategory is set on categorized inbound emails and null everywhere else.
    - `sentAt` string: SentAt is the scheduled or actual send time and null when the email has none (e.g. an AI draft that was never scheduled).
    - `status` string
    - `stepIndex` integer: StepIndex is the sequence step of an outbound campaign email: 0 = initial email, 1..N = follow-ups in chain order, the numbering of the campaign's step stats; A/B variants of a step share it. Left out on every other item: inbound emails, replies written in the app or in the mail client, AI reply drafts.
    - `subject` string
    - `threadId` string
  - `leadId` integer
  - `total` integer

## Other responses

- `400`: Invalid lead ID
- `401`: Unauthorized - invalid or missing API key
- `404`: Lead not found
- `500`: Failed to retrieve conversation

---

[API](https://skmtc.dev/emailchaser/apis/emailchaser-api.md) · [All operations](https://skmtc.dev/emailchaser/apis/emailchaser-api/llms.txt) · [OpenAPI document](https://skmtc.dev/emailchaser/apis/emailchaser-api/revisions/8b114990abb7?raw)
