curl --request GET \
--url https://api.goextrovert.com/client/v2/comments \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.goextrovert.com/client/v2/comments"
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/comments', 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/comments",
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/comments"
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/comments")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/comments")
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": {
"comments": [
{
"postId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"ownerId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"author": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"prospect": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospectList": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"keyword": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"topic": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"engagementContexts": [
{
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospectList": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"keyword": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"topic": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospect": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
}
}
],
"post": {
"text": "<string>",
"linkedInUrl": "<string>",
"publishedAt": "2025-06-30T14:02:07.456Z",
"likeCount": 4503599627370495,
"media": {
"urls": [
"<string>"
]
},
"externalLink": {
"url": "<string>",
"caption": "<string>",
"summary": "<string>"
},
"originalPost": {
"text": "<string>",
"linkedInUrl": "<string>",
"publishedAt": "2025-06-30T14:02:07.456Z",
"author": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"media": {
"urls": [
"<string>"
]
},
"externalLink": {
"url": "<string>",
"caption": "<string>",
"summary": "<string>"
}
}
},
"draft": {
"text": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z"
},
"reactionBehavior": {
"behavior": "Comment only",
"reaction": null
},
"plannedAt": "2025-06-30T14:02:07.456Z",
"completedAt": "2025-06-30T14:02:07.456Z",
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"occurredAt": "2025-06-30T14:02:07.456Z"
},
"allowedActions": [],
"updatedAt": "2025-06-30T14:02:07.456Z"
}
],
"pagination": {
"limit": 4503599627370495,
"offset": 4503599627370495,
"total": 4503599627370495
}
},
"message": "Operation completed successfully"
}{
"status": "error",
"data": null,
"message": "An error occurred while processing the request"
}List comments
Lists one campaign’s comment feed for an owner and review state. Results include the post, author, effective prospect context, current draft, state, and only actions valid now. plannedAt fills only when the campaign spaces approved comments with a posting interval — null means posting starts right after approval. This action does not change feed state.
curl --request GET \
--url https://api.goextrovert.com/client/v2/comments \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.goextrovert.com/client/v2/comments"
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/comments', 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/comments",
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/comments"
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/comments")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/comments")
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": {
"comments": [
{
"postId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"ownerId": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"author": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"prospect": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospectList": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"keyword": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"topic": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"engagementContexts": [
{
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospectList": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"keyword": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"topic": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>"
},
"prospect": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
}
}
],
"post": {
"text": "<string>",
"linkedInUrl": "<string>",
"publishedAt": "2025-06-30T14:02:07.456Z",
"likeCount": 4503599627370495,
"media": {
"urls": [
"<string>"
]
},
"externalLink": {
"url": "<string>",
"caption": "<string>",
"summary": "<string>"
},
"originalPost": {
"text": "<string>",
"linkedInUrl": "<string>",
"publishedAt": "2025-06-30T14:02:07.456Z",
"author": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"linkedInUrl": "<string>",
"headline": "<string>",
"avatarUrl": "<string>"
},
"media": {
"urls": [
"<string>"
]
},
"externalLink": {
"url": "<string>",
"caption": "<string>",
"summary": "<string>"
}
}
},
"draft": {
"text": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z"
},
"reactionBehavior": {
"behavior": "Comment only",
"reaction": null
},
"plannedAt": "2025-06-30T14:02:07.456Z",
"completedAt": "2025-06-30T14:02:07.456Z",
"error": {
"code": "<string>",
"message": "<string>",
"retryable": true,
"occurredAt": "2025-06-30T14:02:07.456Z"
},
"allowedActions": [],
"updatedAt": "2025-06-30T14:02:07.456Z"
}
],
"pagination": {
"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
Query Parameters
LinkedIn account owner whose campaign feed is being read. Often a managed account rather than the authenticated user — call user_list-shared first and pick the owner whose LinkedIn profile runs the campaign.
Campaign that scopes this feed. Aggregated cross-campaign feed is not part of this action.
Required customer-facing feed state.
Need approval, Pending, Error, Posted, Skipped Optional Prospect List filter. Cannot be combined with keywordId.
Optional Keyword filter. Cannot be combined with prospectListId.
Number of records requested for this page.
1 <= x <= 50Offset from the start of the filtered result set.
0 <= x <= 9007199254740991