Get Conversation
curl --request POST \
--url https://api.linkupapi.com/v2/messages \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"conversation_id": "<string>",
"profile_url": "<string>",
"phone_number": "<string>",
"count": 123,
"cursor": "<string>",
"mark_as_read": true,
"sales_nav": true
}
}
'import requests
url = "https://api.linkupapi.com/v2/messages"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": {
"conversation_id": "<string>",
"profile_url": "<string>",
"phone_number": "<string>",
"count": 123,
"cursor": "<string>",
"mark_as_read": True,
"sales_nav": True
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {
conversation_id: '<string>',
profile_url: '<string>',
phone_number: '<string>',
count: 123,
cursor: '<string>',
mark_as_read: true,
sales_nav: true
}
})
};
fetch('https://api.linkupapi.com/v2/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'conversation_id' => '<string>',
'profile_url' => '<string>',
'phone_number' => '<string>',
'count' => 123,
'cursor' => '<string>',
'mark_as_read' => true,
'sales_nav' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/messages"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"conversation_id\": \"<string>\",\n \"profile_url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"count\": 123,\n \"cursor\": \"<string>\",\n \"mark_as_read\": true,\n \"sales_nav\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/messages")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"conversation_id\": \"<string>\",\n \"profile_url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"count\": 123,\n \"cursor\": \"<string>\",\n \"mark_as_read\": true,\n \"sales_nav\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"conversation_id\": \"<string>\",\n \"profile_url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"count\": 123,\n \"cursor\": \"<string>\",\n \"mark_as_read\": true,\n \"sales_nav\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"total_message_count": 55,
"unread_count": 0,
"last_seen_message": true,
"last_seen_at": 1777147641366,
"messages": [
{
"text": "Sounds good, talk soon!",
"timestamp": 1777147641366,
"sender": "Jane Doe",
"sender_info": {
"first_name": "Jane",
"last_name": "Doe",
"profile_url": "https://www.linkedin.com/in/jane-doe-42/"
},
"message_type": "TEXT",
"entity_urn": "urn:li:msg_message:(urn:li:fsd_profile:ACoAA...,2-MTc3NzE0...)",
"has_attachments": false,
"attachments": []
},
{
"text": "",
"timestamp": 1777146492678,
"sender": "John Smith",
"sender_info": {
"first_name": "John",
"last_name": "Smith",
"profile_url": "https://www.linkedin.com/in/john-smith-99/"
},
"message_type": "MEDIA",
"entity_urn": "urn:li:msg_message:(urn:li:fsd_profile:ACoAA...,2-MTc3NzE0...)",
"has_attachments": true,
"attachments": [
{
"type": "file",
"url": "https://www.linkedin.com/dms/prv/document/...",
"name": "proposal.pdf",
"mime_type": "application/pdf",
"byte_size": 184320,
"asset_urn": "urn:li:digitalmediaAsset:D4E06AQ...",
"download_url": "https://api.linkupapi.com/v2/messages/attachment?account_id=...&conversation_id=...&asset_urn=..."
}
]
}
],
"next_cursor": "1777146285823"
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": true,
"data": {
"conversation_id": "2-OTQwMTJlODEtOTUxMy00NGNlLWIyNmQtMDJjYTU4MmQyMTcxXzEwMA==",
"total_message_count": 8,
"unread_count": 0,
"archived": false,
"type": "inmail",
"participants": [
{
"name": "Jessica Jensen",
"first_name": "Jessica",
"last_name": "Jensen",
"profile_url": "https://www.linkedin.com/in/ACwAAA...",
"sales_nav_url": "https://www.linkedin.com/sales/lead/ACwAAA...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,NAME_SEARCH,JUf-)",
"profile_picture": "https://media.licdn.com/...",
"connection_level": "2",
"is_me": false
}
],
"messages": [
{
"text": "Thanks for reaching out. I'd like to learn more.",
"timestamp": 1785236943298,
"sender": "Jessica Jensen",
"sender_info": {
"first_name": "Jessica",
"last_name": "Jensen",
"profile_url": "https://www.linkedin.com/in/ACwAAA...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,NAME_SEARCH,JUf-)",
"is_me": false
},
"message_type": "INMAIL_ACCEPT",
"entity_urn": "2-MTc4NTIzNjk0MzI5OGI1ODI2Ni0xMDAm..."
},
{
"text": "Hi Jessica — quick question about your team's stack.",
"timestamp": 1785231247240,
"sender": "Your Name",
"sender_info": {
"first_name": "Your",
"last_name": "Name",
"profile_url": "https://www.linkedin.com/in/ACwAADx...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAADx...,NAME_SEARCH,X3dd)",
"is_me": true
},
"message_type": "INMAIL",
"entity_urn": "2-MTc4NTIzMTI0NzI0MGI5MDM1My0xMDAm...",
"subject": "Quick question"
}
]
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-28T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Either conversation_id or profile_url is required."
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Messaging
Get Conversation
Retrieve messages from a specific conversation.
POST
/
v2
/
messages
Get Conversation
curl --request POST \
--url https://api.linkupapi.com/v2/messages \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"conversation_id": "<string>",
"profile_url": "<string>",
"phone_number": "<string>",
"count": 123,
"cursor": "<string>",
"mark_as_read": true,
"sales_nav": true
}
}
'import requests
url = "https://api.linkupapi.com/v2/messages"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": {
"conversation_id": "<string>",
"profile_url": "<string>",
"phone_number": "<string>",
"count": 123,
"cursor": "<string>",
"mark_as_read": True,
"sales_nav": True
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {
conversation_id: '<string>',
profile_url: '<string>',
phone_number: '<string>',
count: 123,
cursor: '<string>',
mark_as_read: true,
sales_nav: true
}
})
};
fetch('https://api.linkupapi.com/v2/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'conversation_id' => '<string>',
'profile_url' => '<string>',
'phone_number' => '<string>',
'count' => 123,
'cursor' => '<string>',
'mark_as_read' => true,
'sales_nav' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/messages"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"conversation_id\": \"<string>\",\n \"profile_url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"count\": 123,\n \"cursor\": \"<string>\",\n \"mark_as_read\": true,\n \"sales_nav\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/messages")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"conversation_id\": \"<string>\",\n \"profile_url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"count\": 123,\n \"cursor\": \"<string>\",\n \"mark_as_read\": true,\n \"sales_nav\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"conversation_id\": \"<string>\",\n \"profile_url\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"count\": 123,\n \"cursor\": \"<string>\",\n \"mark_as_read\": true,\n \"sales_nav\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"total_message_count": 55,
"unread_count": 0,
"last_seen_message": true,
"last_seen_at": 1777147641366,
"messages": [
{
"text": "Sounds good, talk soon!",
"timestamp": 1777147641366,
"sender": "Jane Doe",
"sender_info": {
"first_name": "Jane",
"last_name": "Doe",
"profile_url": "https://www.linkedin.com/in/jane-doe-42/"
},
"message_type": "TEXT",
"entity_urn": "urn:li:msg_message:(urn:li:fsd_profile:ACoAA...,2-MTc3NzE0...)",
"has_attachments": false,
"attachments": []
},
{
"text": "",
"timestamp": 1777146492678,
"sender": "John Smith",
"sender_info": {
"first_name": "John",
"last_name": "Smith",
"profile_url": "https://www.linkedin.com/in/john-smith-99/"
},
"message_type": "MEDIA",
"entity_urn": "urn:li:msg_message:(urn:li:fsd_profile:ACoAA...,2-MTc3NzE0...)",
"has_attachments": true,
"attachments": [
{
"type": "file",
"url": "https://www.linkedin.com/dms/prv/document/...",
"name": "proposal.pdf",
"mime_type": "application/pdf",
"byte_size": 184320,
"asset_urn": "urn:li:digitalmediaAsset:D4E06AQ...",
"download_url": "https://api.linkupapi.com/v2/messages/attachment?account_id=...&conversation_id=...&asset_urn=..."
}
]
}
],
"next_cursor": "1777146285823"
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": true,
"data": {
"conversation_id": "2-OTQwMTJlODEtOTUxMy00NGNlLWIyNmQtMDJjYTU4MmQyMTcxXzEwMA==",
"total_message_count": 8,
"unread_count": 0,
"archived": false,
"type": "inmail",
"participants": [
{
"name": "Jessica Jensen",
"first_name": "Jessica",
"last_name": "Jensen",
"profile_url": "https://www.linkedin.com/in/ACwAAA...",
"sales_nav_url": "https://www.linkedin.com/sales/lead/ACwAAA...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,NAME_SEARCH,JUf-)",
"profile_picture": "https://media.licdn.com/...",
"connection_level": "2",
"is_me": false
}
],
"messages": [
{
"text": "Thanks for reaching out. I'd like to learn more.",
"timestamp": 1785236943298,
"sender": "Jessica Jensen",
"sender_info": {
"first_name": "Jessica",
"last_name": "Jensen",
"profile_url": "https://www.linkedin.com/in/ACwAAA...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,NAME_SEARCH,JUf-)",
"is_me": false
},
"message_type": "INMAIL_ACCEPT",
"entity_urn": "2-MTc4NTIzNjk0MzI5OGI1ODI2Ni0xMDAm..."
},
{
"text": "Hi Jessica — quick question about your team's stack.",
"timestamp": 1785231247240,
"sender": "Your Name",
"sender_info": {
"first_name": "Your",
"last_name": "Name",
"profile_url": "https://www.linkedin.com/in/ACwAADx...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAADx...,NAME_SEARCH,X3dd)",
"is_me": true
},
"message_type": "INMAIL",
"entity_urn": "2-MTc4NTIzMTI0NzI0MGI5MDM1My0xMDAm...",
"subject": "Quick question"
}
]
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-28T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Either conversation_id or profile_url is required."
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Overview
Returns messages from a specific conversation, ordered from most recent to oldest. Identify the conversation byconversation_id or by passing a profile_url (the conversation with that user is resolved automatically). Pagination is cursor-based — pass the next_cursor returned by a previous call to fetch older messages.
This endpoint consumes 1 credit per 10 messages returned. Ignore this if you’re on per-seat pricing: usage is unlimited.
For an email mailbox, pass the
conversation_id from List Inbox to fetch the whole thread. The response keeps the same shape (messages[], total_message_count, next_cursor), each email mapped to a message — sender_info carries { name, email, is_me }, and each message adds id (provider message id), subject, message_id, and has_attachments / attachments[] ({ filename, mime_type, size, attachment_id, message_id }, downloadable via the attachment endpoint). Gmail and Outlook are supported; generic IMAP falls back to the inbox listing.Request
string
required
Your API key for authentication.
string
required
The unique identifier of the account to use.
string
required
Must be
"get_conversation".object
required
Show params properties
Show params properties
string
Unique identifier of the conversation, as returned by other endpoints. Treat it as an opaque string and pass it back exactly as returned. Required if
profile_url is not provided.string
URL of the other participant’s profile on the connected platform. When provided, the conversation with this user is resolved automatically. Required if
conversation_id is not provided.string
(WhatsApp) The contact’s number, instead of
conversation_id.integer
default:10
Number of messages to return. Defaults to
10.string
Cursor returned by a previous response as
data.next_cursor. Omit for the first page (most recent messages).boolean
true marks the conversation as read on LinkedIn after fetching it, false marks it as unread. Omit to leave the read state unchanged. Not available with sales_nav.boolean
default:false
Read a Sales Nav thread instead of a classic conversation. See Sales Nav conversations below.
Response
boolean
Indicates whether the request was successful.
object
Show data properties
Show data properties
integer
Total number of messages in the conversation (across all pages).
integer
Number of unread messages in the conversation, as it was before this call.
boolean
Read state applied when
mark_as_read was sent. If LinkedIn refused the change, mark_as_read_error is returned instead and the messages are still delivered.boolean
true when the most recent message in this batch has been read by the recipient.integer
Unix epoch timestamp in milliseconds when the recipient last read the conversation. Omitted if no read receipt is available.
array
Messages from the conversation, sorted most recent first.
Show message properties
Show message properties
string
Plain-text body of the message.
integer
Unix epoch timestamp in milliseconds when the message was delivered.
string
Display name of the sender.
object
string
Message type. Common values:
"TEXT", "INVITATION", "SHARED_POST".string
Unique identifier of the message. Treat it as an opaque string and pass it back exactly as returned.
boolean
true when the message carries at least one image, file, voice note, video or GIF.array
One entry per attachment, empty when there are none. Same shape as in webhook message events:
type (image, file, audio, video, gif), url (signed LinkedIn URL, private and short-lived), name, mime_type, byte_size, asset_urn, and download_url — a stable URL on Download Attachment that streams the bytes on demand (1 credit).string
Cursor (epoch-ms timestamp of the oldest message in this batch) to send as
cursor in the next request to fetch older messages. Omitted when there are no more messages.object
Sales Nav conversations
Setsales_nav: true and pass the Sales Nav thread id — from List Inbox with sales_nav: true, or the threadId returned when the InMail was sent. profile_url is not supported, so conversation_id is required.
Messages keep the classic shape and order (newest first), plus:
sender_info.is_meandsender_info.recipient_urnsubjectandattachments, only when present — attachments use the same shape as in webhook message events, fetched via Download Attachmentcontent_flag—DELETEDwhen the message was deleted;textis then emptyedited_at— only on edited messagesmessage_type:INMAIL,INMAIL_ACCEPT,INMAIL_REPLY,MESSAGE
last_seen_message is replaced by conversation_id, type, archived and participants (everyone but you).
Sales Nav has no message cursor: a thread returns its
count most recent messages and never issues a next_cursor (cursor is ignored). To read further back, raise count — compare it with total_message_count to know whether you have the whole thread.{
"success": true,
"data": {
"total_message_count": 55,
"unread_count": 0,
"last_seen_message": true,
"last_seen_at": 1777147641366,
"messages": [
{
"text": "Sounds good, talk soon!",
"timestamp": 1777147641366,
"sender": "Jane Doe",
"sender_info": {
"first_name": "Jane",
"last_name": "Doe",
"profile_url": "https://www.linkedin.com/in/jane-doe-42/"
},
"message_type": "TEXT",
"entity_urn": "urn:li:msg_message:(urn:li:fsd_profile:ACoAA...,2-MTc3NzE0...)",
"has_attachments": false,
"attachments": []
},
{
"text": "",
"timestamp": 1777146492678,
"sender": "John Smith",
"sender_info": {
"first_name": "John",
"last_name": "Smith",
"profile_url": "https://www.linkedin.com/in/john-smith-99/"
},
"message_type": "MEDIA",
"entity_urn": "urn:li:msg_message:(urn:li:fsd_profile:ACoAA...,2-MTc3NzE0...)",
"has_attachments": true,
"attachments": [
{
"type": "file",
"url": "https://www.linkedin.com/dms/prv/document/...",
"name": "proposal.pdf",
"mime_type": "application/pdf",
"byte_size": 184320,
"asset_urn": "urn:li:digitalmediaAsset:D4E06AQ...",
"download_url": "https://api.linkupapi.com/v2/messages/attachment?account_id=...&conversation_id=...&asset_urn=..."
}
]
}
],
"next_cursor": "1777146285823"
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": true,
"data": {
"conversation_id": "2-OTQwMTJlODEtOTUxMy00NGNlLWIyNmQtMDJjYTU4MmQyMTcxXzEwMA==",
"total_message_count": 8,
"unread_count": 0,
"archived": false,
"type": "inmail",
"participants": [
{
"name": "Jessica Jensen",
"first_name": "Jessica",
"last_name": "Jensen",
"profile_url": "https://www.linkedin.com/in/ACwAAA...",
"sales_nav_url": "https://www.linkedin.com/sales/lead/ACwAAA...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,NAME_SEARCH,JUf-)",
"profile_picture": "https://media.licdn.com/...",
"connection_level": "2",
"is_me": false
}
],
"messages": [
{
"text": "Thanks for reaching out. I'd like to learn more.",
"timestamp": 1785236943298,
"sender": "Jessica Jensen",
"sender_info": {
"first_name": "Jessica",
"last_name": "Jensen",
"profile_url": "https://www.linkedin.com/in/ACwAAA...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,NAME_SEARCH,JUf-)",
"is_me": false
},
"message_type": "INMAIL_ACCEPT",
"entity_urn": "2-MTc4NTIzNjk0MzI5OGI1ODI2Ni0xMDAm..."
},
{
"text": "Hi Jessica — quick question about your team's stack.",
"timestamp": 1785231247240,
"sender": "Your Name",
"sender_info": {
"first_name": "Your",
"last_name": "Name",
"profile_url": "https://www.linkedin.com/in/ACwAADx...",
"recipient_urn": "urn:li:fs_salesProfile:(ACwAADx...,NAME_SEARCH,X3dd)",
"is_me": true
},
"message_type": "INMAIL",
"entity_urn": "2-MTc4NTIzMTI0NzI0MGI5MDM1My0xMDAm...",
"subject": "Quick question"
}
]
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-28T12:00:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Either conversation_id or profile_url is required."
},
"metadata": {
"action": "get_conversation",
"account_id": "your-account-id",
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Was this page helpful?