Get a verification's results
/api/v1/verifications/{verification}/resultsOne answer per address. result is what to do: send to valid, risky and unknown; mail
to invalid is refused. reason says what was found, never how — an address known not to
exist reads the same however we learned it.
risky with reason inbox_full (and the flag full) means the mailbox has no space: mail
will bounce until the person clears it. Once Bounce protection is on for your account,
marketing to that contact is held for 7 days (email_full_until on the contact), then
checked again, free.
q and result narrow the answers before they are paged, so a page is a page of the
matches: ?q=techies.africa finds everyone on that domain, ?result=invalid,risky keeps
only those two answers, and offset then counts the matches rather than the whole run.
Add format=csv to download the whole verification as a CSV file instead.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
verificationrequired | path | string | The verification identifier. |
offset | query | integer | Skip this many answers. Counted over the matches when q or result is sent. Default 0. |
limit | query | integer | Answers to return, 1–5,000. Default 1,000. |
q | query | string | Keep the addresses containing this text, ignoring case. A domain finds everyone on it. |
result | query | string | Keep only these answers, comma separated: valid, invalid, risky, unknown, pending. An answer we do not know is a 422. |
format | query | string | csv for the whole verification as a download. q and result do not narrow it. |
Request
/api/v1/verifications/{verification}/resultscurl -X GET 'https://app.mailyte.com/api/v1/verifications/01JBT8XQ2M9WYC3K4F6R7S8T9V/results' \
-H 'Authorization: Bearer mk_live_YOUR_API_KEY'const response = await fetch('https://app.mailyte.com/api/v1/verifications/01JBT8XQ2M9WYC3K4F6R7S8T9V/results', {
method: 'GET',
headers: {
Authorization: 'Bearer mk_live_YOUR_API_KEY',
},
});
const { data } = await response.json();import requests
response = requests.get(
"https://app.mailyte.com/api/v1/verifications/01JBT8XQ2M9WYC3K4F6R7S8T9V/results",
headers={"Authorization": "Bearer mk_live_YOUR_API_KEY"},
)
data = response.json()["data"]<?php
$response = Http::withToken('mk_live_YOUR_API_KEY')
->get('https://app.mailyte.com/api/v1/verifications/01JBT8XQ2M9WYC3K4F6R7S8T9V/results');
$data = $response->json('data');require "net/http"
require "json"
uri = URI("https://app.mailyte.com/api/v1/verifications/01JBT8XQ2M9WYC3K4F6R7S8T9V/results")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer mk_live_YOUR_API_KEY"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }Response
Success.
dataarray<object>objectstringverification_resultemailstringresultstringvalid | invalid | risky | unknown | pendingThe answer. Mail to
invalidis refused;riskyandunknownare sent as normal;pendingis still being checked.riskywith reasoninbox_fullmeans the mailbox has no space: while Bounce protection is on, marketing to this contact waits 7 days and the address is checked again.reasonstringmailbox_exists | mailbox_does_not_exist | domain_cannot_receive_mail | misspelt_domain | invalid_syntax | disposable_address | accepts_all_addresses | role_address | provider_does_not_confirm | inbox_full | could_not_confirm | checkingflagsarray<string>role: info@, sales@ and the like.disposable: a throwaway inbox (marketing to it is not sent).catch_all: the domain accepts any address.full: the mailbox has no space.suggestionstring or nullFor
misspelt_domainonly: the address as it was probably meant (ada@gmail.congivesada@gmail.com). Null for every other answer.
Returned inside the standard envelope.
Errors
| Status | When |
|---|---|
401 | The API key is missing, unknown, revoked or expired. All four answer identically, on purpose: distinguishing them would confirm which keys exist. |
403 | The key is valid but may not do this: it lacks the required scope, its IP allowlist does not include you, or this endpoint does not accept API keys. |
404 | No such resource in this organization. |
422 | The request was understood but the values were not acceptable. |
429 | Too many requests, or the organization has spent its sending allowance. `Retry-After` says how long to wait. |
Every status, with what causes it and what to do, is on the error reference.