Campaigns

Start the send

Permission required: campaigns:write. Irreversible (except dry_run).

⚠️ Without a body, the campaign goes to ALL subscribers of its audience with status subscribed (the whole list, or the segment chosen in the interface) — minus those on the suppression list, recomputed at the last moment.

to restricts the send to a list of addresses. It can only narrow: the letter goes to the requested addresses that are active subscribers of the audience, never to an address on the suppression list. The response carries audience: who is kept, who is excluded, and why. An empty list writes to nobody (422); a campaign with an A/B test refuses to (the winning version would go out later to the whole audience).

dry_run: true runs every check and queues nothing: a 200 response with would_send, blocked_reason and the recipient count. That is the number to show BEFORE confirming. Other fields are ignored, as before — except look-alikes of dry_run (dryRun, dry-run, test, simulate…) and of to (To, recipients, emails, to_emails, destinataires, audience…), refused with 422: ignored, the former would send for real, the latter would send to the whole list.

The call freezes the recipient list and fills the queue. Messages then go out at the rate our provider allows: the response says sending and a queued count, never sent. Follow the progress with GET /api/v1/campaigns/{id}.

A campaign already sending or sent returns 409: we do not re-send, we duplicate. An insufficient monthly quota, a workspace with damaged reputation, no sender, or an empty list return 422 with the reason.

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

Request

  • Base URL: https://mailcheer.com
  • URL: https://mailcheer.com/api/v1/campaigns/{id}/send
  • Auth: one of:
    • HTTP bearer
    • API key in header X-Api-Key

Path parameters

idstring required

Request body

tostring[]

Optional. Restricts the send to these addresses — only those that are active subscribers of the audience, never an address on the suppression list. Omitted: the whole audience. Empty ([]): nobody, the send is refused.

dry_runboolean

true: check and count everything, queue nothing.

Response

Dry run (dry_run): nothing was queued.

idstring
object'send_preview'
dry_runtrue
would_sendboolean

Would the real send, started now, go out?

blocked_reasonstring nullable

If not, the exact message the real send would return.

recipientsinteger nullable

How many would be queued; null if the refusal comes before counting.

Changes

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