Create a campaign
Creates a draft. Nothing is sent until you call the send endpoint. Fields for other channels are ignored.
https://app.softsolz.uk/api/v1/services/outreach/campaignsRecent Requests
Kept only in this browserHeaders
AuthorizationstringrequiredBearer token: Bearer sk_live_... (or sk_test_... for sandbox). A login token will not work here.
Idempotency-KeystringOptional idempotency key for safe retries.
Body Params
namestringrequiredCampaign name.
channelstringHow the campaign reaches people (default whatsapp). voice is a call list worked by members or an AI agent.
body_previewstringThe text message, for text campaigns. Merge fields such as {{name}} are filled per person.
template_namestringApproved template name. Required for WhatsApp campaigns; for text campaigns it can replace body_preview. Ignored for email.
template_languagestringTemplate language code (default en).
template_variablesobjectValues for the template placeholders, keyed by position or name.
subjectstringEmail subject line. Required to send an email campaign.
subject_bstringA second subject line to A/B test, for email campaigns.
ab_split_percentintegerShare of people, from 10 to 90, who get the main subject; everyone else gets subject_b (default 50). Email campaigns only.
body_htmlstringEmail body as HTML. Required to send an email campaign.
from_sender_idintegerConnected email address to send from, for email campaigns.
template_keystringSaved email template the body was built from, for email campaigns.
audienceobjectWho the campaign goes to. People from every source are merged, duplicates removed, and anyone who opted out is left out. Careful: include_contacts defaults to true, so an audience with only book_ids still sends to all your contacts unless you also set include_contacts to false.
scheduled_atstring | nullWhen to send. A time in the future makes the send call schedule the campaign instead of starting it. Null sends straight away.
track_linksbooleanShorten and track links in a text message (default true). Text campaigns only.
local_timebooleanSend a scheduled text or WhatsApp campaign at that clock time in each person's own time zone (default false).
fallback_sms_bodystringText message to send instead when WhatsApp cannot deliver. WhatsApp only.
visibilitystringWho can see the campaign (default tenant). A plain API key only sees tenant campaigns, so a private or shared campaign is hidden from it after creation.
sharedUserIdsarray of integersMembers to share with when visibility is shared.
sharedRoleIdsarray of integersRoles to share with when visibility is shared.
Response
Response Body
campaignobjectThe campaign.Request
curl --request POST \ --url https://app.softsolz.uk/api/v1/services/outreach/campaigns \ --header 'Authorization: Bearer sk_live_your_key' \ --header 'Content-Type: application/json' \ --data '{ "name": "Autumn offer", "channel": "sms", "body_preview": "Hi {{name}}, 20% off everything this week. Reply STOP to opt out.", "audience": { "include_contacts": true, "require_consent": true }}'Credentials
Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.
Response · 201
{ "data": { "campaign": { "id": "128", "tenant_id": "4c1a7e52-9b3d-4f86-a2e1-7d5c0b9f3e61", "name": "Autumn offer", "channel": "sms", "provider": "twilio", "template_name": "autumn_offer", "template_language": "en", "template_variables": { "1": "Jane" }, "body_preview": "Hi {{name}}, 20% off this week.", "media_filename": "offer.jpg", "media_mime": "image/jpeg", "has_media": false, "audience": { "book_ids": [ "42" ], "include_contacts": false }, "status": "draft", "scheduled_at": "2026-10-05T09:00:00.000Z", "total_count": 120, "sent_count": 80, "delivered_count": 76, "read_count": 41, "failed_count": 2, "skipped_count": 3, "consecutive_failures": 0, "pause_reason": null, "pause_detail": null, "resume_after": null, "created_by": 4115, "created_at": "2026-09-01T09:00:00.000Z", "updated_at": "2026-09-01T09:00:00.000Z", "started_at": null, "completed_at": null, "subject": "Your autumn offer", "subject_b": null, "ab_split_percent": null, "ab_winner": null, "body_html": "<p>Hello {{name}}</p>", "from_sender_id": "7", "template_key": null, "source_campaign_id": null, "source_engagement": null, "track_links": true, "local_time": false, "fallback_sms_body": null, "ai_agent_id": null, "ai_settings": {}, "visibility": "tenant", "shared_users": [ { "user_id": 4115, "name": "Jane Doe", "email": "jane@example.com" } ], "shared_roles": [ { "role_id": 12, "role_name": "manager" } ] } }}