Check a message before sending

Check a message before you send it and get back a report with a verdict, a score and the findings.

POSThttps://app.usenotix.dev/api/v1/deliverability/check

Full access and sending access keys can call this. Key permissions lists the extra rules some calls have.

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.

Body parameters

fromstringrequired

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. At most 320 characters.

subjectstringrequired

The subject line as a recipient would see it.

At most 998 characters.

htmlstring

The HTML body. Provide this or templateId, not both.

At most 2,000,000 characters.

textstring

The plain text alternative. Optional, and only meaningful alongside html.

At most 2,000,000 characters.

templateIdstring

A saved template to render and check. Provide this or html, not both.

At most 64 characters.

variablesmap of string

Values for the template's variables: at most 200, each at most 10000 characters. Ignored when html is provided.

marketingboolean

Whether this is marketing content. Marketing content without an unsubscribe link is a block finding. Defaults to false.

Headers

Authorizationstringrequired

Bearer followed by your API key.

Errors

400

Invalid input, for example neither or both of html and templateId, a missing from, or an empty subject

404

No template with this id for the calling team

429

The team's API rate limit was exceeded

Every error has the same shape. See all error codes.

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",
  "html": "<p>Read the update.</p>"
}'
Response200
{
  "verdict": "WARN",
  "score": 85,
  "findings": [
    {
      "id": "unsubscribe_missing",
      "severity": "block",
      "title": "The email has no unsubscribe link",
      "detail": "Marketing email must give every recipient a way to unsubscribe.",
      "fix": "Add the unsubscribe link block to the footer of this email."
    }
  ],
  "spam": {
    "available": true
  },
  "checkedAt": "2026-09-07T12:00:00.000Z",
  "budgetExceeded": []
}
Open in ClaudeOpen in ChatGPT