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

# Create an internal note on an issue

`POST /issues/{id}/note`

Posts an internal note on an issue thread. Not visible to the requester.

Thread selection:

* If thread_id is provided, posts to that internal thread.

* If message_id is provided, posts to the thread containing that internal note.

* Providing both thread_id and message_id returns a 400 response.

* If neither is provided, posts to the most recently created Slack-backed internal thread. If none exists, creates a Pylon-only internal thread.

* thread_name names that newly created Pylon-only thread and is otherwise ignored.

Empty thread_id, message_id, and thread_name values are treated as omitted.

**Rate limit:** 10 requests per minute

## Path parameters

- `id` string, required

## Request body

- CreateIssueNoteRequestBody
  - `attachment_urls` string[] — URLs of files to attach to this internal note.
  - `body_html` string, required — The body of the message in HTML.
  - `message_id` string — The ID of an internal note whose thread should receive the new note. Use the top-level `id` from GET /issues/{id}/messages. Cannot be combined with thread_id.
  - `thread_id` string — The ID of the internal thread to post the note to. Use the `id` field (not `thread_id`) from GET /issues/{id}/threads. Cannot be combined with message_id.
  - `thread_name` string — Optional name for a new Pylon-only internal thread. Used only when neither thread_id nor message_id is provided and no Slack-backed internal thread exists.
  - `user_id` string — Optional user ID to post the message as. If not provided, the API token user will be used.

## Response `200`

- CreateIssueNoteResponseBody
  - `data` CreateIssueNoteResponseData
    - `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)
