Validate an email address
curl --request POST \
--url https://api.sendkit.dev/emails/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "user@example.com"
}
'import requests
url = "https://api.sendkit.dev/emails/validate"
payload = { "email": "user@example.com" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'user@example.com'})
};
fetch('https://api.sendkit.dev/emails/validate', 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.sendkit.dev/emails/validate",
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([
'email' => 'user@example.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.sendkit.dev/emails/validate"
payload := strings.NewReader("{\n \"email\": \"user@example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.sendkit.dev/emails/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sendkit.dev/emails/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"user@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"email": "jsmith@example.com",
"is_valid": true,
"evaluations": {
"has_valid_syntax": true,
"has_valid_dns": true,
"mailbox_exists": true,
"is_role_address": true,
"is_disposable": true,
"is_random_input": true
},
"should_block": true,
"validated_at": "2026-03-03 10:00:00"
}{
"name": "validation_error",
"message": "The from address domain is not verified."
}{
"message": "Insufficient validation credits."
}{
"name": "validation_error",
"message": "The from address domain is not verified."
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Emails
Validate an email address
Validate an email address by checking syntax, DNS records, mailbox existence, and whether it is a disposable or role-based address.
POST
/
emails
/
validate
Validate an email address
curl --request POST \
--url https://api.sendkit.dev/emails/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "user@example.com"
}
'import requests
url = "https://api.sendkit.dev/emails/validate"
payload = { "email": "user@example.com" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({email: 'user@example.com'})
};
fetch('https://api.sendkit.dev/emails/validate', 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.sendkit.dev/emails/validate",
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([
'email' => 'user@example.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.sendkit.dev/emails/validate"
payload := strings.NewReader("{\n \"email\": \"user@example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.sendkit.dev/emails/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"user@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sendkit.dev/emails/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"user@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"email": "jsmith@example.com",
"is_valid": true,
"evaluations": {
"has_valid_syntax": true,
"has_valid_dns": true,
"mailbox_exists": true,
"is_role_address": true,
"is_disposable": true,
"is_random_input": true
},
"should_block": true,
"validated_at": "2026-03-03 10:00:00"
}{
"name": "validation_error",
"message": "The from address domain is not verified."
}{
"message": "Insufficient validation credits."
}{
"name": "validation_error",
"message": "The from address domain is not verified."
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Authorizations
API key from your SendKit dashboard. Pass it as a Bearer token in the Authorization header.
Body
application/json
The email address to validate.
Example:
"user@example.com"
Response
Validation result
The email address that was validated.
Whether the email address is considered valid.
Detailed evaluation results.
Show child attributes
Show child attributes
Whether this email should be blocked from receiving emails.
The reason the email should be blocked, if applicable.
Available options:
invalid_syntax, invalid, disposable_email, null When the validation was performed.
Example:
"2026-03-03 10:00:00"
⌘I

