curl --request POST \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/validations \
--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}/validations', 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}/validations', 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}/validations';
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}/validations"
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}/validations"
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}/validations")
.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}/validations");
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}/validations",
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}/validations")
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{
"matched": 123,
"message": "<string>",
"selected": 123,
"skipped": {
"duplicate": 123
},
"started": true,
"validationJobID": "<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"
}Start validation run
Starts email validation for the contacts the filters resolve to.
When the filters match contacts but every one is filtered out before validation, for example by a selectionScope of in_sequence or not_in_sequence or by excludedLeadIds, the default response is 400 with data.code “validation-all-contacts-excluded”. Send “strict”: false to receive 201 with an already completed empty run instead, where “started” is false, “selected” is 0 and “message” explains why. A scope that resolves to no contact with an email address returns 400 with data.code “validation-scope-empty” either way. 402 means insufficient credits.
curl --request POST \
--url https://multichannel-api.salesforge.ai/public/multichannel/workspaces/{workspaceID}/validations \
--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}/validations', 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}/validations', 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}/validations';
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}/validations"
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}/validations"
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}/validations")
.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}/validations");
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}/validations",
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}/validations")
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{
"matched": 123,
"message": "<string>",
"selected": 123,
"skipped": {
"duplicate": 123
},
"started": true,
"validationJobID": "<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
Body
Start validation run request
- Option 1
- Option 2
The body is of type object.
Response
Created
Matched counts the contacts the scope resolved to, before exclusions.
Selected counts the contacts sent for verification.
Show child attributes
Show child attributes
Started is false when contacts matched but none can be validated. The run exists and is already completed. No contact was verified and no credits were used.
