Skip to main content
Everything goes through POST /emails. This page covers the parts the reference doesn’t explain.

Sender

from takes a bare address or a display name with the address in angle brackets:
With a live key, the address must belong to a verified domain. Any local part works: billing@, no-reply@, team@.

Recipients

to takes one address or a list. cc and bcc take lists. An email can have up to 50 recipients in total, and each one costs a credit.
Addresses that hard-bounced or complained before are on your suppression list. PulseSend drops them from the email before sending and doesn’t charge for them. If every recipient is suppressed, the call fails with all_recipients_suppressed.

Content

Send html, text, or both. Without either, the call fails with missing_body. When you only send HTML, most clients are happy; sending a text version too helps a few spam filters.

Tags and headers

tags are labels you choose, up to 10, to find emails later on the dashboard:
headers adds custom headers, up to 20:

After the 202

The API stores the email, charges the credits and answers 202 Accepted with status: "queued". Delivery happens in the background: Follow these changes with webhooks, or fetch the email with GET /emails/{id}.