Contact health
/api/v1/verifications/summaryHow your subscribed contacts stand — the ones a send would reach; unsubscribed, bounced, complained and unconfirmed contacts are not counted. Free, and never a probe.
by_status splits total_subscribed by email_status, and its seven keys always add up to
it: never_checked is a null email_status (from before Bounce protection launched),
not_checked was added after it and not checked. A full inbox counts under risky.
safe_percent is valid plus risky, less the contacts whose full inbox is being held,
over total_subscribed, rounded down. It is null when fewer than half are checked — then
say how many are not checked yet instead of a percentage.
The two look_bad_about counts are free counts over the not-checked contacts and over the
last 7 days' new ones, rounded as POST /verifications/peek rounds them. 0 means fewer
than 10; null means we have no count yet (it is made in the background, so ask again in a
minute), the checker could not be asked, or there are fewer than 10 addresses to count.
launch_check: running while we check your existing contacts once, free, at launch;
done after; null when that never ran for your account.
Request
/api/v1/verifications/summarycurl -X GET 'https://app.mailyte.com/api/v1/verifications/summary' \
-H 'Authorization: Bearer mk_live_YOUR_API_KEY'const response = await fetch('https://app.mailyte.com/api/v1/verifications/summary', {
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/summary",
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/summary');
$data = $response->json('data');require "net/http"
require "json"
uri = URI("https://app.mailyte.com/api/v1/verifications/summary")
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
How your subscribed contacts stand with checks.
dataobjecttotal_subscribedintegerYour subscribed contacts: the ones a send would reach.
by_statusobjectThe subscribed contacts by `email_status`. The seven always add up to `total_subscribed`.
validintegerriskyintegerIncludes full inboxes.
invalidintegerunknownintegerpendingintegerBeing checked now.
not_checkedintegerAdded after Bounce protection launched and not checked.
never_checkedintegerA null `email_status`: from before Bounce protection launched.
safe_percentinteger`valid` plus `risky`, less the full inboxes being held, as a percentage of `total_subscribed`, rounded down. **Null when fewer than half are checked**, or with no subscribed contacts.
not_checked_look_bad_aboutintegerAbout how many of the not-checked contacts (`not_checked` and `never_checked`) look bad. `0` means fewer than 10. Null while the count is being made, when the checker could not be asked, or with fewer than 10 to count.
recentobjectdaysinteger7addedintegerSubscribed contacts added in the last 7 days.
added_by_appintegerOf those, added through the API (POST or PUT /contacts).
look_bad_aboutintegerAbout how many of them look bad; read as `not_checked_look_bad_about`.
not_checked_by_appintegerSubscribed contacts added through the API and not checked (null or `not_checked`).
launch_checkstringrunning | doneOur one free check of your existing contacts at launch: `running`, `done`, or null when it never ran for your account.
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.