Email campaign preflight
Checks an email campaign's links, UTMs, images, size, preheader and unsubscribe link before sending. 1 live · 1 in the catalog.
| Provider | Price | Status |
|---|---|---|
| Check an email campaign before sendingSuperpowers email preflight | Free | Live |
Run a comparison
Pick up to 6 live providers. Each one is charged at its own price; failures are free.
Questions
Which Email campaign preflight API is cheapest?
Superpowers email preflight is free with any Superpowers account.
Is there a free Email campaign preflight API?
Yes. Superpowers email preflight is free with any Superpowers account; you only need a key.
How do I call a Email campaign preflight API from an AI agent?
Call it with one API key: POST /v1/run with "tool": "emailcheck.preflight", or through the MCP server. Every provider takes the same input and returns the same output, and failed calls are not charged. New accounts get $5 free; see /docs for the MCP setup.
For developersAPI call and the shared input and output format
Call it with one API key: POST /v1/run with "tool": "emailcheck.preflight", or through the MCP server. Every provider takes the same input and returns the same output, and failed calls are not charged.
Input
{
"type": "object",
"additionalProperties": false,
"properties": {
"html": {
"type": "string",
"maxLength": 800000,
"description": "The email HTML as it will be sent"
},
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000,
"description": "Instead of html: a public \"view in browser\" link of the email"
},
"from_domain": {
"type": "string",
"maxLength": 253,
"description": "Sending domain, e.g. news.example.com; adds an SPF/DKIM/DMARC check"
},
"expected_utm": {
"type": "object",
"additionalProperties": false,
"description": "UTM values every tracked link should carry, e.g. {\"source\":\"newsletter\",\"campaign\":\"black-friday\"}",
"properties": {
"source": {
"type": "string",
"maxLength": 100
},
"medium": {
"type": "string",
"maxLength": 100
},
"campaign": {
"type": "string",
"maxLength": 100
}
}
},
"own_domains": {
"type": "array",
"items": {
"type": "string",
"maxLength": 253
},
"maxItems": 10,
"description": "Your own site domains; links to them should carry UTM tags (default: domains of the most linked site)"
},
"max_links": {
"type": "integer",
"minimum": 1,
"maximum": 60,
"default": 40,
"description": "How many distinct links to follow"
}
}
}Normalized output
{
"score": 0,
"findings": [
{
"severity": "",
"area": "",
"finding": "",
"fix": ""
}
],
"links": [
{
"url": "",
"status": 0,
"final_url": "",
"hops": 0
}
],
"images": [
{
"src": "",
"status": 0,
"bytes": 0,
"alt": ""
}
],
"size": {
"bytes": 0,
"clipped_in_gmail": false
}
}