curl --request GET \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/analytics/messages \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/analytics/messages', 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}/analytics/messages', 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}/analytics/messages';
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}/analytics/messages"
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}/analytics/messages"
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}/analytics/messages")
.header("Authorization", "<api-key>")
.asString();using RestSharp;
var options = new RestClientOptions("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/analytics/messages");
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}/analytics/messages",
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}/analytics/messages")
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{
"data": [
{
"bouncedAt": "<string>",
"channel": "email",
"clickCount": 123,
"contact": {
"company": "<string>",
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>",
"linkedinUrl": "<string>",
"status": "<string>",
"validationStatus": "<string>"
},
"content": "<string>",
"firstOpenedAt": "<string>",
"from": {
"email": "<string>",
"linkedinAccount": "<string>",
"senderProfile": "<string>"
},
"messageId": "<string>",
"openCount": 123,
"positiveReply": true,
"repliedAt": "<string>",
"sentAt": "<string>",
"sequenceId": 123,
"sequenceName": "<string>",
"subject": "<string>",
"type": "Email"
}
],
"hasMore": true,
"limit": 123,
"nextCursor": "<string>"
}{
"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 sent messages
Returns sent emails and LinkedIn messages for up to 10 sequences within a mandatory date range of at most 30 days. Results are ordered by send time, oldest first unless order=desc, and paginated: follow nextCursor until hasMore is false. No total count is returned.
curl --request GET \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/analytics/messages \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/analytics/messages', 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}/analytics/messages', 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}/analytics/messages';
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}/analytics/messages"
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}/analytics/messages"
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}/analytics/messages")
.header("Authorization", "<api-key>")
.asString();using RestSharp;
var options = new RestClientOptions("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/analytics/messages");
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}/analytics/messages",
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}/analytics/messages")
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{
"data": [
{
"bouncedAt": "<string>",
"channel": "email",
"clickCount": 123,
"contact": {
"company": "<string>",
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>",
"linkedinUrl": "<string>",
"status": "<string>",
"validationStatus": "<string>"
},
"content": "<string>",
"firstOpenedAt": "<string>",
"from": {
"email": "<string>",
"linkedinAccount": "<string>",
"senderProfile": "<string>"
},
"messageId": "<string>",
"openCount": 123,
"positiveReply": true,
"repliedAt": "<string>",
"sentAt": "<string>",
"sequenceId": 123,
"sequenceName": "<string>",
"subject": "<string>",
"type": "Email"
}
],
"hasMore": true,
"limit": 123,
"nextCursor": "<string>"
}{
"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
Query Parameters
Sequence IDs, 1-10. Repeat the parameter per id: sequence_ids=1&sequence_ids=2
Start date (inclusive, YYYY-MM-DD)
End date (inclusive, YYYY-MM-DD). The range from from_date to to_date can span at most 30 days
IANA time zone name, for example America/New_York, used to resolve the dates to start and end of day (default UTC)
Restrict to one channel (default: both)
email, linkedin Restrict to messages that were replied to, opened, bounced or had a link clicked. opened, bounced and clicked apply to email only. Out-of-office email replies are not counted as replies
replied, opened, bounced, clicked Only messages sent to these contacts, 1-50 unique ids. Repeat the parameter per id: lead_ids=a&lead_ids=b
Only this kind of LinkedIn message. Emails are not returned when set
message, inmail, connection_note Only leads with this status in the sequence
active, paused, completed, failed, replied, out_of_office, unsubscribed, dnc, bounced, bounce-shield, company_limit_reached, stop_on_reply Only messages sent from this sender profile
Sort by send time: oldest first or newest first (default asc)
asc, desc Value of nextCursor from the previous response, valid only in the same workspace. Send it back unchanged with the same filters and order. Omit for the first page
Maximum messages per page
1 <= x <= 100Was this page helpful?
