curl --request POST \
--url https://api.goextrovert.com/client/v2/prospect-list \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"listName": "<string>",
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userUrls": [
"<string>"
],
"moveOwnDuplicated": true,
"shouldBeDeletedIfInactive": true
}
'import requests
url = "https://api.goextrovert.com/client/v2/prospect-list"
payload = {
"listName": "<string>",
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userUrls": ["<string>"],
"moveOwnDuplicated": True,
"shouldBeDeletedIfInactive": True
}
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({
listName: '<string>',
campaignId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
userUrls: ['<string>'],
moveOwnDuplicated: true,
shouldBeDeletedIfInactive: true
})
};
fetch('https://api.goextrovert.com/client/v2/prospect-list', 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/prospect-list",
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([
'listName' => '<string>',
'campaignId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'userUrls' => [
'<string>'
],
'moveOwnDuplicated' => true,
'shouldBeDeletedIfInactive' => true
]),
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://api.goextrovert.com/client/v2/prospect-list"
payload := strings.NewReader("{\n \"listName\": \"<string>\",\n \"campaignId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"userUrls\": [\n \"<string>\"\n ],\n \"moveOwnDuplicated\": true,\n \"shouldBeDeletedIfInactive\": true\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://api.goextrovert.com/client/v2/prospect-list")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"listName\": \"<string>\",\n \"campaignId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"userUrls\": [\n \"<string>\"\n ],\n \"moveOwnDuplicated\": true,\n \"shouldBeDeletedIfInactive\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/prospect-list")
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 \"listName\": \"<string>\",\n \"campaignId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"userUrls\": [\n \"<string>\"\n ],\n \"moveOwnDuplicated\": true,\n \"shouldBeDeletedIfInactive\": true\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"listId": "cf33282b-b171-4d23-ae02-848499d793e4",
"submittedUrls": [
"<string>"
],
"validationRejectedUrls": [
"<string>"
],
"existedUrlsMap": {},
"outOfLimitUrls": [
"<string>"
],
"totalUrlsLimit": 123,
"perMonthUrlsLimit": 123
},
"message": "Operation completed successfully"
}{
"status": "error",
"data": null,
"message": "An error occurred while processing the request"
}Create prospect list with LinkedIn profile URLs
Creates a new prospect list inside the given campaign and seeds it with the provided LinkedIn profile URLs. The backend validates URLs and may reject some as invalid, duplicates, or out-of-limit. The response describes which URLs were submitted, rejected, or already existed elsewhere. Profile existence is verified asynchronously after this call: a URL can be accepted into submittedUrls and still be dropped later — check prospect-list_get-one-list for the final prospect count before reporting how many were actually added.
curl --request POST \
--url https://api.goextrovert.com/client/v2/prospect-list \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"listName": "<string>",
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userUrls": [
"<string>"
],
"moveOwnDuplicated": true,
"shouldBeDeletedIfInactive": true
}
'import requests
url = "https://api.goextrovert.com/client/v2/prospect-list"
payload = {
"listName": "<string>",
"campaignId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userUrls": ["<string>"],
"moveOwnDuplicated": True,
"shouldBeDeletedIfInactive": True
}
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({
listName: '<string>',
campaignId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
userUrls: ['<string>'],
moveOwnDuplicated: true,
shouldBeDeletedIfInactive: true
})
};
fetch('https://api.goextrovert.com/client/v2/prospect-list', 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/prospect-list",
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([
'listName' => '<string>',
'campaignId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'userUrls' => [
'<string>'
],
'moveOwnDuplicated' => true,
'shouldBeDeletedIfInactive' => true
]),
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://api.goextrovert.com/client/v2/prospect-list"
payload := strings.NewReader("{\n \"listName\": \"<string>\",\n \"campaignId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"userUrls\": [\n \"<string>\"\n ],\n \"moveOwnDuplicated\": true,\n \"shouldBeDeletedIfInactive\": true\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://api.goextrovert.com/client/v2/prospect-list")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"listName\": \"<string>\",\n \"campaignId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"userUrls\": [\n \"<string>\"\n ],\n \"moveOwnDuplicated\": true,\n \"shouldBeDeletedIfInactive\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/prospect-list")
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 \"listName\": \"<string>\",\n \"campaignId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"userUrls\": [\n \"<string>\"\n ],\n \"moveOwnDuplicated\": true,\n \"shouldBeDeletedIfInactive\": true\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"listId": "cf33282b-b171-4d23-ae02-848499d793e4",
"submittedUrls": [
"<string>"
],
"validationRejectedUrls": [
"<string>"
],
"existedUrlsMap": {},
"outOfLimitUrls": [
"<string>"
],
"totalUrlsLimit": 123,
"perMonthUrlsLimit": 123
},
"message": "Operation completed successfully"
}{
"status": "error",
"data": null,
"message": "An error occurred while processing the request"
}Authorizations
API Key for authentication
Body
Human-readable list name.
1Campaign id this list belongs to.
LinkedIn profile URLs to seed the list with.
11Controls what happens when a submitted URL already exists in another active list of the same owner (any campaign, not just the current one). If true, the existing prospect record is moved into this list — the record itself (id, statistics, flags, connection data) is preserved and simply re-assigned, and the URL is counted in submittedUrls. If false, the URL is skipped and reported in existedUrlsMap keyed by the campaign where the duplicate lives. This flag has no effect in three cases the backend always handles automatically: (1) duplicates in a teammate's or another user's list — always reported in existedUrlsMap, never moved; (2) previously deleted duplicates of the same owner — always reactivated into the target list; (3) exact same-list duplicates — skipped silently.
If true, auto-remove prospects who have no posts on LinkedIn within the last 30 days (checked once, when the backend first pulls their posts). If false, keep them regardless of recent posting activity. Useful for pruning low-signal prospects on create.