c.l.cladDocs

Replies

Post customer-facing replies or internal notes to an issue thread.

Post a customer-facing reply or an internal note to an issue thread.

mutation Reply($input: ReplyToIssueInput!) {
  replyToIssue(input: $input) {
    messageId
    delivery
    error { code message }
  }
}
{
  "input": {
    "issueId": "<issue-id>",
    "body": "Thanks for reaching out — we've reset your password.",
    "isInternal": false
  }
}
  • Set isInternal: true for a note only your team can see.
  • delivery reports how the reply was sent: in_thread (recorded only) or an egress status (pending / delivered / failed), depending on the issue's source channel and your integration's reply-delivery configuration.
  • For issues created through this API, outbound delivery is configured in Settings → API → Outbound replies: choose no outbound replies, email from Clad, or a signed webhook event.

Requires the thread:reply scope.

Replying on helpdesk-mirrored tickets

If the workspace has Pylon or Zendesk connected, tickets mirrored from the helpdesk are regular issues in this API — but replies to them are delivered into the helpdesk itself, as the connected support seat. delivery returns pylon or zendesk on success (pylon_deduplicated / zendesk_deduplicated when an identical retry was already sent — the send is idempotent, so retrying never double-posts).

Delivery is all-or-nothing: if the helpdesk rejects the reply, the mutation returns an error and nothing is recorded. Two errors are worth handling:

  • FORBIDDEN — the connection is in Observe mode (Clad never writes to the helpdesk) or paused. An admin can switch it to Assist in Settings → Integrations.
  • CONFLICT — the same reply is already being sent by a concurrent request.

Internal notes (isInternal: true) stay in Clad and are never written to the helpdesk.