Sending API, SMTP & developer experience
How this is scored
How an application sends mail: a REST API and an SMTP relay with their limits stated, official SDKs and drivers for named languages and frameworks (PHP and Laravel, Node, Python, Ruby and Rails, Java, Go, .NET), stored templates with variables and versions, batch sending, attachments, idempotency keys, scheduled sending, a test or sandbox mode that does not deliver, inbound email parsed into a webhook, and the quality of the API reference and guides.
0 — Not a sending service; an application cannot send email through it by API or SMTP.
3 — An API or SMTP credentials to send a message; SDKs, templates, limits and a test mode are basic or not described.
5 — A documented REST API and SMTP relay, official SDKs for several named languages, stored templates with variables, attachments and batch sending, rate limits stated, a sandbox or test mode, and quick-start guides for named frameworks.
8 — An API reference with every endpoint and error code, idempotency keys, scheduled sending, template versions and a template language documented, inbound email parsed to a webhook, an OpenAPI specification or official CLI, framework drivers maintained by the vendor, and a migration guide from named competitors.
10 — An API a team builds its product on: versioning and deprecation policy published, backward compatibility stated, full parity between API and SMTP features, local or staging test tooling that mirrors production, and every limit, timeout and retry behaviour documented.
The Skeptic
A documented send endpoint returning a message ID, a batch endpoint validating up to 100 messages as one unit, idempotency keys with a replay header, scheduled sending, stored templates with a documented Liquid engine plus React Email, a sandbox that simulates deliveries, bounces and spam complaints, inbound mail parsed to a webhook, and an official CLI, MCP server and SDKs in four languages — with rate limits per plan and per-field limits spelled out. I stop short of the top because SMTP deliberately sends the exact MIME you submit without rendering stored templates, and we found no public information on an OpenAPI specification, framework drivers maintained by the vendor, an API versioning policy, or a migration guide from named competitors beyond a SparkPost transition page that warns a SparkPost request cannot be sent unchanged. 1 2 3 6 13 14