---
title: "Create a thread on an issue"
method: POST
path: "/issues/{id}/threads"
tags: ["messages"]
---

# Create a thread on an issue

`POST /issues/{id}/threads`

Creates a new internal thread on an issue.

**Rate limit:** 120 requests per minute

## Path parameters

- `id` string, required

## Request body

- CreateIssueThreadRequestBody
  - `name` string — The name of the thread.
  - `slack_channel_id` string — The Slack channel ID to sync the thread to. When slack_thread_ts is also provided, links that existing Slack thread. Otherwise, creates a new Slack-backed thread. Linking an existing Slack thread imports its message history and enables ongoing synchronization. Creating or linking a Slack-backed thread requires an API token configured to act as a human Pylon user whose verified Slack identity is a member of the channel. Pylon bot users and standalone API identities are not supported because they do not have Slack-verifiable channel membership.
  - `slack_thread_ts` string — The root message timestamp of an existing Slack thread to link. Requires slack_channel_id.

## Response `200`

- CreateIssueThreadResponseBody
  - `data` IssueThread — A thread of notes on an issue, for internal discussions not visible to the customer. Threads can be created manually through the UI or from triggers. If a channel ID is set, this thread is being synced with a chat platform.
    - `channel_id` string — The ID of the channel that the thread belongs to, if the thread is being synced with a chat platform.
    - `id` string — The ID of the thread.
    - `issue_id` string — The issue ID that the thread belongs to.
    - `name` string — The name of the thread.
    - `source` string — The source of the thread.
    - `thread_id` string — The ID of the thread that the thread belongs to, if the thread is being synced with a chat platform. A thread ID for Slack would be the thread timestamp.
  - `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.

## Changes

> 22 revisions in range; 13 could not be searched.

- **2026-08-18** `b387b041ea8e` — 2 info
  - added the new optional request property `slack_channel_id`
  - added the new optional request property `slack_thread_ts`

[Change history](https://skmtc.dev/usepylon/apis/pylon-api/changes/issues/:id/threads/post.md)

---

[API](https://skmtc.dev/usepylon/apis/pylon-api.md) · [All operations](https://skmtc.dev/usepylon/apis/pylon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/usepylon/pylon-api/revisions/7b12ab92de27/schema)
