Docs / Messages

get_message

Read one message.

This action only reads. It changes nothing, so it is safe to try.

What you give it

InputWhat it isWhere to get it
messageId
needed
A message id. The message id (from list_chat_messages).Run list_chat_messages and use messages[].id from its answer.
7 more places to get it
connectionId
optional
A connection id. Which of your LinkedIn accounts to act from (its id from list_linkedin_accounts). Omit to use your first live one.Run list_linkedin_accounts and use accounts[].id from its answer.
15 more places to get it

Call it

curl -X POST https://api.heyreagent.com/v1/actions/get_message \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{"messageId":"PASTE_MESSAGE_ID_HERE"}'
The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/get_message", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_KEY",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "messageId": "PASTE_MESSAGE_ID_HERE"
  }),
});
const answer = await response.json();
console.log(answer);
The same call in Python
import requests

response = requests.post(
    "https://api.heyreagent.com/v1/actions/get_message",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={
        "messageId": "PASTE_MESSAGE_ID_HERE",
    },
)
print(response.json())
The same call in n8n

Add an HTTP Request node and fill it in like this:

MethodPOST
URLhttps://api.heyreagent.com/v1/actions/get_message
Send HeadersOn. Name Authorization, Value Bearer YOUR_KEY
Send BodyOn. Body Content Type JSON, Specify Body Using JSON, then paste the body below
{
  "messageId": "PASTE_MESSAGE_ID_HERE"
}

Put your own key where it says YOUR_KEY. Put your own value where it says PASTE_…_HERE: the table above says where each one comes from. New here? Start with your first call.

What you get back

When it worked, the answer is { "ok": true, "result": { … } }. Inside result:

messageIdstring
providerIdstring
senderIdA member id. Other actions take it.
textstring or null
attachments[].idA attachment id. Other actions take it.
attachments[].fileSizenumber
attachments[].unavailableboolean
attachments[].mimetypestring
attachments[].urlstring
attachments[].urlExpiresAtnumber
attachments[].typepoll
attachments[].stickerboolean
attachments[].gifboolean
attachments[].durationnumber
attachments[].voiceNoteboolean
attachments[].fileNamestring
attachments[].startsAtnumber or null
attachments[].expiresAtnumber or null
attachments[].timeRangenumber or null
attachments[].displayNamestring or null
attachments[].organizationstring or null
idA message id. Other actions take it.
chatIdA chat id. Other actions take it.
chatProviderIdstring
timestampstring
isSender0 | 1
quoted.messageIdstring
quoted.providerIdstring
quoted.senderIdstring
quoted.textstring or null
isForwardedboolean
isViewOnceboolean
reactions[].valuestring
reactions[].senderIdstring
reactions[].isSenderboolean
seen0 | 1
hidden0 | 1
deleted0 | 1
edited0 | 1
isEvent0 | 1
delivered0 | 1
behavior0 or null
eventType0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
originalstring
repliesnumber
replyBystring[]
parentstring
senderAttendeeIdA attendee id. Other actions take it.
subjectstring or null
messageTypeMESSAGE | INVITATION | INMAIL | INMAIL_DECLINE | INMAIL_REPLY | INMAIL_ACCEPT | STORY_MENTION | STORY_REPLY | CONTACT
attendeeTypeMEMBER | ORGANIZATION | OTHER
attendeeDistance1 | 2 | 3 | 4 | -1
senderUrnstring
replyTo.idstring
replyTo.providerIdstring
replyTo.timestampstring
replyTo.senderAttendeeIdstring
replyTo.senderIdstring
replyTo.textstring or null

A field that does not apply to an answer is left out, or is null. There are 97 more fields nested inside these.

When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.

In Claude or ChatGPT

Once connected, ask in your own words. The assistant sees this action as a tool with the same name, get_message, and the same inputs.