Skip to main content
POST
Create a draft, send, or schedule a newsletter

Authorizations

Authorization
string
header
required

Passport bearer token authentication for legacy admin sessions.

Body

application/json

Validated request fields for this operation.

from
string<email>
required

Recorded actor/sender email; actual delivery uses organization email settings.

Example:

"admin@example.org"

message
string
required

Newsletter HTML; saved Impact Story evidence is checked when present.

Example:

"<p>Thank you for supporting education.</p>"

title
string
required
Example:

"Education field update"

status
enum<string>
required
Available options:
draft,
sent,
scheduled
Example:

"draft"

to
integer[] | null

Legacy/manual donor ids; selects server-owned current addresses when audience intent is present.

Organization-owned record identifier.

emails
string<email>[] | null

Explicit email audience only when no server-resolved audience intent is supplied.

tag
string | null

Legacy comma-separated tag selection; tags/audience_selection take priority.

Example:

"Education"

tags
string[] | null
audience_selection
object | null

Server-resolved audience intent. all snapshots all active donors with nonblank email; static unions current ANY-tag matches with additions minus exclusions; manual uses individual ids. Unknown/non-tenant/no-email ids are omitted.

select_all_donors
boolean | null

Overrides other selection fields with an all-donor snapshot.

Example:

false

design
any | null

Editor design object or serialized string; persisted as text.

attachment
string | null

Existing attachment reference; no multipart upload is performed.

Example:

"https://example.org/newsletter.pdf"

fileName
string | null

Legacy attachment alias; attachment takes priority.

Example:

"https://example.org/newsletter.pdf"

scheduled_at
string | null

Legacy local/offset date-time; required for scheduling unless schedule is provided. Must be at least five minutes ahead.

Example:

"2026-10-27T15:00:00"

timezone
string | null

IANA timezone; otherwise stored/account/admin timezone fallback.

Maximum string length: 64
Example:

"Africa/Kampala"

schedule
object

Response

Operation result.

Send/approve/retry receipt; id/title/schedule fields depend on operation. Successful queueing does not prove provider acceptance or inbox delivery.

message
string
Example:

"News letter is being sent"

status
enum<string>
Available options:
draft,
scheduled,
sending,
sent,
failed,
skipped
Example:

"sending"

id
integer

Organization-owned record identifier.

Example:

42

title
string
Example:

"Education field update"

scheduled_at
string<date-time> | null
Example:

"2026-10-20T12:00:00Z"

timezone
string | null
Example:

"Africa/Kampala"

scheduled_timezone
string | null
Example:

"Africa/Kampala"

schedule_source
string | null
Example:

"calendar"

recipient_count
integer

Count.

Required range: x >= 0
Example:

1

eligible_recipient_count
integer | null

Null while eligibility is deferred for audiences larger than500.

Required range: x >= 0
Example:

1

suppressed_recipient_count
integer | null

Null while eligibility is deferred for audiences larger than500.

Required range: x >= 0
Example:

0

recipient_eligibility_pending
boolean

Present and true only when eligibility is deferred.

Example:

true