---
{
  "id": "platform.message.overview",
  "topic": "message",
  "title": "Message actions and immediate delivery",
  "locale": "en",
  "version": "2026-08-25",
  "summary": "Message actions read and navigate chat history, send or forward messages, and manage reactions and pins; delayed delivery belongs to Automation.",
  "content": "The live Message family reads, searches, and positionally navigates history; reads attachments; sends, edits, or confirmed-soft-deletes Agent messages; adds/lists/removes reactions; lists, pins, or unpins messages; and forwards a source message or attributed text after confirmation. `list_messages` accepts mutually exclusive before/after/around message cursors or a local date plus timezone offset. Pinning has an important visible side effect: it inserts a system message into the conversation.\n\nAn action send is an extra proactive post, marked by the runtime as `action_send_message`. It is different from the Agent's normal streamed reply, so do not call it merely to duplicate the response being composed for the current turn. A successful live call has action-envelope `status: completed`; `send_message` returns its `messageId` and conversation-local `seq`. Every Message action gates its target to the executing Agent's accessible non-email conversations. An inaccessible target returns `resource_not_found`, which deliberately does not prove whether the resource exists.\n\nDry-run returns `wouldSend` and writes nothing; describe that separately from live success. `send_message` is immediate only. A request to post later or on a schedule belongs to Cron with a `conversation_message` target. A request to post after a resource event belongs to Trigger. Knowledge never promises delayed execution without the corresponding Automation action and runtime result.\n",
  "aliases": [
    "message",
    "chat history",
    "send a message",
    "search messages",
    "post to a conversation",
    "delayed message"
  ],
  "tags": [
    "message",
    "overview",
    "delivery"
  ],
  "relatedActions": [
    "arinova.message.list_messages",
    "arinova.message.get_message",
    "arinova.message.search_messages",
    "arinova.message.send_message"
  ],
  "relatedActionPrefixes": [
    "arinova.message."
  ],
  "url": "https://docs.arinova.ai/en/kb/message/overview/"
}
---

The live Message family reads, searches, and positionally navigates history; reads attachments; sends, edits, or confirmed-soft-deletes Agent messages; adds/lists/removes reactions; lists, pins, or unpins messages; and forwards a source message or attributed text after confirmation. `list_messages` accepts mutually exclusive before/after/around message cursors or a local date plus timezone offset. Pinning has an important visible side effect: it inserts a system message into the conversation.

An action send is an extra proactive post, marked by the runtime as `action_send_message`. It is different from the Agent's normal streamed reply, so do not call it merely to duplicate the response being composed for the current turn. A successful live call has action-envelope `status: completed`; `send_message` returns its `messageId` and conversation-local `seq`. Every Message action gates its target to the executing Agent's accessible non-email conversations. An inaccessible target returns `resource_not_found`, which deliberately does not prove whether the resource exists.

Dry-run returns `wouldSend` and writes nothing; describe that separately from live success. `send_message` is immediate only. A request to post later or on a schedule belongs to Cron with a `conversation_message` target. A request to post after a resource event belongs to Trigger. Knowledge never promises delayed execution without the corresponding Automation action and runtime result.
