Deliverability.
Check a message for problems before you send it. Every request needs an API key in the Authorization header; the reference overview covers keys, errors and rate limits.
Check a message before sending
POST/v1/deliverability/checkSending or full access key
Check a message before you send it and get back a report with a verdict, a score and the findings. A BLOCK verdict describes a message the send paths would refuse; the check itself answers 200 whenever the message could be rendered.
| Field | Type | About |
|---|---|---|
fromrequired | string | The address the message would be sent from. 'Name <address>' is allowed. An address on a domain the team has not verified is a block finding. At least 3 characters. |
subjectrequired | string | The subject line as a recipient would see it. |
html | string | The HTML body. Provide this or templateId, not both. |
text | string | The plain text alternative. Optional, and only meaningful alongside html. |
templateId | string | A saved template to render and check. Provide this or html, not both. |
variables | map of string | Values for the template's variables: at most 200, each at most 10000 characters. Ignored when html is provided. |
marketing | boolean | Whether this is marketing content. Marketing content without an unsubscribe link is a block finding. Defaults to false. |
curl -X POST "https://app.usenotix.dev/api/v1/deliverability/check" \
-H "Authorization: Bearer $NOTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "news@acme.com",
"subject": "Your September update"
}'
import { Notix } from "notix-js";
const notix = new Notix(process.env.NOTIX_API_KEY);
const { data, error } = await notix.deliverability.check({
from: "Acme <news@acme.com>",
subject: "October newsletter",
html: "<p>Hello</p>",
});
console.log(data?.verdict, data?.score);
from notix import Notix
notix = Notix() # reads NOTIX_API_KEY
report, _ = notix.deliverability.check({
"from": "Acme <news@acme.com>",
"subject": "October newsletter",
"html": "<p>Hello</p>",
})
use Notix\Notix;
$notix = new Notix(getenv('NOTIX_API_KEY'));
$report = $notix->deliverability->check([
'from' => 'Acme <news@acme.com>',
'subject' => 'October newsletter',
'html' => '<p>Hello</p>',
]);
Responses
200The report. A BLOCK verdict describes a message the send paths would refuse; this endpoint itself always answers 200 when the message could be rendered
| Field | Type | About |
|---|---|---|
verdictrequired | string | BLOCK when any block finding is present, else WARN when any warn finding is present, else PASS. One of |
scorerequired | number | 0 to 100. Higher is better. |
findingsrequired | object[] | Ordered block first, then warn, then info. |
findings[].idrequired | string | The stable id of the check that produced this finding. |
findings[].severityrequired | string | A block finding refuses the send, a warn advises, an info observes. One of |
findings[].titlerequired | string | |
findings[].detailrequired | string | |
findings[].fixrequired | string | |
spamrequired | object | |
spam.availablerequired | boolean | False when the spam filter could not be reached. A filter outage never blocks a send. |
spam.score | number | The spam filter's score. Higher is worse. |
spam.symbols | object[] | The rules that fired, when the filter answered. |
spam.symbols[].namerequired | string | |
spam.symbols[].scorerequired | number | |
spam.symbols[].descriptionrequired | string | |
checkedAtrequired | string (date-time) | When the report was built. |
budgetExceededrequired | string[] | Ids of the checks that did not finish inside the time budget. These neither block nor warn. |