curl --request POST \
--url https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"includeEmail": true,
"includePhone": false,
"rows": [
{}
],
"filters": {},
"count": 123,
"importAll": true,
"audienceName": "<string>",
"importId": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import"
payload = {
"companyId": "<string>",
"includeEmail": True,
"includePhone": False,
"rows": [{}],
"filters": {},
"count": 123,
"importAll": True,
"audienceName": "<string>",
"importId": "<string>"
}
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({
companyId: '<string>',
includeEmail: true,
includePhone: false,
rows: [{}],
filters: {},
count: 123,
importAll: true,
audienceName: '<string>',
importId: '<string>'
})
};
fetch('https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import', 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.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import",
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([
'companyId' => '<string>',
'includeEmail' => true,
'includePhone' => false,
'rows' => [
[
]
],
'filters' => [
],
'count' => 123,
'importAll' => true,
'audienceName' => '<string>',
'importId' => '<string>'
]),
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.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"includeEmail\": true,\n \"includePhone\": false,\n \"rows\": [\n {}\n ],\n \"filters\": {},\n \"count\": 123,\n \"importAll\": true,\n \"audienceName\": \"<string>\",\n \"importId\": \"<string>\"\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.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"includeEmail\": true,\n \"includePhone\": false,\n \"rows\": [\n {}\n ],\n \"filters\": {},\n \"count\": 123,\n \"importAll\": true,\n \"audienceName\": \"<string>\",\n \"importId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import")
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 \"companyId\": \"<string>\",\n \"includeEmail\": true,\n \"includePhone\": false,\n \"rows\": [\n {}\n ],\n \"filters\": {},\n \"count\": 123,\n \"importAll\": true,\n \"audienceName\": \"<string>\",\n \"importId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"taskId": "<string>",
"listId": "<string>",
"sequenceId": "<string>",
"status": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Import people-search results straight into a sequence, without a smart list.
Takes the same rows or filters/count, includeEmail/includePhone and importId options as leads_importPeopleDatabaseResults, at the same data credit cost, but adds each person as a sequence member. Each person needs an email, LinkedIn URL or phone the sequence can reach; people already in the sequence are updated and keep their place. Returns a taskId: poll lists_getTaskStatus until status is completed, failed or cancelled.
curl --request POST \
--url https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"includeEmail": true,
"includePhone": false,
"rows": [
{}
],
"filters": {},
"count": 123,
"importAll": true,
"audienceName": "<string>",
"importId": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import"
payload = {
"companyId": "<string>",
"includeEmail": True,
"includePhone": False,
"rows": [{}],
"filters": {},
"count": 123,
"importAll": True,
"audienceName": "<string>",
"importId": "<string>"
}
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({
companyId: '<string>',
includeEmail: true,
includePhone: false,
rows: [{}],
filters: {},
count: 123,
importAll: true,
audienceName: '<string>',
importId: '<string>'
})
};
fetch('https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import', 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.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import",
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([
'companyId' => '<string>',
'includeEmail' => true,
'includePhone' => false,
'rows' => [
[
]
],
'filters' => [
],
'count' => 123,
'importAll' => true,
'audienceName' => '<string>',
'importId' => '<string>'
]),
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.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"includeEmail\": true,\n \"includePhone\": false,\n \"rows\": [\n {}\n ],\n \"filters\": {},\n \"count\": 123,\n \"importAll\": true,\n \"audienceName\": \"<string>\",\n \"importId\": \"<string>\"\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.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"includeEmail\": true,\n \"includePhone\": false,\n \"rows\": [\n {}\n ],\n \"filters\": {},\n \"count\": 123,\n \"importAll\": true,\n \"audienceName\": \"<string>\",\n \"importId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/leads/people-search/sequences/{sequenceId}/import")
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 \"companyId\": \"<string>\",\n \"includeEmail\": true,\n \"includePhone\": false,\n \"rows\": [\n {}\n ],\n \"filters\": {},\n \"count\": 123,\n \"importAll\": true,\n \"audienceName\": \"<string>\",\n \"importId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"taskId": "<string>",
"listId": "<string>",
"sequenceId": "<string>",
"status": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.
Path Parameters
Body
Company ID for access and any applicable data-credit charges
Enrich email for 1 data credit per email found.
Enrich mobile/direct phone for 2 data credits per returned number.
Select 1–50 search results. Each needs linkedinUrl or email. Profile values must be text of at most 5000 characters (250000 for structured fields and long descriptions). Structured fields such as workHistory and educationHistory contain JSON in their own columns. Supported fields: workHistory, educationHistory, skills, certifications, locationDetails, companyLocationDetails, companyNaicsCodes, companyNaicsTitles, companyLinkedinIndustries, allEmails, nickname, salutation, profileUpdatedAt, companyEmployeeCount, externalId, displayName, firstName, lastName, email, businessEmail, personalEmail, phoneNumber, linkedinUrl, headline, location, positionTitle, positionLocation, seniority, department, companyName, companyWebsite, companyLinkedinUrl, companyEmployeeRange, companyIndustry, companyAnnualRevenue, businessEmailRiskScore, businessEmailValidatedAt, numOfConnections, about, photoUrl, companyDescription, companyFoundedOn, companyNumberOfFollowers, companyEmployeesOnLinkedin, companyLocation, summary, positionDescription, companyHeadquarters, companyCountry, companyType, companyKeywords, companyLogoUrl.
Search filters, same shape as leads_searchPeopleDatabase. Required when rows are omitted.
With filters: how many people to process, from 1 to 50000, starting at the first result. Required unless importAll is true.
With filters: process every match, capped at 50000.
Optional label for the job.
Optional UUID identifying this job. Reuse it to retrieve the same job when retrying an unchanged request.
Response
Queued import; poll lists_getTaskStatus with taskId
The queued background people job
Background task id. Poll lists_getTaskStatus with it until status is completed, failed or cancelled.
The destination smart list (null for an export or a sequence import).
The destination sequence (null unless importing into a sequence).
Always "background" — the job runs asynchronously.
Human-readable status message

