SendboundSendbound

Campaigns

Create, schedule, send, and track bulk email campaigns.

Campaigns are bulk emails sent to your contact list or a segment. Create a draft, add content, then send immediately or schedule for later.

Campaign object

{
  "id": "cmp_01HV...",
  "name": "April newsletter",
  "subject": "What happened in April",
  "from": "hello@yourdomain.com",
  "status": "sent",
  "sentAt": "2026-04-01T09:00:00Z",
  "stats": {
    "sent": 4200,
    "delivered": 4158,
    "opened": 1823,
    "clicked": 412,
    "bounced": 42,
    "unsubscribed": 8
  },
  "createdAt": "2026-03-28T14:00:00Z"
}

Status values: draft · scheduled · sending · sent · failed · cancelled


List campaigns

GET/campaigns
Bearer
page
pageSize
status
search
sort
dir
curl -X GET 'https://api.sendbound.com/campaigns' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Create a campaign

POST/campaigns
Bearer
curl -X POST 'https://api.sendbound.com/campaigns' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{
"name": "April newsletter",
"subject": "What happened in April",
"from": "hello@yourdomain.com",
"fromName": "Your App",
"body": "<h1>April update</h1><p>Here is what happened this month.</p>",
"type": "regular"
}'
FieldTypeRequiredDescription
namestringYesInternal campaign name
subjectstringYesEmail subject line
fromstringYesVerified sending address
fromNamestringNoSender display name
bodystringNo*HTML email body
typestringNoregular (default) or ab_test
segmentIdstringNoTarget a specific segment; defaults to all subscribed
replyTostringNoReply-to address
scheduledForstringNoISO 8601 — schedule at creation time

Get a campaign

GET/campaigns/:id
Bearer
:id
curl -X GET 'https://api.sendbound.com/campaigns/:id' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Returns the campaign with live stats.


Update a campaign

PUT/campaigns/:id
Bearer
:id
curl -X PUT 'https://api.sendbound.com/campaigns/:id' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{
"subject": "Updated: What happened in April",
"body": "<h1>April update</h1><p>Updated content here.</p>"
}'

Only draft campaigns can be updated.


Send a campaign

POST/campaigns/:id/send
Bearer
:id
curl -X POST 'https://api.sendbound.com/campaigns/:id/send' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{}'

Sends the campaign immediately to all recipients. Pass scheduledFor in the body to schedule instead.

Once a campaign starts sending it cannot be modified. Use cancel to abort a scheduled campaign before it goes out.


Cancel a scheduled campaign

POST/campaigns/:id/cancel
Bearer
:id
curl -X POST 'https://api.sendbound.com/campaigns/:id/cancel' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{}'

Get campaign stats

GET/campaigns/:id/stats
Bearer
:id
curl -X GET 'https://api.sendbound.com/campaigns/:id/stats' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Send a test email

POST/campaigns/:id/test
Bearer
:id
curl -X POST 'https://api.sendbound.com/campaigns/:id/test' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{ "email": "you@example.com" }'

Sends a preview of the campaign to the specified address.


Delete a campaign

DELETE/campaigns/:id
Bearer
:id
curl -X DELETE 'https://api.sendbound.com/campaigns/:id' \
  -H 'Authorization: Bearer <your-token>' \
  -H 'Content-Type: application/json'

Only draft campaigns can be deleted. Returns 204 No Content.