> For the complete documentation index, see [llms.txt](https://docs.ilert.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ilert.com/developer-docs/rest-api/api-reference/chat-messages.md).

# Chat Messages

## GET /chat-channels/{channelId}/messages

> List the messages of the specified channel.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessage":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"externalCreatorName":{"type":"string","readOnly":true,"description":"The name of the author as it was submitted with the event. Only set when `authorType` is `EXTERNAL`."},"resolveComment":{"type":"boolean","readOnly":true,"description":"Set to true when the message was added while resolving the alert."},"thread":{"type":"boolean","readOnly":true,"description":"Set to true when the message has thread replies."},"threadMessageCount":{"type":"integer","readOnly":true},"lastReplyDate":{"type":"string","format":"date-time","readOnly":true},"lastReplyAuthorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"]},"lastReplyAuthorId":{"type":"integer","format":"int64","readOnly":true},"lastReplyBotName":{"type":"string","readOnly":true}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages":{"get":{"tags":["Chat Messages"],"summary":"List the messages of the specified channel.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}},{"name":"start-index","in":"query","description":"index of the first item to return","schema":{"type":"integer","default":0}},{"name":"max-results","in":"query","description":"maximum number of items to return","schema":{"maximum":100,"type":"integer","default":25}}],"responses":{"200":{"description":"the list of messages, newest first","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChatChannelMessage"}}}}}}}}}}
```

## POST /chat-channels/{channelId}/messages

> Create a new message in the specified channel. The author of the message is the user the API key or access token belongs to.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessage":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"externalCreatorName":{"type":"string","readOnly":true,"description":"The name of the author as it was submitted with the event. Only set when `authorType` is `EXTERNAL`."},"resolveComment":{"type":"boolean","readOnly":true,"description":"Set to true when the message was added while resolving the alert."},"thread":{"type":"boolean","readOnly":true,"description":"Set to true when the message has thread replies."},"threadMessageCount":{"type":"integer","readOnly":true},"lastReplyDate":{"type":"string","format":"date-time","readOnly":true},"lastReplyAuthorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"]},"lastReplyAuthorId":{"type":"integer","format":"int64","readOnly":true},"lastReplyBotName":{"type":"string","readOnly":true}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages":{"post":{"tags":["Chat Messages"],"summary":"Create a new message in the specified channel. The author of the message is the user the API key or access token belongs to.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"requestBody":{"description":"the message","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}},"responses":{"201":{"description":"the created message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}}}}}}}
```

## GET /chat-channels/{channelId}/messages/{id}

> Get the message with the specified id.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessage":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"externalCreatorName":{"type":"string","readOnly":true,"description":"The name of the author as it was submitted with the event. Only set when `authorType` is `EXTERNAL`."},"resolveComment":{"type":"boolean","readOnly":true,"description":"Set to true when the message was added while resolving the alert."},"thread":{"type":"boolean","readOnly":true,"description":"Set to true when the message has thread replies."},"threadMessageCount":{"type":"integer","readOnly":true},"lastReplyDate":{"type":"string","format":"date-time","readOnly":true},"lastReplyAuthorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"]},"lastReplyAuthorId":{"type":"integer","format":"int64","readOnly":true},"lastReplyBotName":{"type":"string","readOnly":true}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{id}":{"get":{"tags":["Chat Messages"],"summary":"Get the message with the specified id.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the message","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"responses":{"200":{"description":"the message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}}}}}}}
```

## PUT /chat-channels/{channelId}/messages/{id}

> Update the message with the specified id. Only the author of a message may update it.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessage":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"externalCreatorName":{"type":"string","readOnly":true,"description":"The name of the author as it was submitted with the event. Only set when `authorType` is `EXTERNAL`."},"resolveComment":{"type":"boolean","readOnly":true,"description":"Set to true when the message was added while resolving the alert."},"thread":{"type":"boolean","readOnly":true,"description":"Set to true when the message has thread replies."},"threadMessageCount":{"type":"integer","readOnly":true},"lastReplyDate":{"type":"string","format":"date-time","readOnly":true},"lastReplyAuthorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"]},"lastReplyAuthorId":{"type":"integer","format":"int64","readOnly":true},"lastReplyBotName":{"type":"string","readOnly":true}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{id}":{"put":{"tags":["Chat Messages"],"summary":"Update the message with the specified id. Only the author of a message may update it.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the message","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"requestBody":{"description":"the message","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}},"responses":{"200":{"description":"the updated message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}}}}}}}
```

## DELETE /chat-channels/{channelId}/messages/{id}

> Delete the message with the specified id. Messages are deleted softly: the message remains in the list with \`deleted\` set to true and its content replaced by a placeholder. Only the author of a message may delete it.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessage":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"externalCreatorName":{"type":"string","readOnly":true,"description":"The name of the author as it was submitted with the event. Only set when `authorType` is `EXTERNAL`."},"resolveComment":{"type":"boolean","readOnly":true,"description":"Set to true when the message was added while resolving the alert."},"thread":{"type":"boolean","readOnly":true,"description":"Set to true when the message has thread replies."},"threadMessageCount":{"type":"integer","readOnly":true},"lastReplyDate":{"type":"string","format":"date-time","readOnly":true},"lastReplyAuthorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"]},"lastReplyAuthorId":{"type":"integer","format":"int64","readOnly":true},"lastReplyBotName":{"type":"string","readOnly":true}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{id}":{"delete":{"tags":["Chat Messages"],"summary":"Delete the message with the specified id. Messages are deleted softly: the message remains in the list with `deleted` set to true and its content replaced by a placeholder. Only the author of a message may delete it.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the message","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"responses":{"200":{"description":"the deleted message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}}}}}}}
```

## POST /chat-channels/{channelId}/messages/{id}/reactions

> Add a reaction of the authenticated user to the message with the specified id. Reacting twice with the same code, or exceeding the limit of reaction codes per message, answers 400.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessageReactionRequest":{"type":"object","required":["code"],"properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."}}},"ChatChannelMessage":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"externalCreatorName":{"type":"string","readOnly":true,"description":"The name of the author as it was submitted with the event. Only set when `authorType` is `EXTERNAL`."},"resolveComment":{"type":"boolean","readOnly":true,"description":"Set to true when the message was added while resolving the alert."},"thread":{"type":"boolean","readOnly":true,"description":"Set to true when the message has thread replies."},"threadMessageCount":{"type":"integer","readOnly":true},"lastReplyDate":{"type":"string","format":"date-time","readOnly":true},"lastReplyAuthorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"]},"lastReplyAuthorId":{"type":"integer","format":"int64","readOnly":true},"lastReplyBotName":{"type":"string","readOnly":true}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{id}/reactions":{"post":{"tags":["Chat Messages"],"summary":"Add a reaction of the authenticated user to the message with the specified id. Reacting twice with the same code, or exceeding the limit of reaction codes per message, answers 400.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the message","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"requestBody":{"description":"the reaction","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessageReactionRequest"}}}},"responses":{"200":{"description":"the updated message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}}}}}}}
```

## DELETE /chat-channels/{channelId}/messages/{id}/reactions/{code}

> Remove the reaction of the authenticated user from the message with the specified id.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessage":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"externalCreatorName":{"type":"string","readOnly":true,"description":"The name of the author as it was submitted with the event. Only set when `authorType` is `EXTERNAL`."},"resolveComment":{"type":"boolean","readOnly":true,"description":"Set to true when the message was added while resolving the alert."},"thread":{"type":"boolean","readOnly":true,"description":"Set to true when the message has thread replies."},"threadMessageCount":{"type":"integer","readOnly":true},"lastReplyDate":{"type":"string","format":"date-time","readOnly":true},"lastReplyAuthorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"]},"lastReplyAuthorId":{"type":"integer","format":"int64","readOnly":true},"lastReplyBotName":{"type":"string","readOnly":true}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{id}/reactions/{code}":{"delete":{"tags":["Chat Messages"],"summary":"Remove the reaction of the authenticated user from the message with the specified id.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the message","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"code","in":"path","description":"the code of the reaction to remove, e.g. `thumbs_up`","required":true,"schema":{"type":"string"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"responses":{"200":{"description":"the updated message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessage"}}}}}}}}}
```

## GET /chat-channels/{channelId}/messages/{threadId}/thread-replies

> List the replies of the specified thread, newest first.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelThreadReply":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"threadId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the message this reply belongs to."}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{threadId}/thread-replies":{"get":{"tags":["Chat Messages"],"summary":"List the replies of the specified thread, newest first.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"threadId","in":"path","description":"the id of the message that opens the thread","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}},{"name":"start-index","in":"query","description":"index of the first item to return","schema":{"type":"integer","default":0}},{"name":"max-results","in":"query","description":"maximum number of items to return","schema":{"maximum":100,"type":"integer","default":25}}],"responses":{"200":{"description":"the list of thread replies","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}}}}}}}}
```

## POST /chat-channels/{channelId}/messages/{threadId}/thread-replies

> Reply to the specified message. The first reply turns the message into a thread. The author of the reply is the user the API key or access token belongs to.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelThreadReply":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"threadId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the message this reply belongs to."}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{threadId}/thread-replies":{"post":{"tags":["Chat Messages"],"summary":"Reply to the specified message. The first reply turns the message into a thread. The author of the reply is the user the API key or access token belongs to.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"threadId","in":"path","description":"the id of the message that opens the thread","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"requestBody":{"description":"the thread reply","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}},"responses":{"201":{"description":"the created thread reply","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}}}}}}}
```

## GET /chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}

> Get the thread reply with the specified id.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelThreadReply":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"threadId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the message this reply belongs to."}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}":{"get":{"tags":["Chat Messages"],"summary":"Get the thread reply with the specified id.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"threadId","in":"path","description":"the id of the message that opens the thread","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the thread reply","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"responses":{"200":{"description":"the thread reply","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}}}}}}}
```

## PUT /chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}

> Update the thread reply with the specified id. Only the author of a thread reply may update it.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelThreadReply":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"threadId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the message this reply belongs to."}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}":{"put":{"tags":["Chat Messages"],"summary":"Update the thread reply with the specified id. Only the author of a thread reply may update it.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"threadId","in":"path","description":"the id of the message that opens the thread","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the thread reply","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"requestBody":{"description":"the thread reply","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}},"responses":{"200":{"description":"the updated thread reply","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}}}}}}}
```

## DELETE /chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}

> Delete the thread reply with the specified id. Thread replies are deleted softly: the reply remains in the list with \`deleted\` set to true and its content replaced by a placeholder. Only the author of a thread reply may delete it.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelThreadReply":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"threadId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the message this reply belongs to."}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}":{"delete":{"tags":["Chat Messages"],"summary":"Delete the thread reply with the specified id. Thread replies are deleted softly: the reply remains in the list with `deleted` set to true and its content replaced by a placeholder. Only the author of a thread reply may delete it.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"threadId","in":"path","description":"the id of the message that opens the thread","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the thread reply","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"responses":{"200":{"description":"the deleted thread reply","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}}}}}}}
```

## POST /chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}/reactions

> Add a reaction of the authenticated user to the thread reply with the specified id. Reacting twice with the same code, or exceeding the limit of reaction codes per thread reply, answers 400.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelMessageReactionRequest":{"type":"object","required":["code"],"properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."}}},"ChatChannelThreadReply":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"threadId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the message this reply belongs to."}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}/reactions":{"post":{"tags":["Chat Messages"],"summary":"Add a reaction of the authenticated user to the thread reply with the specified id. Reacting twice with the same code, or exceeding the limit of reaction codes per thread reply, answers 400.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"threadId","in":"path","description":"the id of the message that opens the thread","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the thread reply","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"requestBody":{"description":"the reaction","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelMessageReactionRequest"}}}},"responses":{"200":{"description":"the updated thread reply","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}}}}}}}
```

## DELETE /chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}/reactions/{code}

> Remove the reaction of the authenticated user from the thread reply with the specified id.

```json
{"openapi":"3.0.1","info":{"title":"ilert REST API","version":"v2.2026.9-r.4"},"tags":[{"name":"Chat Messages"}],"servers":[{"url":"/api"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","description":"The Bearer API key of your user <a href='/api-docs/#section/Authentication'>more info</a>.","name":"Authorization","in":"header"}},"schemas":{"ChatChannelThreadReply":{"type":"object","required":["content","contentType"],"properties":{"id":{"type":"integer","format":"int64","readOnly":true},"created":{"type":"string","format":"date-time","readOnly":true},"updated":{"type":"string","format":"date-time","readOnly":true},"authorType":{"type":"string","readOnly":true,"enum":["USER","BOT","EXTERNAL"],"description":"Who wrote the message: a user of the account, an ilert bot, or an external author, e.g. when the message was submitted with an event."},"authorId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the user who wrote the message. Only set when `authorType` is `USER`."},"botName":{"type":"string","readOnly":true,"description":"The name of the bot that wrote the message. Only set when `authorType` is `BOT`."},"content":{"type":"string","maxLength":40000,"description":"The text of the message. Longer content is truncated."},"contentType":{"type":"string","enum":["TEXT"],"description":"The type of the content, currently only `TEXT` is supported."},"messageStyle":{"type":"string","readOnly":true,"enum":["DEFAULT"],"description":"How the message is meant to be rendered. Messages written by users always carry the style `DEFAULT`. ilert uses further styles internally, e.g. for the intermediate steps of its AI agents. If you display messages in your own interface, only render those with the style `DEFAULT`, otherwise internal styles may show up as regular messages."},"edited":{"type":"boolean","readOnly":true},"deleted":{"type":"boolean","readOnly":true,"description":"Set to true once the message has been deleted. The content is replaced by a placeholder."},"reactions":{"type":"array","readOnly":true,"description":"The reactions of the message, one entry per reaction code. Add and remove them through the reaction endpoints.","items":{"$ref":"#/components/schemas/ChatChannelMessageReaction"}},"threadId":{"type":"integer","format":"int64","readOnly":true,"description":"The id of the message this reply belongs to."}}},"ChatChannelMessageReaction":{"type":"object","properties":{"code":{"type":"string","description":"The emoji of the reaction, written as its name in lower case with underscores, e.g. `thumbs_up`, `red_heart`, `eyes` or `party_popper`. Use the same spelling as the ilert apps, so that the reactions of a message stay together."},"count":{"type":"integer","description":"The number of users and bots that reacted with this code."},"users":{"type":"array","description":"The ids of the users who reacted.","items":{"type":"integer","format":"int64"}},"bots":{"type":"array","description":"The ids of the bots that reacted.","items":{"type":"integer","format":"int64"}}}}}},"paths":{"/chat-channels/{channelId}/messages/{threadId}/thread-replies/{id}/reactions/{code}":{"delete":{"tags":["Chat Messages"],"summary":"Remove the reaction of the authenticated user from the thread reply with the specified id.","parameters":[{"name":"channelId","in":"path","description":"the id of the channel the messages belong to, for the channel type `ALERT` this is the id of the alert","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"threadId","in":"path","description":"the id of the message that opens the thread","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"path","description":"the id of the thread reply","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"code","in":"path","description":"the code of the reaction to remove, e.g. `thumbs_up`","required":true,"schema":{"type":"string"}},{"name":"channel-type","in":"query","description":"the type of the channel","required":true,"schema":{"type":"string","enum":["ALERT"]}}],"responses":{"200":{"description":"the updated thread reply","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatChannelThreadReply"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ilert.com/developer-docs/rest-api/api-reference/chat-messages.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
