Choosing a sending feature
Pick between a single send, a batch, a scheduled send, a template, and a marketing send, and see which ones combine.
One endpoint, POST /v1/emails, sends mail. Batch, scheduling, templates, attachments, and marketing classification are modifiers on that one call, not separate products, so the question is rarely "which endpoint" and usually "which fields."
Decision table
| Feature | What it is | Use it when | Field or endpoint | Guide |
|---|---|---|---|---|
| Single send | One message, one call | You're sending one message right now | POST /v1/emails | How sending works |
| Batch | Many messages in one request | You have a list to send in one pass | POST /v1/emails/batch | Batch sending |
| Scheduled send | A send that dispatches later | The message shouldn't go out yet | scheduled_at | Scheduled sends |
| Template | Server-rendered content from a stored template | The body is templated rather than composed per call | template | Templates |
| Attachments | Files carried with the message | The message needs to carry a file, or embed an inline image | attachments | Attachments |
| Marketing | A commercial send with its own compliance gates | The message is a newsletter, promo, or other commercial mail | type: "marketing" | Unsubscribe links |
They combine
Batch, scheduling, templates, attachments, and marketing classification are independent fields on the same request, so most of them combine: a scheduled batch of template renders carrying a PDF is just those four fields set together, not a separate product.
The one hard exclusion sits inside a single message: a marketing send accepts exactly one recipient across to, cc, and bcc, so it cannot fan out to several people the way a transactional send can. That limit is per message rather than per request: a batch may carry marketing messages, each addressed to one recipient. See Send an email for the type field's full schema and How sending works for what a single accepted send covers.
Batch or a loop
A batch call and a client-side loop of single sends both deliver to a list, but they aren't interchangeable: a batch is checked and accepted as one all-or-nothing unit, while a loop gives you per-message error isolation and per-message idempotency keys at the cost of making N requests instead of one. See Batch or loop? for the full comparison.
Transactional or marketing
The type field controls classification, not the category tag: it takes transactional or marketing and defaults to transactional when omitted. Classification follows the message's primary purpose rather than the system that triggered it. See Email categories for where the line falls between the two, and Unsubscribe links for what a marketing send additionally requires and enforces.
