NextMail

API reference

The NextMail REST API is JSON-only, scoped per tenant via your API key, and versioned. Every request requires Authorization: Bearer nm_… in the header.

Endpoints

POST/v1/emails
GET/v1/emails/:id
GET/v1/emails
POST/v1/templates
GET/v1/templates/:slug
GET/v1/suppressions
POST/v1/suppressions
DELETE/v1/suppressions/:email
POST/v1/webhooks
GET/v1/webhooks
POST/v1/api-keys
GET/v1/api-keys

POST /v1/emails

The primary send endpoint. Accepts a JSON body and returns a queued message id.

Request

application/json
{
  "from":     "noreply@mail.example.com",
  "to":       "user@example.com",
  "replyTo":  "support@example.com",
  "subject":  "Your password reset",
  "html":     "<p>Click to reset.</p>",
  "text":     "Click to reset.",
  "template": "password-reset",
  "data":     { "name": "Sarah", "resetUrl": "https://..." },
  "tags":     ["flow:password-reset"],
  "metadata": { "userId": "u_42" }
}

Either html + text or template + data must be present. Templates win when both are sent.

Response

HTTP 202 Accepted
{
  "messageId": "msg_8gK9p2x1WqYz",
  "status":    "QUEUED",
  "queuedAt":  "2026-05-27T12:48:21.991Z"
}

Errors

Full per-endpoint details ship with the OpenAPI spec under /v1/openapi.json.