SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester
Outreach

List campaigns and their progress

Newest first. A plain API key sees only campaigns shared with the whole workspace.

GEThttps://app.softsolz.uk/api/v1/services/outreach/campaigns

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Headers

Authorizationstringrequired

Bearer token: Bearer sk_live_... (or sk_test_... for sandbox). A login token will not work here.

Query Params

statusstring

Filter by status: draft, scheduled, queued, sending, paused, sent, failed or cancelled. active means queued or sending; ended means failed or cancelled.

limitinteger

Page size, 1-200 (default 50).

offsetinteger

Rows to skip (default 0).

Response

Response Body · array of objects

idstringCampaign id.
tenant_idstringWorkspace id.
namestringCampaign name.
channelstringHow the campaign reaches people.
providerstring | nullThe messaging or email provider the campaign sends through.
template_namestring | nullApproved WhatsApp or text template name.
template_languagestringTemplate language code.
template_variablesobjectValues for the template placeholders.
body_previewstring | nullThe text message, for text campaigns.
media_filenamestring | nullName of the attached image or file, if any.
media_mimestring | nullType of the attached image or file, if any.
has_mediabooleanWhether an image or file is attached.
audienceobjectWho the campaign goes to (see the audience fields on create).
statusstringWhere the campaign is in its life.
scheduled_atstring | nullWhen the campaign is due to send.
total_countintegerPeople queued to receive it.
sent_countintegerMessages sent so far.
delivered_countintegerMessages delivered so far.
read_countintegerMessages read or opened so far.
failed_countintegerMessages that failed.
skipped_countintegerPeople left out, for example because they opted out.
consecutive_failuresintegerFailures in a row since the last success.
pause_reasonstring | nullWhy the campaign paused itself, when it did.
pause_detailstring | nullMore detail about the pause.
resume_afterstring | nullWhen a paused campaign carries on by itself.
created_byinteger | nullMember who created the campaign.
created_atstringWhen the campaign was created.
updated_atstringWhen the campaign last changed.
started_atstring | nullWhen sending started.
completed_atstring | nullWhen sending finished or stopped.
subjectstring | nullEmail subject line, for email campaigns.
subject_bstring | nullSecond subject line for an A/B test, for email campaigns.
ab_split_percentinteger | nullShare of people (10-90) who get the main subject in an A/B test; the rest get subject B.
ab_winnerstring | nullThe subject that won an A/B test: a or b.
body_htmlstring | nullEmail body as HTML, for email campaigns.
from_sender_idstring | nullEmail address the campaign sends from, for email campaigns.
template_keystring | nullSaved email template the body came from.
source_campaign_idstring | nullEarlier campaign this one resends to, if any.
source_engagementstring | nullWhich people from the earlier campaign it resends to.
track_linksbooleanWhether links in a text message are shortened and tracked.
local_timebooleanWhether a scheduled send waits for each person's own local time.
fallback_sms_bodystring | nullText message sent instead when WhatsApp cannot deliver.
ai_agent_idstring | nullAI agent that places the calls, for AI call campaigns.
ai_settingsobjectSettings for AI calls, for AI call campaigns. Empty for other channels.
visibilitystringWho can see it: private (only the creator), tenant (the whole workspace) or shared (named people or roles).
shared_usersarray of objectsMembers it is shared with, when visibility is shared. Included when listing or reading one.
shared_rolesarray of objectsRoles it is shared with, when visibility is shared. Included when listing or reading one.

Request

curl --request GET \
--url https://app.softsolz.uk/api/v1/services/outreach/campaigns \
--header 'Authorization: Bearer sk_live_your_key'

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 · 200

{
"data": [
{
"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"
}
]
}
],
"meta": {
"limit": 50,
"offset": 0,
"total": 1,
"has_more": false
}
}