Messaging guide
Run a Campaign through the same safeguards.
A server credential can prepare a Campaign draft, select a published Template and audience, validate the sender, then schedule the immutable ready revision. The workspace pipeline still checks each recipient's current eligibility before delivery.
- Create an organization-wide key with
campaigns:readandcampaigns:write. Grantcampaigns:publishseparately to the service that schedules and controls runs. - Create a draft with
POST /v1/campaignsand anIdempotency-Key. Choose a published Template version. - Read
GET /v1/campaigns/{campaignId}, then save the audience and sender withPUT /v1/campaigns/{campaignId}/revision. Supply the currentexpectedVersion; a stale edit returns409. - Call
POST /v1/campaigns/{campaignId}/validate. A ready revision requires a reachable audience, verified sender, postal address and healthy sending setup. Fix reported blockers before scheduling. - Call
POST /v1/campaigns/{campaignId}/schedulewith a unique idempotency key. Poll the run for aggregate outcomes.
curl https://api.fendsy.com/v1/campaigns -H "Authorization: Bearer $FENDSY_API_KEY" -H "Content-Type: application/json" -H "Idempotency-Key: campaign-launch-2026-10-14" -d '{"name":"Autumn update","goal":"newsletter","emailTemplateId":"TEMPLATE_ID","emailTemplateVersion":1}'Read GET /v1/campaigns/{campaignId}/runs andGET /v1/campaigns/{campaignId}/runs/{runId}for progress and aggregate results. A run can be paused, resumed or cancelled with POST /v1/campaigns/{campaignId}/runs/{runId}/{action}where action is pause, resume or cancel. Controls require an idempotency key.
The scheduling quota is two requests per credential per minute;429 includes Retry-After. An accepted run is not proof that every recipient was sent. Read the run counters and failures.
See the API referencefor request fields, scopes and error responses.