---
title: "Reply to an issue"
method: POST
path: "/issues/{id}/reply"
tags: ["messages"]
---

# Reply to an issue

`POST /issues/{id}/reply`

Sends a customer-facing reply on an issue, visible to the requester.

message_id is required to identify which existing customer-visible conversation or thread to continue. Use the top-level message id returned by GET /issues/{id}/messages; do not use an external provider's message ID or the nested email_info.message_id value.

For an email conversation, email_info must contain at least one recipient across to_emails, cc_emails, and bcc_emails. The referenced message controls email threading, but its recipients are not copied automatically.

**Rate limit:** 10 requests per minute

## Path parameters

- `id` string, required

## Request body

- CreateIssueReplyRequestBody
  - `attachment_urls` string[] — URLs of files to attach to this reply.
  - `body_html` string, required — The body of the message in HTML.
  - `contact_id` string — Optional contact ID to post the message as. Only one of user_id or contact_id can be provided.
  - `custom_source` CustomSourceInfo
    - `created_at` string — The timestamp of when the message was created in the external system. (RFC3339)
    - `external_id` string, required — The external ID of this message in the custom system.
    - `metadata` object — Arbitrary metadata to store with the message.
  - `email_info` CreateIssueReplyEmailInfo — Recipient information for replies to email conversations. Provide at least one address across to_emails, cc_emails, and bcc_emails. Recipients are not inferred from the referenced message.
    - `bcc_emails` string[] — The blind-carbon-copy recipients of the email reply.
    - `cc_emails` string[] — The carbon-copy recipients of the email reply.
    - `to_emails` string[] — The primary recipients of the email reply.
  - `message_id` string, required — The top-level Pylon message ID to reply to, from the `id` field returned by GET /issues/{id}/messages. The message must belong to the issue in the request path and must be customer-visible, not an internal note. This selects the external conversation or thread where the reply is delivered. For email, it also sets the In-Reply-To and References chain. Do not use a provider-specific message ID or email_info.message_id.
  - `user_id` string — Optional user ID to post the message as. Only one of user_id or contact_id can be provided.

## Response `200`

- CreateIssueReplyResponseBody
  - `data` CreateIssueReplyResponseData
    - `id` string — The ID of the message.
    - `issue_id` string — The ID of the issue.
  - `request_id` string — The request ID for tracking.

## Other responses

- `400` — The request was invalid or could not be completed.
- `403` — The authenticated caller or organization is not allowed to access this endpoint or operation.
- `404`
- `500` — An unexpected internal error occurred.

---

[API](https://skmtc.net/usepylon/apis/pylon-api.md) · [All operations](https://skmtc.net/usepylon/apis/pylon-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/usepylon/pylon-api/versions/999c51740b4e/schema)
