---
title: "Get the conversation an email belongs to"
method: GET
path: "/emails/{id}/conversation"
tags: ["Emails"]
---

# Get the conversation an email belongs to

`GET /emails/{id}/conversation`

## Request

- Base URL: `https://api.poststack.dev`
- URL: `https://api.poststack.dev/emails/{id}/conversation`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://poststack.dev/oauth/authorize`
    - Token URL: `https://poststack.dev/oauth/token`
- TypeScript: <https://skmtc.dev/poststack/apis/poststack-api/docs/emails/:id/conversation/get.ts> (a function with typed inputs; its response is checked against the schema)

The inbound email it replies to, the messages its `In-Reply-To`/`References` name, other replies to those, and inbound mail answering any of them — oldest first. Also returns the Message-ID it was sent with.

## Path parameters

- `id` string, required

## Response `200`

The conversation.

- object
  - `conversation` EmailConversation, required
    - `messageId` string, required: The Message-ID this email went out with.
    - `inReplyTo` string, nullable, required
    - `references` string[], required
    - `repliesTo` ConversationEntry, required
      - `kind` 'inbound' | 'outbound', required
      - `id` union, required
        - integer: Inbound email id.
        - string: Outbound email id (`em_…`).
      - `fromAddress` string, required
      - `fromName` string, nullable: Inbound only.
      - `toAddress` string: Inbound only: the address it was delivered to.
      - `toAddresses` string[]: Outbound only.
      - `subject` string, nullable
      - `status` string: Outbound only.
      - `messageId` string, nullable
      - `current` boolean: Outbound only: the email the conversation was requested for.
      - `createdAt` string, date-time, required
    - `timeline` ConversationEntry[], required: Both directions, oldest first; includes the email itself.
      - `kind` 'inbound' | 'outbound', required
      - `id` union, required
        - integer: Inbound email id.
        - string: Outbound email id (`em_…`).
      - `fromAddress` string, required
      - `fromName` string, nullable: Inbound only.
      - `toAddress` string: Inbound only: the address it was delivered to.
      - `toAddresses` string[]: Outbound only.
      - `subject` string, nullable
      - `status` string: Outbound only.
      - `messageId` string, nullable
      - `current` boolean: Outbound only: the email the conversation was requested for.
      - `createdAt` string, date-time, required

## Other responses

- `400`: Validation failed — `error` names each offending field (`field: message`).
- `401`: Missing, malformed or unknown credentials (`WWW-Authenticate: Bearer …` is set).
- `403`: The credential lacks the `email:read` scope (body `{ error: "insufficient_scope", required, missing }`), or the team is suspended.
- `404`: No such resource on this team.

## Changes

- **2026-10-06** `542ca913158c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/poststack/apis/poststack-api/changes/emails/:id/conversation/get.md)

---

[API](https://skmtc.dev/poststack/apis/poststack-api.md) - [All operations](https://skmtc.dev/poststack/apis/poststack-api/llms.txt) - [OpenAPI document](https://skmtc.dev/poststack/apis/poststack-api/revisions/0d3971e3a670?raw)
