curl --request POST \
--url https://openapi.enginy.ai/v1/social-selling/engagers/export \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"target": {
"listName": "Engagers of the July launch post"
},
"prospectIds": [
5101,
5102
],
"postId": 123,
"dateFrom": "2026-09-01",
"dateTo": "2026-09-01",
"identityIds": [
123
],
"interaction": "all",
"contacts": "all",
"scrapeFromLinkedIn": false,
"maxCredits": 1,
"idempotencyKey": "september-engagers-2026-10-01"
}
'import requests
url = "https://openapi.enginy.ai/v1/social-selling/engagers/export"
payload = {
"target": { "listName": "Engagers of the July launch post" },
"prospectIds": [5101, 5102],
"postId": 123,
"dateFrom": "2026-09-01",
"dateTo": "2026-09-01",
"identityIds": [123],
"interaction": "all",
"contacts": "all",
"scrapeFromLinkedIn": False,
"maxCredits": 1,
"idempotencyKey": "september-engagers-2026-10-01"
}
headers = {
"x-api-key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
target: {listName: 'Engagers of the July launch post'},
prospectIds: [5101, 5102],
postId: 123,
dateFrom: '2026-09-01',
dateTo: '2026-09-01',
identityIds: [123],
interaction: 'all',
contacts: 'all',
scrapeFromLinkedIn: false,
maxCredits: 1,
idempotencyKey: 'september-engagers-2026-10-01'
})
};
fetch('https://openapi.enginy.ai/v1/social-selling/engagers/export', 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://openapi.enginy.ai/v1/social-selling/engagers/export",
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([
'target' => [
'listName' => 'Engagers of the July launch post'
],
'prospectIds' => [
5101,
5102
],
'postId' => 123,
'dateFrom' => '2026-09-01',
'dateTo' => '2026-09-01',
'identityIds' => [
123
],
'interaction' => 'all',
'contacts' => 'all',
'scrapeFromLinkedIn' => false,
'maxCredits' => 1,
'idempotencyKey' => 'september-engagers-2026-10-01'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://openapi.enginy.ai/v1/social-selling/engagers/export"
payload := strings.NewReader("{\n \"target\": {\n \"listName\": \"Engagers of the July launch post\"\n },\n \"prospectIds\": [\n 5101,\n 5102\n ],\n \"postId\": 123,\n \"dateFrom\": \"2026-09-01\",\n \"dateTo\": \"2026-09-01\",\n \"identityIds\": [\n 123\n ],\n \"interaction\": \"all\",\n \"contacts\": \"all\",\n \"scrapeFromLinkedIn\": false,\n \"maxCredits\": 1,\n \"idempotencyKey\": \"september-engagers-2026-10-01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://openapi.enginy.ai/v1/social-selling/engagers/export")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"target\": {\n \"listName\": \"Engagers of the July launch post\"\n },\n \"prospectIds\": [\n 5101,\n 5102\n ],\n \"postId\": 123,\n \"dateFrom\": \"2026-09-01\",\n \"dateTo\": \"2026-09-01\",\n \"identityIds\": [\n 123\n ],\n \"interaction\": \"all\",\n \"contacts\": \"all\",\n \"scrapeFromLinkedIn\": false,\n \"maxCredits\": 1,\n \"idempotencyKey\": \"september-engagers-2026-10-01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/social-selling/engagers/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"target\": {\n \"listName\": \"Engagers of the July launch post\"\n },\n \"prospectIds\": [\n 5101,\n 5102\n ],\n \"postId\": 123,\n \"dateFrom\": \"2026-09-01\",\n \"dateTo\": \"2026-09-01\",\n \"identityIds\": [\n 123\n ],\n \"interaction\": \"all\",\n \"contacts\": \"all\",\n \"scrapeFromLinkedIn\": false,\n \"maxCredits\": 1,\n \"idempotencyKey\": \"september-engagers-2026-10-01\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"listId": 123,
"workflowId": 123,
"prospectCount": 123,
"estimatedCredits": 123,
"replayed": true,
"listAppUrl": "<string>"
}
}Export Social Selling engagers to a list
Export Social Selling engagers (people who reacted to or commented on the caller’s tracked LinkedIn posts) into a contacts list: a new one (target.listName) or an existing one (target.listId). Select engagers with prospectIds (from the engagers lists), with postId (a tracked post id, not publishingPostId), or with dateFrom/dateTo (UTC days of post publication) optionally narrowed by identityIds; then interaction (all, commented, reacted) and contacts (new = not yet in Enginy). The caller’s own identities and blocklisted people are never exported. At most 5000 engagers per export. Asynchronous: the response returns as soon as the export starts and the contacts appear in the list when the workflow finishes (existing contacts are reused, not duplicated). With scrapeFromLinkedIn every exported contact is then enriched from LinkedIn, which spends credits; pass maxCredits to cap the estimate and preview first. Pass a unique idempotencyKey (or the Idempotency-Key header) so a retry is safe: the same key with the same request returns the first export with replayed: true, starts no new export and charges nothing, the same key with another request answers 409 IDEMPOTENCY_KEY_REUSED, and a key always answers with its first export whatever its outcome (use a new key to try again). A key is bound only once its export starts: a request refused with 400, 404 or 422 does not use it up. Without a key every call starts a new export (a retry with target.listName creates another list) and, with scrapeFromLinkedIn, every exported contact is scraped and charged again. Without a key, a lost response cannot be told apart from a failed start (a list of that name can exist either way), so send a key whenever a retry is possible. Once an export finishes, preview_social_selling_engager_export with the same selection and contacts: "new" stops counting the engagers it exported (engagers without a LinkedIn profile URL are never exported and keep counting).
Responses include direct Enginy app URLs when available. The response includes listAppUrl for the destination list. MCP agents should return those URLs to users whenever they are present in the response.
Required scope:
SOCIAL_SELLING_WRITERate limit: 30 requests per minute
curl --request POST \
--url https://openapi.enginy.ai/v1/social-selling/engagers/export \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"target": {
"listName": "Engagers of the July launch post"
},
"prospectIds": [
5101,
5102
],
"postId": 123,
"dateFrom": "2026-09-01",
"dateTo": "2026-09-01",
"identityIds": [
123
],
"interaction": "all",
"contacts": "all",
"scrapeFromLinkedIn": false,
"maxCredits": 1,
"idempotencyKey": "september-engagers-2026-10-01"
}
'import requests
url = "https://openapi.enginy.ai/v1/social-selling/engagers/export"
payload = {
"target": { "listName": "Engagers of the July launch post" },
"prospectIds": [5101, 5102],
"postId": 123,
"dateFrom": "2026-09-01",
"dateTo": "2026-09-01",
"identityIds": [123],
"interaction": "all",
"contacts": "all",
"scrapeFromLinkedIn": False,
"maxCredits": 1,
"idempotencyKey": "september-engagers-2026-10-01"
}
headers = {
"x-api-key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
target: {listName: 'Engagers of the July launch post'},
prospectIds: [5101, 5102],
postId: 123,
dateFrom: '2026-09-01',
dateTo: '2026-09-01',
identityIds: [123],
interaction: 'all',
contacts: 'all',
scrapeFromLinkedIn: false,
maxCredits: 1,
idempotencyKey: 'september-engagers-2026-10-01'
})
};
fetch('https://openapi.enginy.ai/v1/social-selling/engagers/export', 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://openapi.enginy.ai/v1/social-selling/engagers/export",
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([
'target' => [
'listName' => 'Engagers of the July launch post'
],
'prospectIds' => [
5101,
5102
],
'postId' => 123,
'dateFrom' => '2026-09-01',
'dateTo' => '2026-09-01',
'identityIds' => [
123
],
'interaction' => 'all',
'contacts' => 'all',
'scrapeFromLinkedIn' => false,
'maxCredits' => 1,
'idempotencyKey' => 'september-engagers-2026-10-01'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://openapi.enginy.ai/v1/social-selling/engagers/export"
payload := strings.NewReader("{\n \"target\": {\n \"listName\": \"Engagers of the July launch post\"\n },\n \"prospectIds\": [\n 5101,\n 5102\n ],\n \"postId\": 123,\n \"dateFrom\": \"2026-09-01\",\n \"dateTo\": \"2026-09-01\",\n \"identityIds\": [\n 123\n ],\n \"interaction\": \"all\",\n \"contacts\": \"all\",\n \"scrapeFromLinkedIn\": false,\n \"maxCredits\": 1,\n \"idempotencyKey\": \"september-engagers-2026-10-01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://openapi.enginy.ai/v1/social-selling/engagers/export")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"target\": {\n \"listName\": \"Engagers of the July launch post\"\n },\n \"prospectIds\": [\n 5101,\n 5102\n ],\n \"postId\": 123,\n \"dateFrom\": \"2026-09-01\",\n \"dateTo\": \"2026-09-01\",\n \"identityIds\": [\n 123\n ],\n \"interaction\": \"all\",\n \"contacts\": \"all\",\n \"scrapeFromLinkedIn\": false,\n \"maxCredits\": 1,\n \"idempotencyKey\": \"september-engagers-2026-10-01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/social-selling/engagers/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"target\": {\n \"listName\": \"Engagers of the July launch post\"\n },\n \"prospectIds\": [\n 5101,\n 5102\n ],\n \"postId\": 123,\n \"dateFrom\": \"2026-09-01\",\n \"dateTo\": \"2026-09-01\",\n \"identityIds\": [\n 123\n ],\n \"interaction\": \"all\",\n \"contacts\": \"all\",\n \"scrapeFromLinkedIn\": false,\n \"maxCredits\": 1,\n \"idempotencyKey\": \"september-engagers-2026-10-01\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"listId": 123,
"workflowId": 123,
"prospectCount": 123,
"estimatedCredits": 123,
"replayed": true,
"listAppUrl": "<string>"
}
}Authorizations
Headers
Same as the body field idempotencyKey. Ignored when the body sends one (the body wins); an empty header counts as absent.
1 - 128^[a-zA-Z0-9._:-]+$Body
Where the contacts land: { "listName": … } (new list) or { "listId": … }.
- Option 1
- Option 2
Show child attributes
Show child attributes
Export exactly these engagers (prospectId from the engagers lists), 1–1000. Do not combine with postId, dateFrom/dateTo or identityIds.
1 - 1000 elements[5101, 5102]
Filter: every engager of this tracked post (id from the posts list, not publishingPostId). Wins over dateFrom/dateTo.
Filter: engagers of the posts published from this day (UTC, inclusive). Required with dateTo unless postId is set.
^\d{4}-\d{2}-\d{2}$"2026-09-01"
Filter: engagers of the posts published until this day (UTC, inclusive).
^\d{4}-\d{2}-\d{2}$"2026-09-01"
Filter: only engagers of these identities’ posts. Defaults to every identity the caller may see; ids outside that scope match nothing.
1 - 500 elementsWhich engagers: all, only those who commented, or only those who reacted.
all, commented, reacted new keeps only engagers that are not contacts in Enginy yet.
all, new Enrich every exported contact with LinkedIn profile data after the export. Costs creditsPerContact credits per enriched contact; off by default.
Refuse (422 MAX_CREDITS_EXCEEDED, nothing created) when the enrichment estimate is above this many credits. Recommended with scrapeFromLinkedIn.
x >= 0Optional idempotency key, unique per export (1–128 letters, digits, ., _, : or -); also accepted as the Idempotency-Key header, the body wins. Reuse it only to retry the same request: the same key with the same request returns the first export with replayed: true, starts no new export and charges nothing, and the same key with a different request answers 409 IDEMPOTENCY_KEY_REUSED. A key is bound only once its export starts: a request refused with 400, 404 or 422 does not use it up. It is then remembered while the export runs and for at least 24 hours after it finishes, and always answers with that first export whatever its outcome: use a new key to try again.
1 - 128^[a-zA-Z0-9._:-]+$"september-engagers-2026-10-01"