Check addresses before mailing them.
Syntax, DNS routing (MX, an implicit MX, or a null MX that refuses all mail), and the
workspace’s suppressions and holds. Never a mailbox probe: nothing is sent to the addresses, and
nothing is stored. A route the workspace’s sending found in DNS within the last day is answered
from that, as the sender reads it; any other is asked of DNS now, and a lookup DNS could not
answer is unknown. In a test-mode workspace only the syntax is checked, as its sender does:
its mail never leaves the fake transport.
/v1/preflightAuthorizationBearer token · headerrequiredAn API key (nb_live_…, nb_test_…), a workspace token (nbs_…) or a CLI token (nbc_…).
application/jsonemailsstring[]required1 to 100 addresses, each at most 320 characters.
One finding per address.
dataFinding[]requiredOne per address asked about, at most 100.
Show propertiesHide properties
Findingdetailstring | nullWhat is wrong with the address, when reason is syntax.
emailstringrequiredThe address as given, trimmed.
holdHoldSummary | nullShow propertiesHide properties
reasonHoldReasonrequiredWhy an address is held (recipient_holds.reason).
mailbox_fullgreylistedno_routeinvalid_recipientreview_afterTimestamprequiredWhen the hold is checked again.
nullreasonPreflightReasonrequiredWhy an address got its verdict; parsed back from the cache (recipient_validations.reason).
mximplicit_mxsyntaxno_domainnull_mxno_routedns_unavailablestatusPreflightStatusrequiredThe verdict on an address: what POST /preflight reports and, for a verdict DNS answered,
what the preflight cache keeps (recipient_validations.status); unknown is never cached.
routableinvalidunknownsuppressionSuppressionSummary | nullShow propertiesHide properties
idId_SuppressionrequiredreasonSuppressionReasonrequiredWhy an address is suppressed.
unsubscribebouncecomplaintmanualaddress_changedaccount_closedno_mail_servicenullNo valid credential.
codeProblemCoderequiredThe closed registry of problem codes: programs branch on a problem's code, never on its
text. A code may be added, never repurposed.
invalid_requestunauthorizedforbiddensession_requirednot_foundarchivedmethod_not_allowedconflictinvalid_stateidempotency_in_progressprecondition_failedpayload_too_largeunsupported_media_typevalidation_failedidempotency_mismatchsuppressedcaptcha_failedinsufficient_scoperate_limitedquota_exceededinternal_errorservice_unavailabletimeoutdetailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.
The credential lacks people:read.
codeProblemCoderequiredThe closed registry of problem codes: programs branch on a problem's code, never on its
text. A code may be added, never repurposed.
invalid_requestunauthorizedforbiddensession_requirednot_foundarchivedmethod_not_allowedconflictinvalid_stateidempotency_in_progressprecondition_failedpayload_too_largeunsupported_media_typevalidation_failedidempotency_mismatchsuppressedcaptcha_failedinsufficient_scoperate_limitedquota_exceededinternal_errorservice_unavailabletimeoutdetailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.
The body is invalid.
codeProblemCoderequiredThe closed registry of problem codes: programs branch on a problem's code, never on its
text. A code may be added, never repurposed.
invalid_requestunauthorizedforbiddensession_requirednot_foundarchivedmethod_not_allowedconflictinvalid_stateidempotency_in_progressprecondition_failedpayload_too_largeunsupported_media_typevalidation_failedidempotency_mismatchsuppressedcaptcha_failedinsufficient_scoperate_limitedquota_exceededinternal_errorservice_unavailabletimeoutdetailstringrequiredWhat went wrong, for a person; never an internal cause.
errorsFieldError[]With validation_failed only: every invalid field.
Show propertiesHide properties
FieldErrorcodestringrequiredWhat is wrong (required, range, length, format, invalid, …).
detailstringrequiredA safe, human-readable explanation.
pointerstringrequiredRFC 6901 pointer into the body, or ?name for a query parameter.
instancestringrequiredThe request's path.
request_idstringrequiredThe request's id, also in X-Request-Id: what support needs to find the request.
retry_afterinteger<int64> | nullWith 429 and 503: the seconds to wait, as in Retry-After.
statusinteger<int32>requiredThe HTTP status.
titlestringrequiredFixed per code.
typestringrequiredhttps://docs.norbelys.com/errors/<code>, a page that explains the code.