Campaigns

Send or schedule a campaign

Start sending immediately, or park the campaign in SCHEDULED by passing scheduled_for (which must be in the future). The request body may be omitted entirely to send now.

Send an Idempotency-Key. This is the operation that cannot be undone: a retry without one starts a second fan-out over the same audience. The key is scoped to this campaign, so the same key on a different campaign is a 422 idempotency_key_reused rather than a replay of the first campaign's response.

Answers 400 when the campaign is not DRAFT/SCHEDULED or has no recipients, and 403 when the send would exceed the project's billing limit.

Requires the campaigns:send scope — Send or schedule your campaigns to their audience.

post/api/v1/campaigns/{id}/send

Request

  • Base URL: https://api.sendly.now
  • URL: https://api.sendly.now/api/v1/campaigns/{id}/send
  • Auth: one of:
    • HTTP bearer
    • API key in cookie better-auth.session_token
    • OAuth 2 (authorization code, authorization URL https://app.sendly.now/api/auth/oauth2/authorize, token URL https://app.sendly.now/api/auth/oauth2/token, scopes: campaigns:send)

Path parameters

idstring uuid required

Resource id.

Headers

Idempotency-Keystring

Replay-safety key (24h TTL). Reuse it only to retry the identical request.

Request body

scheduled_forstring date-time

RFC 3339 timestamp, strictly in the future. A numeric UTC offset (+02:00) is accepted as well as Z. Omit to start sending immediately.

Response

The campaign, now SENDING or SCHEDULED

audience_type'ALL' | 'FILTERED' | 'SEGMENT' | 'LIST' required
created_atstring date-time required
idstring uuid required
list_idstring uuid nullable required
namestring required
scheduled_atstring date-time nullable required
sent_atstring date-time nullable required
status'DRAFT' | 'SCHEDULED' | 'SENDING' | 'PAUSED' | 'SENT' | 'CANCELLED' required
subjectstring required
topic_idstring uuid nullable required

Changes

No recorded changes to this operation across all 1 revision of this API.