Get conversation
curl --request GET \
--url https://api.goextrovert.com/client/v2/dm-conversations/{connectionId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}', 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.goextrovert.com/client/v2/dm-conversations/{connectionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"connectionId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"ownerId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"prospect": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"context": {
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospectList": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
}
},
"connectedAt": "2025-06-30T14:02:07.456Z",
"lastMessage": {
"text": "<string>",
"sentAt": "2025-06-30T14:02:07.456Z"
},
"unreadCount": 4503599627370495,
"allowedActions": [],
"activeReply": {
"dmId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"connectionId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"text": "<string>",
"allowedActions": [],
"relevantPost": {
"postId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"summary": "<string>",
"linkedInUrl": "<string>",
"publishedAt": "2025-06-30T14:02:07.456Z"
},
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"occurredAt": "2025-06-30T14:02:07.456Z"
},
"createdAt": "2025-06-30T14:02:07.456Z",
"updatedAt": "2025-06-30T14:02:07.456Z",
"sentAt": "2025-06-30T14:02:07.456Z"
},
"messages": [
{
"dmId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"connectionId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"text": "<string>",
"sentAt": "2025-06-30T14:02:07.456Z"
}
],
"messagePagination": {
"limit": 4503599627370495,
"offset": 4503599627370495,
"total": 4503599627370495
}
},
"message": "Operation completed successfully"
}{
"status": "error",
"data": null,
"message": "An error occurred while processing the request"
}Direct Messages
Get conversation
Returns one LinkedIn conversation, its unique active reply, and a bounded delivered-message page. Reading does not clear unread state unless markAsRead is true. Use offset 0 for the latest page and increase it to load older messages.
GET
/
client
/
v2
/
dm-conversations
/
{connectionId}
Get conversation
curl --request GET \
--url https://api.goextrovert.com/client/v2/dm-conversations/{connectionId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}', 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.goextrovert.com/client/v2/dm-conversations/{connectionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/dm-conversations/{connectionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"connectionId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"ownerId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"prospect": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"context": {
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospectList": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
}
},
"connectedAt": "2025-06-30T14:02:07.456Z",
"lastMessage": {
"text": "<string>",
"sentAt": "2025-06-30T14:02:07.456Z"
},
"unreadCount": 4503599627370495,
"allowedActions": [],
"activeReply": {
"dmId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"connectionId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"text": "<string>",
"allowedActions": [],
"relevantPost": {
"postId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"summary": "<string>",
"linkedInUrl": "<string>",
"publishedAt": "2025-06-30T14:02:07.456Z"
},
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"occurredAt": "2025-06-30T14:02:07.456Z"
},
"createdAt": "2025-06-30T14:02:07.456Z",
"updatedAt": "2025-06-30T14:02:07.456Z",
"sentAt": "2025-06-30T14:02:07.456Z"
},
"messages": [
{
"dmId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"connectionId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"text": "<string>",
"sentAt": "2025-06-30T14:02:07.456Z"
}
],
"messagePagination": {
"limit": 4503599627370495,
"offset": 4503599627370495,
"total": 4503599627370495
}
},
"message": "Operation completed successfully"
}{
"status": "error",
"data": null,
"message": "An error occurred while processing the request"
}Authorizations
API Key for authentication
Path Parameters
Conversation (connection) ID the action addresses.
Query Parameters
When true, request that Extrovert and LinkedIn mark the conversation read. Provider synchronization may finish after this response.
Number of delivered history messages requested for this page.
Required range:
1 <= x <= 30Offset from the newest delivered message. 0 returns the latest page; larger offsets load older messages.
Required range:
0 <= x <= 9007199254740991⌘I