> ## 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.

# Send Reply

> Send a reply to an inbox thread.

## Path Parameters

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

## Body Parameters

<ParamField body="body" type="string" required>
  The reply message body (plain text or HTML).
</ParamField>

<ParamField body="subject" type="string">
  Optional subject line override. Defaults to `Re: <original subject>`.
</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="Reply result">
    <ResponseField name="success" type="boolean">Whether the reply was sent successfully.</ResponseField>
    <ResponseField name="messageId" type="string">SMTP message ID of the sent reply.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.foxreach.io/api/v1/inbox/threads/rpl_abc123/reply" \
    -H "X-API-Key: otr_your_key" \
    -H "Content-Type: application/json" \
    -d '{
      "body": "Thanks for your interest, John! I'\''d love to schedule a quick call. Does Thursday at 2pm work?"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.foxreach.io/api/v1/inbox/threads/rpl_abc123/reply",
      headers={"X-API-Key": "otr_your_key"},
      json={
          "body": "Thanks for your interest, John! I'd love to schedule a quick call. Does Thursday at 2pm work?"
      }
  )
  data = response.json()
  ```

  ```typescript TypeScript theme={null}
  const response = await fetch(
      "https://api.foxreach.io/api/v1/inbox/threads/rpl_abc123/reply",
      {
          method: "POST",
          headers: {
              "X-API-Key": "otr_your_key",
              "Content-Type": "application/json"
          },
          body: JSON.stringify({
              body: "Thanks for your interest, John! I'd love to schedule a quick call. Does Thursday at 2pm work?"
          })
      }
  );
  const data = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "data": {
      "success": true,
      "messageId": "<abc123@mail.yourcompany.com>"
    }
  }
  ```
</ResponseExample>

## Errors

| Status | Description                       |
| ------ | --------------------------------- |
| `400`  | Reply body is required            |
| `404`  | Thread not found                  |
| `500`  | Failed to send reply (SMTP error) |

## 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).
