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

# Get Conversation

> Retrieve the full conversation thread including all sent and received messages.

## Path Parameters

<ParamField path="reply_id" type="string" required>
  The unique identifier of the reply thread.
</ParamField>

## Response

<ResponseField name="data" type="object">
  Conversation object.

  <Expandable title="Conversation">
    <ResponseField name="messages" type="array">
      Chronological list of messages in the thread.

      <Expandable title="Message object">
        <ResponseField name="id" type="string">Message identifier.</ResponseField>
        <ResponseField name="direction" type="string">`sent` or `received`.</ResponseField>
        <ResponseField name="fromEmail" type="string">Sender email.</ResponseField>
        <ResponseField name="toEmail" type="string">Recipient email.</ResponseField>
        <ResponseField name="subject" type="string">Subject line.</ResponseField>
        <ResponseField name="body" type="string">Full message body.</ResponseField>
        <ResponseField name="category" type="string">AI category (only for received messages).</ResponseField>
        <ResponseField name="timestamp" type="string">ISO 8601 timestamp.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="lead" type="object">
      Associated lead, if matched.

      <Expandable title="Lead summary">
        <ResponseField name="id" type="string">Lead ID.</ResponseField>
        <ResponseField name="email" type="string">Lead email.</ResponseField>
        <ResponseField name="firstName" type="string">First name.</ResponseField>
        <ResponseField name="lastName" type="string">Last name.</ResponseField>
        <ResponseField name="company" type="string">Company name.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="campaign" type="object">
      Associated campaign, if matched.

      <Expandable title="Campaign summary">
        <ResponseField name="id" type="string">Campaign ID.</ResponseField>
        <ResponseField name="name" type="string">Campaign name.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.foxreach.io/api/v1/inbox/threads/rpl_abc123/conversation" \
    -H "X-API-Key: otr_your_key"
  ```

  ```python Python SDK theme={null}
  from foxreach import FoxReach

  client = FoxReach(api_key="otr_your_key")
  thread = client.inbox.get("rpl_abc123")
  ```

  ```typescript TypeScript SDK theme={null}
  import { FoxReach } from "foxreach";

  const client = new FoxReach({ apiKey: "otr_your_key" });
  const thread = await client.inbox.get("rpl_abc123");
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "data": {
      "messages": [
        {
          "id": "eml_001",
          "direction": "sent",
          "fromEmail": "outreach@yourcompany.com",
          "toEmail": "john@acme.com",
          "subject": "Quick question about your product",
          "body": "Hi John, I noticed Acme recently expanded...",
          "category": null,
          "timestamp": "2025-01-18T09:00:00"
        },
        {
          "id": "rpl_abc123",
          "direction": "received",
          "fromEmail": "john@acme.com",
          "toEmail": "outreach@yourcompany.com",
          "subject": "Re: Quick question about your product",
          "body": "Hi, thanks for reaching out! I'd love to learn more about your solution.",
          "category": "interested",
          "timestamp": "2025-01-20T14:30:00"
        }
      ],
      "lead": {
        "id": "cld_xyz789",
        "email": "john@acme.com",
        "firstName": "John",
        "lastName": "Doe",
        "company": "Acme Inc"
      },
      "campaign": {
        "id": "cmp_def456",
        "name": "Q1 Outreach"
      }
    }
  }
  ```
</ResponseExample>

## Errors

| Status | Description      |
| ------ | ---------------- |
| `404`  | Thread not found |

## Rate Limit

* **100 requests per minute, per API key.** Fixed 60-second window.
* Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (unix epoch seconds).
* A `429` response includes a `Retry-After` header (seconds until the bucket resets).

For client-side patterns (`Retry-After`, exponential backoff, monitoring `X-RateLimit-Remaining`), see [Rate Limiting](/rate-limiting).
