curl --request POST \
--url https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"user_id": "507f1f77bcf86cd799439011",
"sequence": "<string>",
"source": {
"contacts": [
"<string>"
],
"contact_list": "<string>",
"prospects": [
{
"contact": "<string>",
"email": "<string>",
"linkedin_username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"account": "<string>",
"title": "<string>",
"timezone": "<string>",
"phone_number": "<string>",
"phone_type": "mobile",
"custom_fields": [
{
"label": "<string>",
"value": {}
}
]
}
],
"preview_id": "<string>"
},
"owner_id": "<string>",
"force_include": [
"<string>"
]
}
'import requests
url = "https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview"
payload = {
"user_id": "507f1f77bcf86cd799439011",
"sequence": "<string>",
"source": {
"contacts": ["<string>"],
"contact_list": "<string>",
"prospects": [
{
"contact": "<string>",
"email": "<string>",
"linkedin_username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"account": "<string>",
"title": "<string>",
"timezone": "<string>",
"phone_number": "<string>",
"phone_type": "mobile",
"custom_fields": [
{
"label": "<string>",
"value": {}
}
]
}
],
"preview_id": "<string>"
},
"owner_id": "<string>",
"force_include": ["<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({
user_id: '507f1f77bcf86cd799439011',
sequence: '<string>',
source: {
contacts: ['<string>'],
contact_list: '<string>',
prospects: [
{
contact: '<string>',
email: '<string>',
linkedin_username: '<string>',
first_name: '<string>',
last_name: '<string>',
account: '<string>',
title: '<string>',
timezone: '<string>',
phone_number: '<string>',
phone_type: 'mobile',
custom_fields: [{label: '<string>', value: {}}]
}
],
preview_id: '<string>'
},
owner_id: '<string>',
force_include: ['<string>']
})
};
fetch('https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview', 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://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview",
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([
'user_id' => '507f1f77bcf86cd799439011',
'sequence' => '<string>',
'source' => [
'contacts' => [
'<string>'
],
'contact_list' => '<string>',
'prospects' => [
[
'contact' => '<string>',
'email' => '<string>',
'linkedin_username' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'account' => '<string>',
'title' => '<string>',
'timezone' => '<string>',
'phone_number' => '<string>',
'phone_type' => 'mobile',
'custom_fields' => [
[
'label' => '<string>',
'value' => [
]
]
]
]
],
'preview_id' => '<string>'
],
'owner_id' => '<string>',
'force_include' => [
'<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://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview"
payload := strings.NewReader("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"sequence\": \"<string>\",\n \"source\": {\n \"contacts\": [\n \"<string>\"\n ],\n \"contact_list\": \"<string>\",\n \"prospects\": [\n {\n \"contact\": \"<string>\",\n \"email\": \"<string>\",\n \"linkedin_username\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"account\": \"<string>\",\n \"title\": \"<string>\",\n \"timezone\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"phone_type\": \"mobile\",\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": {}\n }\n ]\n }\n ],\n \"preview_id\": \"<string>\"\n },\n \"owner_id\": \"<string>\",\n \"force_include\": [\n \"<string>\"\n ]\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://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"sequence\": \"<string>\",\n \"source\": {\n \"contacts\": [\n \"<string>\"\n ],\n \"contact_list\": \"<string>\",\n \"prospects\": [\n {\n \"contact\": \"<string>\",\n \"email\": \"<string>\",\n \"linkedin_username\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"account\": \"<string>\",\n \"title\": \"<string>\",\n \"timezone\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"phone_type\": \"mobile\",\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": {}\n }\n ]\n }\n ],\n \"preview_id\": \"<string>\"\n },\n \"owner_id\": \"<string>\",\n \"force_include\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview")
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 \"user_id\": \"507f1f77bcf86cd799439011\",\n \"sequence\": \"<string>\",\n \"source\": {\n \"contacts\": [\n \"<string>\"\n ],\n \"contact_list\": \"<string>\",\n \"prospects\": [\n {\n \"contact\": \"<string>\",\n \"email\": \"<string>\",\n \"linkedin_username\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"account\": \"<string>\",\n \"title\": \"<string>\",\n \"timezone\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"phone_type\": \"mobile\",\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": {}\n }\n ]\n }\n ],\n \"preview_id\": \"<string>\"\n },\n \"owner_id\": \"<string>\",\n \"force_include\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"preview_id": "<string>",
"counts": {
"total": 123,
"will_add": 123,
"needs_approval": 123,
"excluded": 123
},
"excluded_reasons": [
{}
],
"rows": [
{}
],
"rows_truncated": true,
"truncated": true,
"unmeasured": [
{}
]
}{
"message": [
"limit must not be greater than 100"
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Preview an enrolment
What would happen if you ran this, without running it. Returns a preview_id, counts, a per-reason breakdown of everyone excluded, and up to 200 sample rows.
Anything answerable from data Salesfinity already holds is answered exactly. Anything that would need a live CRM read is reported under unmeasured rather than guessed.
Pass the preview_id back as a preview source to enrol exactly the set you reviewed. Previews expire after 30 minutes.
curl --request POST \
--url https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"user_id": "507f1f77bcf86cd799439011",
"sequence": "<string>",
"source": {
"contacts": [
"<string>"
],
"contact_list": "<string>",
"prospects": [
{
"contact": "<string>",
"email": "<string>",
"linkedin_username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"account": "<string>",
"title": "<string>",
"timezone": "<string>",
"phone_number": "<string>",
"phone_type": "mobile",
"custom_fields": [
{
"label": "<string>",
"value": {}
}
]
}
],
"preview_id": "<string>"
},
"owner_id": "<string>",
"force_include": [
"<string>"
]
}
'import requests
url = "https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview"
payload = {
"user_id": "507f1f77bcf86cd799439011",
"sequence": "<string>",
"source": {
"contacts": ["<string>"],
"contact_list": "<string>",
"prospects": [
{
"contact": "<string>",
"email": "<string>",
"linkedin_username": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"account": "<string>",
"title": "<string>",
"timezone": "<string>",
"phone_number": "<string>",
"phone_type": "mobile",
"custom_fields": [
{
"label": "<string>",
"value": {}
}
]
}
],
"preview_id": "<string>"
},
"owner_id": "<string>",
"force_include": ["<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({
user_id: '507f1f77bcf86cd799439011',
sequence: '<string>',
source: {
contacts: ['<string>'],
contact_list: '<string>',
prospects: [
{
contact: '<string>',
email: '<string>',
linkedin_username: '<string>',
first_name: '<string>',
last_name: '<string>',
account: '<string>',
title: '<string>',
timezone: '<string>',
phone_number: '<string>',
phone_type: 'mobile',
custom_fields: [{label: '<string>', value: {}}]
}
],
preview_id: '<string>'
},
owner_id: '<string>',
force_include: ['<string>']
})
};
fetch('https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview', 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://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview",
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([
'user_id' => '507f1f77bcf86cd799439011',
'sequence' => '<string>',
'source' => [
'contacts' => [
'<string>'
],
'contact_list' => '<string>',
'prospects' => [
[
'contact' => '<string>',
'email' => '<string>',
'linkedin_username' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'account' => '<string>',
'title' => '<string>',
'timezone' => '<string>',
'phone_number' => '<string>',
'phone_type' => 'mobile',
'custom_fields' => [
[
'label' => '<string>',
'value' => [
]
]
]
]
],
'preview_id' => '<string>'
],
'owner_id' => '<string>',
'force_include' => [
'<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://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview"
payload := strings.NewReader("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"sequence\": \"<string>\",\n \"source\": {\n \"contacts\": [\n \"<string>\"\n ],\n \"contact_list\": \"<string>\",\n \"prospects\": [\n {\n \"contact\": \"<string>\",\n \"email\": \"<string>\",\n \"linkedin_username\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"account\": \"<string>\",\n \"title\": \"<string>\",\n \"timezone\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"phone_type\": \"mobile\",\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": {}\n }\n ]\n }\n ],\n \"preview_id\": \"<string>\"\n },\n \"owner_id\": \"<string>\",\n \"force_include\": [\n \"<string>\"\n ]\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://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"user_id\": \"507f1f77bcf86cd799439011\",\n \"sequence\": \"<string>\",\n \"source\": {\n \"contacts\": [\n \"<string>\"\n ],\n \"contact_list\": \"<string>\",\n \"prospects\": [\n {\n \"contact\": \"<string>\",\n \"email\": \"<string>\",\n \"linkedin_username\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"account\": \"<string>\",\n \"title\": \"<string>\",\n \"timezone\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"phone_type\": \"mobile\",\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": {}\n }\n ]\n }\n ],\n \"preview_id\": \"<string>\"\n },\n \"owner_id\": \"<string>\",\n \"force_include\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v2/sequencer/enrollment-runs/preview")
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 \"user_id\": \"507f1f77bcf86cd799439011\",\n \"sequence\": \"<string>\",\n \"source\": {\n \"contacts\": [\n \"<string>\"\n ],\n \"contact_list\": \"<string>\",\n \"prospects\": [\n {\n \"contact\": \"<string>\",\n \"email\": \"<string>\",\n \"linkedin_username\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"account\": \"<string>\",\n \"title\": \"<string>\",\n \"timezone\": \"<string>\",\n \"phone_number\": \"<string>\",\n \"phone_type\": \"mobile\",\n \"custom_fields\": [\n {\n \"label\": \"<string>\",\n \"value\": {}\n }\n ]\n }\n ],\n \"preview_id\": \"<string>\"\n },\n \"owner_id\": \"<string>\",\n \"force_include\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"preview_id": "<string>",
"counts": {
"total": 123,
"will_add": 123,
"needs_approval": 123,
"excluded": 123
},
"excluded_reasons": [
{}
],
"rows": [
{}
],
"rows_truncated": true,
"truncated": true,
"unmeasured": [
{}
]
}{
"message": [
"limit must not be greater than 100"
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403
}{
"message": "Too many requests",
"error": "Too Many Requests",
"statusCode": 429
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}preview_id, counts, a per-reason breakdown of everyone excluded, and up to 200 sample rows.
Anything answerable from data Salesfinity already holds is answered exactly. Anything that would need a live CRM read is reported under unmeasured rather than guessed.
Pass the preview_id back as a preview source to enrol exactly the set you reviewed. Previews expire after 30 minutes.Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings -> Connections & API. A missing or invalid key returns HTTP 403.
Body
The team member this call acts as. Must be an active member of the team the API key belongs to.
"507f1f77bcf86cd799439011"
The sequence to enrol into.
Show child attributes
Show child attributes
Who owns the resulting enrollments. Defaults to user_id.
Prospect keys from a preview to add despite a rule blocking them. They are held for approval, not waved through.
Response
Success.
A dry run. Anything answerable from held data is exact; anything needing a live CRM read is reported under unmeasured rather than guessed.
Pass back as a preview source to enrol exactly this set. Expires after 30 minutes.
Totals across the whole set.
Show child attributes
Show child attributes
Counts per exclusion reason, across the whole set.
Up to 200 sample rows.
Rules that could not be evaluated without a live CRM read.