Skip to main content

Create Campaign

Create a new SMS campaign. The campaign is created in Draft status and is fully editable until it is sent or scheduled for delivery. Recipients are configured by attaching contact lists, tags and/or segments to the campaign. Use this endpoint to prepare the campaign, then call POST /sms/campaigns/:id/send when you are ready to send or schedule.

Common use cases:

  • A retail brand announcing a weekend sale to their KSA subscriber list.
  • An e-commerce store sending a limited-time discount to tagged VIP contacts.

Endpoint

POST /sms/campaigns

Returns: 201 Created

Prerequisites

Registered Sender Required

The from must be registered and approved for the destination country. Register your sender names in the Arsel Dashboard under Settings > SMS Senders. Approval timelines vary by country (KSA, Egypt). Campaigns with unregistered sender names will be rejected at send time.

Headers

HeaderValueRequired
AuthorizationBearer <your-api-key>Yes
Content-Typeapplication/jsonYes

Body Parameters

All parameters are optional. You can create an empty campaign and fill in the details later via PATCH /sms/campaigns/:id.

ParameterTypeRequiredDescription
namestringNoInternal name for the campaign. Max 100 characters.
descriptionstringNoOptional description for internal reference. Max 500 characters.
contentstringNoSMS message body. Max 3,200 characters. Supports {{variables}} from contact properties.
fromstringNoRegistered SMS sender name. Country-specific approval required.
list_idsstring[]NoIDs of contact lists whose contacts should receive the campaign.
tag_idsstring[]NoIDs of tags whose tagged contacts should receive the campaign.
segment_idsstring[]NoIDs of segments whose matching contacts should receive the campaign.

Response

{
"id": "0192a1b2-c3d4-7e5f-9000-abcdef123456"
}

Response Fields

FieldTypeDescription
idstringUnique campaign ID. Use this with GET /sms/campaigns/:id to fetch the full record, or with POST /sms/campaigns/:id/send to send or schedule.

Examples

curl -X POST "https://api.arsel.sa/v1/sms/campaigns" \
-H "Authorization: Bearer be_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Sale 2026",
"description": "Sale announcement to KSA list",
"content": "Acme Store: 50% off everything this weekend! Shop now: {{link}}",
"from": "ACME",
"list_ids": ["list-uuid-1"]
}'

Error Responses

{
"status_code": 401,
"name": "unauthorized",
"message": "Invalid or missing API key"
}

After creating a campaign, you can: