Email Verification
This endpoint allows you to verify emails through the MailerSend Email API.
Verify an email
If you want to verify a single email, use this POST
request:
POST https://api.mailersend.com/v1/email-verification/verify
Request parameters
JSON parameter | Type | Required | Limitations | Details |
---|---|---|---|---|
email | string | yes |
Responses
Valid
{
"status": "valid"
}
Not enough credits error
Response Code: 402 Payment Required
Response Headers:
content-type: application/json
{
"message": "Not enough credits. Credits required: 1"
}
Verification results
The possible outcome of an email validation can be grouped in 3 categories: Valid, Risky and Do Not Send.
Valid
Result | Description |
---|---|
valid | Email is safe to send. |
Risky
Result | Description |
---|---|
catch_all | Recipient's mail server will accept emails to this address, but we cannot guarantee this email address belongs to a person. |
mailbox_full | Recipient’s inbox is full and may not be able to receive new emails. |
role_based | Email is role-based and may not be associated with a single, specific person but a group of people. |
unknown | We are unable to determine if the email is valid or not valid. |
failed | We could not perform the check due to timeouts. Verify the email by importing a list. |
Do Not Send
Result | Description |
---|---|
syntax_error | The email address is not valid. |
typo | The email address has a typo. Correct the email address and retest. |
mailbox_not_found | Recipient’s inbox does not exist. |
disposables | The email address is a temporary inbox and should be removed from your lists. |
mailbox_blocked | The email address’ mailbox is blocked by its service provider due to poor sending practices. |
See - Validation errors
Get all lists
Get all email verifications lists with this GET
request:
GET https://api.mailersend.com/v1/email-verification
Request parameters
Query parameter | Type | Required | Limitations | Details |
---|---|---|---|---|
page | int | no | ||
limit | int | no | Min: 10 , Max: 100 | Default: 25 |
use MailerSend\MailerSend;
$mailersend = new MailerSend(['api_key' => 'key']);
$mailersend->emailVerification->getAll($page = 1, $limit = 10);
import 'dotenv/config';
import { MailerSend } from "mailersend";
const mailerSend = new MailerSend({
apiKey: process.env.API_KEY,
});
mailerSend.emailVerification.list({
limit: 10,
page: 1
})
.then((response) => console.log(response.body))
.catch((error) => console.log(error.body));
from mailersend import email_verification
api_key = "API key here"
mailer = email_verification.NewEmailVerification(api_key)
mailer.get_all_lists()
package main
import (
"context"
"log"
"time"
"github.com/mailersend/mailersend-go"
)
var APIKey = "Api Key Here"
func main() {
// Create an instance of the mailersend client
ms := mailersend.NewMailersend(APIKey)
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
options := &mailersend.ListEmailVerificationOptions{
Page: 1,
Limit: 25,
}
_, _, err := ms.EmailVerification.List(ctx, options)
if err != nil {
log.Fatal(err)
}
}
import com.mailersend.sdk.MailerSend;
import com.mailersend.sdk.exceptions.MailerSendException;
import com.mailsend.sdk.emailverification.EmailVerificationList;
import com.mailsend.sdk.emailverification.EmailVerificationLists;
public void getLists() {
MailerSend ms = new MailerSend();
ms.setToken("mailersend token");
try {
EmailVerificationLists lists = ms.emailVerification().getLists();
for (EmailVerificationList list : lists.lists) {
System.out.println(list.id);
System.out.println(list.name);
}
} catch (MailerSendException e) {
e.printStackTrace();
}
}
require "mailersend-ruby"
ms_email_verification = Mailersend::EmailVerification.new
ms_email_verification.list(page: 1, limit: 10)
Responses
Valid
{
"data": [
{
"id": "n3k6d1jr1eq50x4v",
"name": "Example List",
"total": 0,
"verification_started": null,
"verification_ended": null,
"created_at": "2022-07-19T15:11:18.000000Z",
"updated_at": "2022-07-19T15:11:18.000000Z",
"status": {
"name": "uploading",
"count": 0
},
"source": "api",
"statistics": {
"valid": 0,
"catch_all": 0,
"mailbox_full": 0,
"role_based": 0,
"unknown": 0,
"syntax_error": 0,
"typo": 0,
"mailbox_not_found": 0,
"disposable": 0,
"mailbox_blocked": 0,
"failed": 0
}
}
],
"links": {
"first": "http:\/\/localhost:8080\/api\/v1\/email-verification?page=1",
"last": null,
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"path": "http:\/\/localhost:8080\/api\/v1\/email-verification",
"per_page": "10",
"to": 1
}
}
Get a single list
If you want to retrieve information about a single email verification list, use this GET
request:
GET https://api.mailersend.com/v1/email-verification/{email_verification_id}
Request parameters
URL parameter | Type | Required | Limitations | Details |
---|---|---|---|---|
email_verification_id | string | yes |
Check verification status
You can use this endpoint to check the verification status, with the following possible status:
Status | Description |
---|---|
uploading | The email addresses are being uploaded to our system. |
created | The list has been created and is ready to be verified. |
verifying | The verification process is ongoing. |
verified | The verification process has finished successfully. |
failed | The verification process has run into an internal error. |
You can also check how many emails have been verified by consulting the count
property of the status object.
Example of status in the payload:
"status": {
"name": "verifying",
"count": 5
}
use MailerSend\MailerSend;
$mailersend = new MailerSend(['api_key' => 'key']);
$mailersend->emailVerification->find('email_verification_id');
import 'dotenv/config';
import { MailerSend } from "mailersend";
const mailerSend = new MailerSend({
apiKey: process.env.API_KEY,
});
mailerSend.emailVerification.single("email_verification_id")
.then((response) => console.log(response.body))
.catch((error) => console.log(error.body));
from mailersend import email_verification
api_key = "API key here"
mailer = email_verification.NewEmailVerification(api_key)
email_verification_list_id = 123456
mailer.get_list(email_verification_list_id)
package main
import (
"context"
"log"
"time"
"github.com/mailersend/mailersend-go"
)
var APIKey = "Api Key Here"
func main() {
// Create an instance of the mailersend client
ms := mailersend.NewMailersend(APIKey)
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
_, _, err := ms.EmailVerification.Get(ctx, "email-verification-id")
if err != nil {
log.Fatal(err)
}
}
import com.mailersend.sdk.MailerSend;
import com.mailersend.sdk.exceptions.MailerSendException;
import com.mailsend.sdk.emailverification.EmailVerificationList;
public void getList() {
MailerSend ms = new MailerSend();
ms.setToken("mailersend token");
try {
EmailVerificationList list = ms.emailVerification().getList("list id");
System.out.println(list.name);
} catch (MailerSendException e) {
e.printStackTrace();
}
}
require "mailersend-ruby"
ms_email_verification = Mailersend::EmailVerification.new
ms_email_verification.get_single_list(email_verification_id: 'your-email-verification-id')
Responses
Valid
{
"data": {
"id": "n3k6d1jr1eq50x4v",
"name": "Example List",
"total": 0,
"verification_started": null,
"verification_ended": null,
"created_at": "2022-07-19T15:11:18.000000Z",
"updated_at": "2022-07-19T15:11:18.000000Z",
"status": {
"name": "uploading",
"count": 0
},
"source": "api",
"statistics": {
"valid": 0,
"catch_all": 0,
"mailbox_full": 0,
"role_based": 0,
"unknown": 0,
"syntax_error": 0,
"typo": 0,
"mailbox_not_found": 0,
"disposable": 0,
"mailbox_blocked": 0,
"failed": 0
}
}
}
Error
Response Code: 422 Unprocessable Entity
See - Validation errors
Create a list
If you want to add a new email verification list, use this POST
request:
POST https://api.mailersend.com/v1/email-verification
Request body
{
"name": "Example List",
"emails": [
"example1@mail.com",
"example2@mail.com"
]
}
use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\EmailVerificationParams;
$mailersend = new MailerSend(['api_key' => 'key']);
$emailVerificationParams = (new EmailVerificationParams('file.csv'))
->setEmailAddresses(['test@mail.com']);
$mailersend->emailVerification->create($emailVerificationParams);
import 'dotenv/config';
import { EmailVerification, MailerSend } from "mailersend";
const mailerSend = new MailerSend({
apiKey: process.env.API_KEY,
});
const emailVerification = new EmailVerification()
.setName("List example")
.setEmails([
"info@mailersend.com",
"test@mailersend.com"
]);
mailerSend.emailVerification.create(emailVerification)
.then((response) => console.log(response.body))
.catch((error) => console.log(error.body));
from mailersend import email_verification
api_key = "API key here"
mailer = email_verification.NewEmailVerification(api_key)
name = "My List"
emails = [
"some@email.com",
"another@email.com"
]
mailer.create_list(name, emails)
package main
import (
"context"
"log"
"time"
"github.com/mailersend/mailersend-go"
)
var APIKey = "Api Key Here"
func main() {
// Create an instance of the mailersend client
ms := mailersend.NewMailersend(APIKey)
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
options := &mailersend.CreateEmailVerificationOptions{
Name: "Email Verification List ",
Emails: []string{"your@client.com", "your@client.eu"},
}
_, _, err := ms.EmailVerification.Create(ctx, options)
if err != nil {
log.Fatal(err)
}
}
import com.mailersend.sdk.MailerSend;
import com.mailersend.sdk.exceptions.MailerSendException;
import com.mailsend.sdk.emailverification.EmailVerificationList;
public void createList() {
MailerSend ms = new MailerSend();
ms.setToken("mailersend token");
try {
EmailVerificationList list = ms.emailVerification().builder()
.name("Test email verification")
.addEmail("info@example.com")
.addEmail("info1@example.com")
.addEmail("info2@example.com")
.create();
System.out.println(list.id);
} catch (MailerSendException e) {
e.printStackTrace();
}
}
require "mailersend-ruby"
ms_email_verification = Mailersend::EmailVerification.new
ms_email_verification.create_a_list(name: "name-your-list", emails: ["example@email.com"])
Request Parameters
JSON parameters are provided in dot notation
JSON Parameter | Type | Required | Limitations | Details |
---|---|---|---|---|
name | string | yes | ||
emails | string | yes | Min: 1 | |
emails.* | string | yes | Must not exceed 191 characters |
Supported file types
File type | Extensions |
---|---|
Text files | .csv, .txt |
Responses
Response Key | Type | Details |
---|---|---|
data | object | EmailVerification object created. |
Valid
Response Code: 201 CREATED
Response Headers:
content-type: application/json
{
"data": {
"id": "n3k6d1jr1eq50x4v",
"name": "Example List",
"total": 0,
"verification_started": null,
"verification_ended": null,
"created_at": "2022-07-19T15:11:18.000000Z",
"updated_at": "2022-07-19T15:11:18.000000Z",
"status": {
"name": "uploading",
"count": 0
},
"source": "api",
"statistics": {
"valid": 0,
"catch_all": 0,
"mailbox_full": 0,
"role_based": 0,
"unknown": 0,
"syntax_error": 0,
"typo": 0,
"mailbox_not_found": 0,
"disposable": 0,
"mailbox_blocked": 0,
"failed": 0
}
}
}
Invalid
Response Code: 422 Unprocessable Entity
See - Validation errors
Verify a list
If you want to verify an email verification list, use this GET
request:
GET https://api.mailersend.com/v1/email-verification/{email_verification_id}/verify
Request parameters
URL parameter | Type | Required | Limitations | Details |
---|---|---|---|---|
email_verification_id | string | yes |
Note: Sending this request while an email list is already being verified (status is
processing
) will not queue another verification. Also, sending this request when the email list is verified (status isdone
) will trigger a new verification.
use MailerSend\MailerSend;
$mailersend = new MailerSend(['api_key' => 'key']);
$mailersend->emailVerification->verify('email_verification_id');
import 'dotenv/config';
import { MailerSend } from "mailersend";
const mailerSend = new MailerSend({
apiKey: process.env.API_KEY,
});
mailerSend.emailVerification.verifyList("email_verification_id")
.then((response) => console.log(response.body))
.catch((error) => console.log(error.body));
from mailersend import email_verification
api_key = "API key here"
mailer = email_verification.NewEmailVerification(api_key)
email_verification_list_id = 123456
mailer.verify_list(email_verification_list_id)
package main
import (
"context"
"log"
"time"
"github.com/mailersend/mailersend-go"
)
var APIKey = "Api Key Here"
func main() {
// Create an instance of the mailersend client
ms := mailersend.NewMailersend(APIKey)
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
_, _, err := ms.EmailVerification.Verify(ctx, "email-verification-id")
if err != nil {
log.Fatal(err)
}
}
import com.mailersend.sdk.MailerSend;
import com.mailersend.sdk.exceptions.MailerSendException;
import com.mailsend.sdk.emailverification.EmailVerificationList;
public void verifyList() {
MailerSend ms = new MailerSend();
ms.setToken("mailersend token");
try {
EmailVerificationList list = ms.emailVerification().verifyList("list id");
System.out.println(list.status.name);
} catch (MailerSendException e) {
e.printStackTrace();
}
}
require "mailersend-ruby"
ms_email_verification = Mailersend::EmailVerification.new
ms_email_verification.verify_a_list(email_verification_id: 'your-email-verification-id')
Responses
Valid
{
"data": {
"id": "n3k6d1jr1eq50x4v",
"name": "Example List",
"total": 2,
"verification_started": "2022-07-19T15:24:19.000000Z",
"verification_ended": null,
"created_at": "2022-07-19T15:11:18.000000Z",
"updated_at": "2022-07-19T15:24:19.000000Z",
"status": {
"name": "verifying",
"count": 0
},
"source": "api",
"statistics": {
"valid": 0,
"catch_all": 0,
"mailbox_full": 0,
"role_based": 0,
"unknown": 0,
"syntax_error": 0,
"typo": 0,
"mailbox_not_found": 0,
"disposable": 0,
"mailbox_blocked": 0,
"failed": 0
}
}
}
Still uploading error
Response Code: 403 Forbidden
Response Headers:
content-type: application/json
{
"message": "The email addresses are still being uploaded, wait for the upload to finish to continue."
}
Not enough credits error
Response Code: 403 Forbidden
Response Headers:
content-type: application/json
{
"message": "You do not have enough credits to perform this operation."
}
See - Validation errors
Get list results
If you want to get the result for each individual email of an email verification list, use this GET
request:
GET https://api.mailersend.com/v1/email-verification/{email_verification_id}/results
Request parameters
URL parameter | Type | Required | Limitations | Details |
---|---|---|---|---|
email_verification_id | string | yes |
Query parameter | Type | Required | Limitations | Details |
---|---|---|---|---|
page | int | no | ||
limit | int | no | Min: 10 , Max: 100 | Default: 25 |
results | array | no | ||
results.* | string | yes | Must be one of the verification results. |
use MailerSend\MailerSend;
use MailerSend\Helpers\Builder\EmailVerificationParams;
$mailersend = new MailerSend(['api_key' => 'key']);
$mailersend->emailVerification->getResults(
$emailVerificationId = 'email_verification_id',
$page = 1,
$limit = 10,
$results = [
EmailVerificationParams::TYPO,
EmailVerificationParams::CATCH_ALL,
],
);
import 'dotenv/config';
import { EmailVerificationResultType, MailerSend } from "mailersend";
const mailerSend = new MailerSend({
apiKey: process.env.API_KEY,
});
mailerSend.emailVerification.getListResult("email_verification_id",{
limit: 10,
page: 1,
result: [EmailVerificationResultType.CATCH_ALL, EmailVerificationResultType.DISPOSABLE]
})
.then((response) => console.log(response.body))
.catch((error) => console.log(error.body));
from mailersend import email_verification
api_key = "API key here"
mailer = email_verification.NewEmailVerification(api_key)
email_verification_list_id = 123456
mailer.get_list_results(email_verification_list_id)
package main
import (
"context"
"log"
"time"
"github.com/mailersend/mailersend-go"
)
var APIKey = "Api Key Here"
func main() {
// Create an instance of the mailersend client
ms := mailersend.NewMailersend(APIKey)
ctx := context.Background()
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
options := &mailersend.GetEmailVerificationOptions{
EmailVerificationId: "email-verification-id",
Page: 1,
Limit: 25,
}
_, _, err := ms.EmailVerification.GetResults(ctx, options)
if err != nil {
log.Fatal(err)
}
}
import com.mailersend.sdk.MailerSend;
import com.mailersend.sdk.exceptions.MailerSendException;
import com.mailsend.sdk.emailverification.ListVerificationResults;
import com.mailsend.sdk.emailverification.VerificationResult;
public void verifyList() {
MailerSend ms = new MailerSend();
ms.setToken("mailersend token");
try {
ListVerificationResults results = ms.emailVerification().verificationResults("list id");
for (VerificationResult result : results.results) {
System.out.println(result.address);
System.out.println(result.result);
}
} catch (MailerSendException e) {
e.printStackTrace();
}
}
require "mailersend-ruby"
ms_email_verification = Mailersend::EmailVerification.new
ms_email_verification.get_list_results(email_verification_id: 'your-email-verification-id')
Responses
Valid
{
"data": [
{
"address": "example1@mail.com",
"result": "typo"
},
{
"address": "example2@gmail.com",
"result": "mailbox_not_found"
}
],
"links": {
"first": "http:\/\/localhost:8080\/api\/v1\/email-verification\/n3k6d1jr1eq50x4v\/results?1=1",
"last": null,
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"path": "http:\/\/localhost:8080\/api\/v1\/email-verification\/n3k6d1jr1eq50x4v\/results",
"per_page": 25,
"to": 2
}
}
Error
Response Code: 422 Unprocessable Entity
See - Validation errors
Verification results
The possible outcome of an email validation can be grouped in 3 categories: Valid, Risky and Do Not Send.
Valid
Result | Description |
---|---|
valid | Email is safe to send. |
Risky
Result | Description |
---|---|
catch_all | Recipient's mail server will accept emails to this address, but we cannot guarantee this email address belongs to a person. |
mailbox_full | Recipient’s inbox is full and may not be able to receive new emails. |
role_based | Email is role-based and may not be associated with a single, specific person but a group of people. |
unknown | We are unable to determine if the email is valid or not valid. |
Do Not Send
Result | Description |
---|---|
syntax_error | The email address is not valid. |
typo | The email address has a typo. Correct the email address and retest. |
mailbox_not_found | Recipient’s inbox does not exist. |
disposables | The email address is a temporary inbox and should be removed from your lists. |
mailbox_blocked | The email address’ mailbox is blocked by its service provider due to poor sending practices. |