POST
/tickets/{ticketId}/noteAdd an internal note to a ticket
Add an agent-only internal note (never visible to the requester).
Parameters
| Name | In | Type | Description |
|---|---|---|---|
ticketIdrequired | path | string | Ticket ID |
Request body
| Field | Type | Description |
|---|---|---|
contentrequired | string | Message body as markdown |
attachments | object[] |
Response
Note created
| Field | Type | Description |
|---|---|---|
idrequired | string | TypeID - a type-prefixed UUID |
ticketIdrequired | string | TypeID - a type-prefixed UUID |
senderTyperequired | "visitor" | "agent" | "system" | Who sent the message |
isInternalrequired | boolean | Whether this is an internal teammate note not visible to the requester |
authorPrincipalIdrequired | string | null | Principal ID of the author, null for system messages |
authorNamerequired | stringnull | Display name of the author, null for system messages |
contentrequired | string | Markdown content. Derived from contentJson when it carries an image (restores `` that plain markdown storage would otherwise lose), else the stored text verbatim. |
contentJsonrequired | object | null | Rich text content as TipTap JSON, null for plain-text messages |
attachmentsrequired | object[] | null | Image/file attachments, null if none |
createdAtrequired | string | ISO 8601 timestamp |
Errors
400Validation error401Unauthorized404Ticket not foundExample request
curl \
-X POST \
"https://feedback.quackback.io/api/v1/tickets/:ticketId/note" \
-H "Authorization: Bearer qb_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"content": "example_content",
"attachments": []
}'