Docs / Messages
send_chat_message
Send a message into one conversation, with files, a voice note or a video note, or as an answer to one message.
This action can change or spend something, and when it does it happens right away. Read “Good to know” first.
What you give it
| Input | What it is | Where to get it |
|---|---|---|
chatIdneeded | A chat id. The conversation id (from list_chats). | Run list_chats and use chats[].id from its answer.12 more places to get it
|
textoptional | Text, up to 8000 characters. The message text. Optional when a file or note is sent. | You write it. |
attachmentUrlsoptional | A list (a link), up to 9. Files or images to attach. Public https links; each file up to 10 MB, 20 MB in total. | You write it. |
voiceMessageUrloptional | A link. An audio file to send as a voice note (.m4a preferred). A public https link, up to 10 MB. | You write it. |
videoMessageUrloptional | A link. A video file to send as a video note. A public https link, up to 10 MB. | You write it. |
replyToMessageIdoptional | A message id. Quote and answer this message of the conversation. | Run list_chat_messages and use messages[].id from its answer.7 more places to get it
|
connectionIdoptional | 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/send_chat_message \
-H "Authorization: Bearer YOUR_KEY" \
-H "content-type: application/json" \
-d '{"chatId":"PASTE_CHAT_ID_HERE","text":"Hello!"}'The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/send_chat_message", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_KEY",
"content-type": "application/json",
},
body: JSON.stringify({
"chatId": "PASTE_CHAT_ID_HERE",
"text": "Hello!"
}),
});
const answer = await response.json();
console.log(answer);The same call in Python
import requests
response = requests.post(
"https://api.heyreagent.com/v1/actions/send_chat_message",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"chatId": "PASTE_CHAT_ID_HERE",
"text": "Hello!",
},
)
print(response.json())The same call in n8n
Add an HTTP Request node and fill it in like this:
| Method | POST |
| URL | https://api.heyreagent.com/v1/actions/send_chat_message |
| Send Headers | On. Name Authorization, Value Bearer YOUR_KEY |
| Send Body | On. Body Content Type JSON, Specify Body Using JSON, then paste the body below |
{
"chatId": "PASTE_CHAT_ID_HERE",
"text": "Hello!"
}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:
sent | |
chatId | A chat id. Other actions take it. |
messageId | A message id. Other actions take it. |
from | the account it ran on |
usedToday | number |
dailyLimit | number |
A field that does not apply to an answer is left out, or is null.
When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.
Good to know
- Pass text, a file, a voice note or a video note: at least one.
- It sends into any conversation of yours, an InMail one too (chatId from list_inmail). It does not check whether the conversation takes replies, nor that the account is on the Sales Navigator contract the conversation was started on.
In Claude or ChatGPT
Once connected, ask in your own words. The assistant sees this action as a tool with the same name, send_chat_message, and the same inputs.