Skip to main content

List SMS Campaigns

Retrieve a paginated list of SMS campaigns in the workspace.


Endpoint

GET https://api.campaignlark.com/v1/sms-campaigns

Query Parameters

ParameterTypeRequiredDefaultDescription
pageintegeroptional1Page number.
limitintegeroptional50Items per page. Values are sanitised to the supported range and capped at 100.
statusstringoptionalFilter by status: DRAFT, QUEUED, COMPLETED, CANCELLED, or ARCHIVED.

Sample Request

GET https://api.campaignlark.com/v1/sms-campaigns?page=1&limit=10&status=COMPLETED

Response

Success — 200 OK

{
"error": null,
"data": {
"campaigns": [
{
"id": "64f1a2b3c4d5e6f7a8b9c0d1",
"name": "Summer Sale SMS",
"message": "Summer sale: 20% off today. https://example.com/sale",
"audience": [
{
"type": "SEGMENTS",
"include_segment_ids": [2, 7],
"exclude_segment_ids": [4]
}
],
"status": "COMPLETED",
"scheduled_at": "2025-07-01T09:00:00Z",
"statistics": {
"sent": 4820,
"delivered": 4600,
"clicked": 412,
"failed": 23,
"unsubscribed": 8,
"suppressed": 189
},
"created_at": "2025-06-30T12:00:00Z",
"updated_at": "2025-07-01T09:05:00Z"
}
],
"pagination": {
"current_page": 1,
"per_page": 10,
"total_pages": 3,
"total_count": 25
}
}
}

Audience Object

FieldTypeDescription
typestringENTIRE_AUDIENCE, TAGS, or SEGMENTS.
include_tag_idsarray of integers | nullTag IDs included when type is TAGS.
include_segment_idsarray of integers | nullSegment IDs included when type is SEGMENTS.
exclude_tag_idsarray of integers | nullTag IDs excluded from the audience.
exclude_segment_idsarray of integers | nullSegment IDs excluded from the audience.

SMS Campaign Object

FieldTypeDescription
idstringUnique campaign ID (MongoDB ObjectID hex).
workspace_idintegerWorkspace that owns the campaign.
namestringCampaign name.
messagestringSMS message body.
audiencearrayAudience configuration objects.
statusstringDRAFT, QUEUED, COMPLETED, CANCELLED, or ARCHIVED.
scheduled_atstring | nullRFC3339 timestamp when scheduled for later.
statisticsobjectAggregate SMS statistics for the campaign.
created_atstringCampaign creation timestamp.
updated_atstringLast update timestamp.

SMS Audience Eligibility

Audience selection uses tags and segments in the same way as email campaigns. Sending eligibility is determined by each contact's sms_status: contacts with SUBSCRIBED status, or contacts created before SMS status was introduced, are eligible. UNSUBSCRIBED, CLEANED, and BLOCKED contacts are excluded. Email opt-out state has no effect on SMS eligibility, and SMS opt-out state has no effect on email eligibility.

SMS Campaign Lifecycle

SMS campaigns use DRAFT, QUEUED, COMPLETED, CANCELLED, and ARCHIVED statuses.

  • DRAFT: The campaign can be configured and scheduled.
  • QUEUED: The campaign is scheduled or being expanded into per-recipient SMS jobs.
  • COMPLETED: The audience has been fully expanded into per-recipient messages. It does not mean every message was delivered; delivery outcomes are available through statistics and SMS history.
  • CANCELLED: Sending is stopped. Recipients whose messages never reached a provider are refundable; recipients already handed to a carrier remain charged.
  • ARCHIVED: The campaign is archived.

There is no per-campaign conversions endpoint. Conversions are tracked through the existing Track a Conversion endpoint.


Errors

StatusMessageCause
400Invalid status '<value>'.The status query parameter is not one of the supported SMS campaign statuses.