curl --request GET \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads';
const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads")
.header("Authorization", "<api-key>")
.asString();using RestSharp;
var options = new RestClientOptions("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"leads": [
{
"enrollment": {
"inSubsequence": true,
"status": "active",
"updatedAt": "2023-11-07T05:31:56Z",
"pauseReason": "<string>"
},
"lead": {
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"leadId": "<string>",
"linkedinUrl": "<string>",
"position": "<string>",
"profilePictureUrl": "<string>"
},
"timeline": [
{
"executionOrder": 123,
"executionStatus": "pending",
"nodeId": 123,
"nodeType": "action",
"actionChannel": "email",
"actionName": "<string>",
"blockedByLeadStatus": "<string>",
"branchTaken": "<string>",
"conditionName": "<string>",
"content": {
"contentType": "text/html",
"message": "<string>",
"subject": "<string>"
},
"delivery": {
"channel": "email",
"status": "unknown",
"bouncedAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z"
},
"engagement": {
"clickCount": 123,
"openCount": 123,
"lastClickedAt": "2023-11-07T05:31:56Z",
"lastOpenedAt": "2023-11-07T05:31:56Z"
},
"error": {
"failedAt": "2023-11-07T05:31:56Z",
"message": "<string>",
"retryCount": 123
},
"executedAt": "2023-11-07T05:31:56Z",
"replyContent": {
"channel": "email",
"contentType": "text/html",
"message": "<string>",
"repliedAt": "2023-11-07T05:31:56Z",
"subject": "<string>"
},
"scheduledAt": "2023-11-07T05:31:56Z",
"sender": {
"email": "<string>",
"linkedinUrl": "<string>",
"senderProfileId": 123,
"senderProfileName": "<string>",
"mailboxId": "<string>"
}
}
]
}
],
"pagination": {
"hasNext": true,
"limit": 123,
"page": 123,
"total": 123,
"totalPages": 123
}
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}List sequence leads
Returns a page of leads enrolled in the sequence. Each item contains contact details, current enrollment state, and timeline steps in execution order. Pagination applies to leads, including when filtering by leadIds. Each lead includes its available timeline without separate pagination. Results default to the most recently updated enrollments. Date filters use inclusive UTC dates and apply to the timestamp selected by sortBy.
curl --request GET \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads';
const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads")
.header("Authorization", "<api-key>")
.asString();using RestSharp;
var options = new RestClientOptions("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"leads": [
{
"enrollment": {
"inSubsequence": true,
"status": "active",
"updatedAt": "2023-11-07T05:31:56Z",
"pauseReason": "<string>"
},
"lead": {
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"leadId": "<string>",
"linkedinUrl": "<string>",
"position": "<string>",
"profilePictureUrl": "<string>"
},
"timeline": [
{
"executionOrder": 123,
"executionStatus": "pending",
"nodeId": 123,
"nodeType": "action",
"actionChannel": "email",
"actionName": "<string>",
"blockedByLeadStatus": "<string>",
"branchTaken": "<string>",
"conditionName": "<string>",
"content": {
"contentType": "text/html",
"message": "<string>",
"subject": "<string>"
},
"delivery": {
"channel": "email",
"status": "unknown",
"bouncedAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z"
},
"engagement": {
"clickCount": 123,
"openCount": 123,
"lastClickedAt": "2023-11-07T05:31:56Z",
"lastOpenedAt": "2023-11-07T05:31:56Z"
},
"error": {
"failedAt": "2023-11-07T05:31:56Z",
"message": "<string>",
"retryCount": 123
},
"executedAt": "2023-11-07T05:31:56Z",
"replyContent": {
"channel": "email",
"contentType": "text/html",
"message": "<string>",
"repliedAt": "2023-11-07T05:31:56Z",
"subject": "<string>"
},
"scheduledAt": "2023-11-07T05:31:56Z",
"sender": {
"email": "<string>",
"linkedinUrl": "<string>",
"senderProfileId": 123,
"senderProfileName": "<string>",
"mailboxId": "<string>"
}
}
]
}
],
"pagination": {
"hasNext": true,
"limit": 123,
"page": 123,
"total": 123,
"totalPages": 123
}
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}Authorizations
Path Parameters
Workspace ID
Sequence ID
1 <= x <= 2147483647Query Parameters
Page number
x >= 1Items per page
1 <= x <= 100Enrollment status
Search lead name or email
Only leads with recorded email opens
Only leads moved to a subsequence
Comma-separated lead IDs
Sort by enrollment update, enrollment creation, or contact activity; also selects the timestamp used by from and to
recently_contacted, least_recently_contacted, recently_updated, recently_added, oldest_added Sort direction; defaults to desc. least_recently_contacted and oldest_added always use asc
asc, desc Inclusive start date in UTC (YYYY-MM-DD); requires to
Inclusive end date in UTC (YYYY-MM-DD); requires from
