React or unreact to a message
Add or remove an emoji reaction on a message. The reaction is applied on LinkedIn first; other connected clients/tabs are notified via WebSocket. Set react=true to add the reaction, react=false to remove it.
/conversations/{conversationUrn}/messages/{messageUrn}/reactCode Examples
curl -X POST 'https://api.connectsafely.ai/linkedin/conversations/<conversationUrn>/messages/<messageUrn>/react' \ -H 'Authorization: Bearer <your_api_key>' \ -H 'Content-Type: application/json' \ -d '{"emoji":"example_value","react":false}'Add or remove an emoji reaction on a message. The reaction is applied on LinkedIn first; other connected clients/tabs are notified via WebSocket. Set react=true to add the reaction, react=false to remove it.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
conversationUrn | path | Yes | string | Conversation URN (URL-encoded) |
messageUrn | path | Yes | string | URN of the message to react to (URL-encoded) |
accountId | query | No | string | LinkedIn account ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
emoji | string | Yes | Emoji to react with (e.g., "👍") |
react | boolean | Yes | true to add the reaction, false to remove it |
Example
{
"emoji": "example_value",
"react": false
}Responses
| Status | Description |
|---|---|
| 200 | Reaction applied |
| 400 | Reaction failed |
| 401 | Unauthorized |
| 404 | Account not found |
| 500 | Server error |
200 Response Parameters
| Name | Type | Description |
|---|---|---|
success | boolean | |
messageUrn | string | |
emoji | string | |
react | boolean |
200 Example
{
"success": true,
"messageUrn": "Hello! I would like to connect with you.",
"emoji": "example_value",
"react": true
}400 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
400 Example
{
"error": "example_value"
}401 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
401 Example
{
"error": "example_value"
}404 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
404 Example
{
"error": "example_value"
}500 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
500 Example
{
"error": "example_value"
}Delete (recall) a message
Recall a message you sent. The message is first recalled on LinkedIn (source of truth); only on success is it soft-deleted locally so a later sync never re-surfaces the recalled tombstone. Other connected clients/tabs are notified via WebSocket. Matching is by the prefix-independent normalized message id, so the stored row is removed even if it was synced under a different mailbox prefix.
Send message (with channel selection)
Send a LinkedIn message. By default, messagingChannel is "auto" which auto-detects whether to use Sales Navigator or standard LinkedIn inbox based on the account premium status. Users can explicitly control the messaging channel by setting messagingChannel to: "sales_navigator" — forces the message through the Sales Navigator API (returns a 400 error if the account does not have an active Sales Navigator subscription), or "linkedin_inbox" — forces standard LinkedIn messaging even if the account has Sales Navigator. Example: to send via standard inbox on a Sales Nav account, pass { "messagingChannel": "linkedin_inbox" }. To explicitly use Sales Navigator, pass { "messagingChannel": "sales_navigator" }. If omitted or set to "auto", the system decides automatically. Supports file attachments.
