Skip to main content
POST
/
campaigns
/
{campaignId}
/
schedule
Schedule a campaign
curl --request POST \
  --url https://app.lettr.com/api/campaigns/{campaignId}/schedule \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "scheduled_at": "2026-06-01T09:00:00+00:00"
}
'
{ "message": "Campaign scheduled for delivery.", "data": { "id": "0193e6a8-1f3a-7c2a-b9e2-1aa1d2e5d3f0", "name": "Spring Sale", "status": "sent", "sent_count": 124, "created_at": "2026-05-01T09:00:00+00:00", "stats": { "injections": 0, "deliveries": 0, "bounces": 0, "spam_complaints": 0, "opens": 0, "unique_opens": 0, "clicks": 0, "unique_clicks": 0, "unsubscribes": 0 }, "subject": "<string>", "from_email": "jsmith@example.com", "from_name": "<string>", "reply_to": "jsmith@example.com", "scheduled_at": "2023-11-07T05:31:56Z", "total_recipients": 123, "sent_at": "2023-11-07T05:31:56Z" } }
Schedules a campaign for future delivery, or reschedules an already-scheduled campaign to a new time. The campaign transitions to (or stays) scheduled and is dispatched automatically at the given time. Requires the campaigns:write scope. Not available to sandbox keys.

Authorizations

Authorization
string
header
required

API key for authentication

Path Parameters

campaignId
string<uuid>
required

Campaign ID

Body

application/json
scheduled_at
string<date-time>
required

Future delivery time (ISO 8601). Include a timezone offset (e.g. +02:00 or Z); a value without an offset is interpreted as UTC. Must be in the future.

Example:

"2026-06-01T09:00:00+00:00"

Response

Campaign scheduled for delivery.

message
string
required
Example:

"Campaign scheduled for delivery."

data
object

The updated campaign. Present on success; omitted in the rare case the campaign cannot be re-read immediately after the action (e.g. it was concurrently deleted).