curl --request POST \
--url https://api.deliverable.co/gateway/verify/bulk \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form file=@example-file \
--form 'fileName=Q3 outreach' \
--form 'emailColumn=Work Email' \
--form mode=catch_allimport requests
url = "https://api.deliverable.co/gateway/verify/bulk"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"fileName": "Q3 outreach",
"emailColumn": "Work Email",
"mode": "catch_all"
}
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('fileName', 'Q3 outreach');
form.append('emailColumn', 'Work Email');
form.append('mode', 'catch_all');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.deliverable.co/gateway/verify/bulk', 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.deliverable.co/gateway/verify/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"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.deliverable.co/gateway/verify/bulk"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.deliverable.co/gateway/verify/bulk")
.header("x-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deliverable.co/gateway/verify/bulk")
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.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"message": {
"status": "success",
"statusCode": 200,
"description": "Email added to queue successfully"
},
"data": {
"file_id": "file_abc123xyz"
}
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}Verify Bulk Emails
Upload a CSV file for bulk email verification. The file must have a header row. If you omit emailColumn, the API looks for a column named Email. Pass emailColumn if your header is something else (for example Work Email or email). Returns a file_id to track the processing status via /verify/bulk/status. Consumes credits based on the number of emails in the file. Max file size is 25MB.
curl --request POST \
--url https://api.deliverable.co/gateway/verify/bulk \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form file=@example-file \
--form 'fileName=Q3 outreach' \
--form 'emailColumn=Work Email' \
--form mode=catch_allimport requests
url = "https://api.deliverable.co/gateway/verify/bulk"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"fileName": "Q3 outreach",
"emailColumn": "Work Email",
"mode": "catch_all"
}
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('fileName', 'Q3 outreach');
form.append('emailColumn', 'Work Email');
form.append('mode', 'catch_all');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.deliverable.co/gateway/verify/bulk', 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.deliverable.co/gateway/verify/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"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.deliverable.co/gateway/verify/bulk"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.deliverable.co/gateway/verify/bulk")
.header("x-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deliverable.co/gateway/verify/bulk")
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.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fileName\"\r\n\r\nQ3 outreach\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emailColumn\"\r\n\r\nWork Email\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"mode\"\r\n\r\ncatch_all\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"message": {
"status": "success",
"statusCode": 200,
"description": "Email added to queue successfully"
},
"data": {
"file_id": "file_abc123xyz"
}
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}{
"error": 400,
"message": "Invalid request body"
}Authorizations
API key for authentication. Pass your API key in the x-api-key header.
Body
CSV file with a header row. One of the columns must contain the email addresses to verify. If you omit emailColumn, that column must be named Email. Max size: 25MB.
Name to identify this file upload
"Q3 outreach"
Optional. Header name of the CSV column that holds the email addresses (for example Work Email or email). Omit this field to use a column named Email. Must be a column name, not an email address. If the header is missing from the file, the request is rejected with Email column header is missing from the file.
"Work Email"
The mode to verify the email addresses, by default it is set to catch_all
catch_all, non_catch_all "catch_all"

