Skip to main content
POST
/
v1
/
emails
/
send
Send an email to a list of recipients
import { ParagraphAPI } from "@paragraph-com/sdk"

const api = new ParagraphAPI({ apiKey: "your-api-key" })
const result = await api.emails.send({
  subject: "Hello from Paragraph",
  body: "# Welcome\n\nThanks for reading.",
  emails: ["reader@example.com"],
})
{
  "accepted": 123,
  "skipped": [
    {
      "email": "<string>",
      "reason": "suppressed"
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://paragraph.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

API key for authenticating protected endpoints. Pass as Bearer token in Authorization header.

Body

application/json

Body

subject
string
required

Subject line of the email

Required string length: 1 - 998
body
string
required

Email body. Markdown; rendered to HTML server-side. Max 100KB.

Required string length: 1 - 100000
emails
string[]
required

Recipient email addresses (max 10,000). Malformed addresses are returned in skipped with reason: "invalid" rather than rejecting the whole request.

Required array length: 1 - 10000 elements
Required string length: 3 - 254
dryRun
boolean

If true, run filtering and return the accepted/skipped split without scheduling delivery

Response

Send request accepted

accepted
integer
required

Number of recipients queued for delivery (or that would be queued when dryRun is true)

skipped
object[]
required

Recipients that were rejected, with the reason each one was skipped. scheduling_failed means filtering passed but the delivery task could not be queued — retry these addresses.