Submit Email Batch
curl --request POST \
--url https://api.sandbox.verisoul.ai/email \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"emails": [
{
"email": "john.doe@example.com",
"claims": {
"name": {
"first": "John",
"last": "Doe"
},
"country": "US"
}
},
{
"email": "jane.doe@example.com",
"claims": {
"name": {
"first": "Jane",
"last": "Doe"
},
"phone": "+14155551234"
}
},
{
"email": "unknown@example.com"
}
],
"batch_name": "onboarding-review-2026-03",
"identity_intelligence": true
}
'import requests
url = "https://api.sandbox.verisoul.ai/email"
payload = {
"emails": [{
"email": "john.doe@example.com",
"claims": {
"name": {
"first": "John",
"last": "Doe"
},
"country": "US"
}
}, {
"email": "jane.doe@example.com",
"claims": {
"name": {
"first": "Jane",
"last": "Doe"
},
"phone": "+14155551234"
}
}, { "email": "unknown@example.com" }],
"batch_name": "onboarding-review-2026-03",
"identity_intelligence": True
}
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({
emails: [
{
email: 'john.doe@example.com',
claims: {name: {first: 'John', last: 'Doe'}, country: 'US'}
},
{
email: 'jane.doe@example.com',
claims: {name: {first: 'Jane', last: 'Doe'}, phone: '+14155551234'}
},
{email: 'unknown@example.com'}
],
batch_name: 'onboarding-review-2026-03',
identity_intelligence: true
})
};
fetch('https://api.sandbox.verisoul.ai/email', 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://api.sandbox.verisoul.ai/email",
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([
'emails' => [
[
'email' => 'john.doe@example.com',
'claims' => [
'name' => [
'first' => 'John',
'last' => 'Doe'
],
'country' => 'US'
]
],
[
'email' => 'jane.doe@example.com',
'claims' => [
'name' => [
'first' => 'Jane',
'last' => 'Doe'
],
'phone' => '+14155551234'
]
],
[
'email' => 'unknown@example.com'
]
],
'batch_name' => 'onboarding-review-2026-03',
'identity_intelligence' => true
]),
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://api.sandbox.verisoul.ai/email"
payload := strings.NewReader("{\n \"emails\": [\n {\n \"email\": \"john.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"John\",\n \"last\": \"Doe\"\n },\n \"country\": \"US\"\n }\n },\n {\n \"email\": \"jane.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"Jane\",\n \"last\": \"Doe\"\n },\n \"phone\": \"+14155551234\"\n }\n },\n {\n \"email\": \"unknown@example.com\"\n }\n ],\n \"batch_name\": \"onboarding-review-2026-03\",\n \"identity_intelligence\": true\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://api.sandbox.verisoul.ai/email")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"emails\": [\n {\n \"email\": \"john.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"John\",\n \"last\": \"Doe\"\n },\n \"country\": \"US\"\n }\n },\n {\n \"email\": \"jane.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"Jane\",\n \"last\": \"Doe\"\n },\n \"phone\": \"+14155551234\"\n }\n },\n {\n \"email\": \"unknown@example.com\"\n }\n ],\n \"batch_name\": \"onboarding-review-2026-03\",\n \"identity_intelligence\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.verisoul.ai/email")
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 \"emails\": [\n {\n \"email\": \"john.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"John\",\n \"last\": \"Doe\"\n },\n \"country\": \"US\"\n }\n },\n {\n \"email\": \"jane.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"Jane\",\n \"last\": \"Doe\"\n },\n \"phone\": \"+14155551234\"\n }\n },\n {\n \"email\": \"unknown@example.com\"\n }\n ],\n \"batch_name\": \"onboarding-review-2026-03\",\n \"identity_intelligence\": true\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "bbc73b22-bd47-48e4-b173-c9ca085efb2a",
"batch_name": "onboarding-review-2026-03",
"status": "pending",
"total_count": 3,
"webhook_configured": true
}batch_id for correlation. Each email’s full analysis result is delivered asynchronously through the email.intelligence.completed webhook. See the Webhook Payload Reference for response fields and examples.Authorizations
Body
Array of Email Objects to analyze
Show child attributes
Show child attributes
Append these emails to an existing batch instead of creating a new one. Pass the batch_id returned by an earlier call. The batch must belong to the same project and still be within 24 hours of its most recent request; each append extends that window. batch_name is ignored when appending. See Building a batch across requests.
Optional name for the batch. If not provided, one is auto-generated.
Enable deeper identity analysis for all emails in the batch. See Identity Intelligence.
Response
Batch accepted for processing
Unique identifier for this batch
Name of the batch (provided or auto-generated)
pending on creation. When appending, the batch's current lifecycle status (pending or in_progress).
Number of emails in the batch. When appending, the cumulative total after this call.
Whether the project has an active webhook subscription for email intelligence results. If false, results are still processed but no webhook will be delivered.
curl --request POST \
--url https://api.sandbox.verisoul.ai/email \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"emails": [
{
"email": "john.doe@example.com",
"claims": {
"name": {
"first": "John",
"last": "Doe"
},
"country": "US"
}
},
{
"email": "jane.doe@example.com",
"claims": {
"name": {
"first": "Jane",
"last": "Doe"
},
"phone": "+14155551234"
}
},
{
"email": "unknown@example.com"
}
],
"batch_name": "onboarding-review-2026-03",
"identity_intelligence": true
}
'import requests
url = "https://api.sandbox.verisoul.ai/email"
payload = {
"emails": [{
"email": "john.doe@example.com",
"claims": {
"name": {
"first": "John",
"last": "Doe"
},
"country": "US"
}
}, {
"email": "jane.doe@example.com",
"claims": {
"name": {
"first": "Jane",
"last": "Doe"
},
"phone": "+14155551234"
}
}, { "email": "unknown@example.com" }],
"batch_name": "onboarding-review-2026-03",
"identity_intelligence": True
}
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({
emails: [
{
email: 'john.doe@example.com',
claims: {name: {first: 'John', last: 'Doe'}, country: 'US'}
},
{
email: 'jane.doe@example.com',
claims: {name: {first: 'Jane', last: 'Doe'}, phone: '+14155551234'}
},
{email: 'unknown@example.com'}
],
batch_name: 'onboarding-review-2026-03',
identity_intelligence: true
})
};
fetch('https://api.sandbox.verisoul.ai/email', 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://api.sandbox.verisoul.ai/email",
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([
'emails' => [
[
'email' => 'john.doe@example.com',
'claims' => [
'name' => [
'first' => 'John',
'last' => 'Doe'
],
'country' => 'US'
]
],
[
'email' => 'jane.doe@example.com',
'claims' => [
'name' => [
'first' => 'Jane',
'last' => 'Doe'
],
'phone' => '+14155551234'
]
],
[
'email' => 'unknown@example.com'
]
],
'batch_name' => 'onboarding-review-2026-03',
'identity_intelligence' => true
]),
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://api.sandbox.verisoul.ai/email"
payload := strings.NewReader("{\n \"emails\": [\n {\n \"email\": \"john.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"John\",\n \"last\": \"Doe\"\n },\n \"country\": \"US\"\n }\n },\n {\n \"email\": \"jane.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"Jane\",\n \"last\": \"Doe\"\n },\n \"phone\": \"+14155551234\"\n }\n },\n {\n \"email\": \"unknown@example.com\"\n }\n ],\n \"batch_name\": \"onboarding-review-2026-03\",\n \"identity_intelligence\": true\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://api.sandbox.verisoul.ai/email")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"emails\": [\n {\n \"email\": \"john.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"John\",\n \"last\": \"Doe\"\n },\n \"country\": \"US\"\n }\n },\n {\n \"email\": \"jane.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"Jane\",\n \"last\": \"Doe\"\n },\n \"phone\": \"+14155551234\"\n }\n },\n {\n \"email\": \"unknown@example.com\"\n }\n ],\n \"batch_name\": \"onboarding-review-2026-03\",\n \"identity_intelligence\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.verisoul.ai/email")
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 \"emails\": [\n {\n \"email\": \"john.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"John\",\n \"last\": \"Doe\"\n },\n \"country\": \"US\"\n }\n },\n {\n \"email\": \"jane.doe@example.com\",\n \"claims\": {\n \"name\": {\n \"first\": \"Jane\",\n \"last\": \"Doe\"\n },\n \"phone\": \"+14155551234\"\n }\n },\n {\n \"email\": \"unknown@example.com\"\n }\n ],\n \"batch_name\": \"onboarding-review-2026-03\",\n \"identity_intelligence\": true\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "bbc73b22-bd47-48e4-b173-c9ca085efb2a",
"batch_name": "onboarding-review-2026-03",
"status": "pending",
"total_count": 3,
"webhook_configured": true
}