Preflight enrollments
curl --request POST \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight', 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}/enrollments/preflight';
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
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}/enrollments/preflight"
payload = {}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();using RestSharp;
var options = new RestClientOptions("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{}", false);
var response = await client.PostAsync(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}/enrollments/preflight",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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}/enrollments/preflight")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"expiresAt": "2023-11-07T05:31:56Z",
"moveGroups": [
{
"selectedContactCount": 9,
"sequenceId": 42,
"sequenceName": "Q3 outbound",
"sequenceStatus": "active"
}
],
"preflightId": "2f4f75ad-2527-4e89-b0dc-2cd75589c64f",
"repliedDecision": {
"contactCount": 2
},
"summary": {
"alreadyInTargetCount": 3,
"automaticEnrollmentCount": 85,
"candidateCount": 100,
"decisionRequiredCount": 12
}
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": {
"runId": "2f4f75ad-2527-4e89-b0dc-2cd75589c64f",
"status": "in_progress"
},
"message": "validation_run_not_completed"
}{
"data": "<unknown>",
"message": "Invalid request body"
}multichannel
Preflight enrollments
Analyzes matching contacts before enrollment and creates a preflight that expires after 15 minutes. Returns candidate totals, conflicts, available source cleanup groups, and replied-contact information. validationRunId must reference a completed validation run containing at least one contact.
POST
/
multichannel
/
workspaces
/
{workspaceID}
/
sequences
/
{sequenceID}
/
enrollments
/
preflight
Preflight enrollments
curl --request POST \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{}'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight', 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}/enrollments/preflight';
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
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}/enrollments/preflight"
payload = {}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();using RestSharp;
var options = new RestClientOptions("https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{}", false);
var response = await client.PostAsync(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}/enrollments/preflight",
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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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}/enrollments/preflight")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"expiresAt": "2023-11-07T05:31:56Z",
"moveGroups": [
{
"selectedContactCount": 9,
"sequenceId": 42,
"sequenceName": "Q3 outbound",
"sequenceStatus": "active"
}
],
"preflightId": "2f4f75ad-2527-4e89-b0dc-2cd75589c64f",
"repliedDecision": {
"contactCount": 2
},
"summary": {
"alreadyInTargetCount": 3,
"automaticEnrollmentCount": 85,
"candidateCount": 100,
"decisionRequiredCount": 12
}
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": "<unknown>",
"message": "Invalid request body"
}{
"data": {
"runId": "2f4f75ad-2527-4e89-b0dc-2cd75589c64f",
"status": "in_progress"
},
"message": "validation_run_not_completed"
}{
"data": "<unknown>",
"message": "Invalid request body"
}Authorizations
Body
application/json
Contact selection criteria and preflight options.
- Option 1
- Option 2
The body is of type object.
Response
OK
Enrollment preflight.
Preflight expiration time.
Source sequences available for cleanup.
Show child attributes
Show child attributes
Saved preflight ID used by preview and confirm.
Example:
"2f4f75ad-2527-4e89-b0dc-2cd75589c64f"
Replied-contact decision details.
Show child attributes
Show child attributes
Candidate and decision counts.
Show child attributes
Show child attributes
