Skip to main content
Reach campaigns through Lettr::campaigns(). You get read access to your campaigns plus lifecycle actions — send now, schedule, and unschedule. The SDK doesn’t create campaigns yet. To create a draft from code, call the create a campaign endpoint directly, then send or schedule it with the SDK. Editing and deleting campaigns happen in the dashboard. Reads require an API key with the campaigns:read scope; actions (send, schedule, unschedule) require campaigns:write.
$campaign->status is a CampaignStatus enum for known values, or the raw string for any future status the SDK doesn’t yet recognize — so a server-side enum addition can never break deserialization. The same applies to $event->eventType (EventType|string).

List Campaigns

API Reference

GET /campaigns

Get a Campaign

get() returns a CampaignDetail (a CampaignSummary plus the rendered htmlContent body):

API Reference

GET /campaigns/

List Campaign Events

Engagement events use cursor-based pagination:

API Reference

GET /campaigns//events

Send / Schedule / Unschedule

The three action methods always return a non-null CampaignSummary — if the API omits the campaign payload from the action response, the SDK transparently refetches it.

Send

POST /campaigns//send

Schedule

POST /campaigns//schedule

Unschedule

POST /campaigns//unschedule

What’s Next

Audience

Manage the contacts campaigns send to

API Reference

Full campaigns API reference