Send Email with Sendar

Send a single email. The domain in the from address must be added and verified in your account first.

POST /emails

Send a single email. The domain in the from address must be added and verified in your account first.

const response = await fetch("https://sendar.app/api/emails", {
  method: "POST",
  headers: {
    Authorization: "Bearer sndr_xxxxxxxxxxxx",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "from": "Acme <hello@acme.com>",
    "to": [
      "delivered@example.com"
    ],
    "subject": "Hello World",
    "html": "<p>It works!</p>"
  }),
});

const data = await response.json();
console.log(data);

Usage note 1

Provide html, text, or both — at least one is required (or pass templateId instead, see Send with a Template).

Usage note 2

Add scheduledAt (ISO 8601, up to 30 days ahead) to schedule the send instead of delivering immediately. Scheduled sending is available on the Growth plan and above.

Usage note 3

Attach files with attachments: up to 5 files, 1.3MB total, content base64-encoded.

Usage note 4

Set trackOpens / trackClicks (booleans) to record opens and link clicks for this email — omit them to use your account defaults from Settings. Tracking only works on HTML bodies: opens use an invisible pixel, clicks rewrite links through a redirect.

Usage note 5

Every plan includes a monthly sending quota (3,000 emails per month on Free — see the Pricing page); requests over the limit return a 429 error. Canceled emails don't count toward the quota.

Example response

The response below is illustrative. Provider acceptance is not proof of delivery to the inbox.

{
  "id": 42,
  "providerEmailId": "0100019a7f3d2c8e-…",
  "fromAddress": "Acme <hello@acme.com>",
  "toAddresses": [
    "delivered@example.com"
  ],
  "subject": "Hello World",
  "status": "sent",
  "errorMessage": null,
  "scheduledAt": null,
  "trackOpens": false,
  "trackClicks": false,
  "openedAt": null,
  "clickedAt": null,
  "openCount": 0,
  "clickCount": 0,
  "createdAt": "2026-07-15T16:00:00.000Z",
  "updatedAt": "2026-07-15T16:00:01.000Z"
}

Sendar pricing · Integration guides