Skip to content

Send an email

POST/v1/emails/send

Sends an email via the connected email account that owns the from address. Currently supports new sends only; replies and forwards are not yet supported.

Supports idempotency via the Idempotency-Key header.

Required scope: emails:create

Rate limit category: Write

Body ParametersJSONExpand Collapse
from: string

Bare email address (no display name). Must match a connected email account owned by the API key user. Compared case-insensitively. Used as the From header when sending.

messageBody: object { content, contentType }

Email message body (HTML or plain text).

content: string

Email body content.

minLength1
contentType: optional "HTML" or "TEXT"

Defaults to HTML.

One of the following:
"HTML"
"TEXT"
subject: string

Email subject. Cannot be empty.

minLength1
to: array of string

Recipient email addresses (bare, no display names). At least 1, at most 500.

attachments: optional array of string

Optional list of file IDs (uploaded via the Files API) to attach to the email. Maximum 5 attachments per email, each ≤ 3MB.

bcc: optional array of string

Bcc recipients (same shape as to).

cc: optional array of string

Cc recipients (same shape as to).

ReturnsExpand Collapse
EmailSendResponse object { sentAt }
sentAt: string

ISO 8601 timestamp of when the send completed.

Send an email

curl https://api.lightfield.app/v1/emails/send \
    -H 'Content-Type: application/json' \
    -H 'Lightfield-Version: 2026-03-01' \
    -H "Authorization: Bearer $API_KEY" \
    -d '{
          "from": "sales@acme.com",
          "messageBody": {
            "content": "<p>Hi there,</p><p>Following up on our chat earlier this week.</p>",
            "contentType": "HTML"
          },
          "subject": "Following up on our chat",
          "to": [
            "lead@example.com"
          ]
        }'
{
  "sentAt": "sentAt"
}
Returns Examples
{
  "sentAt": "sentAt"
}