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. Sender names are provisioned by Arsel on your behalf — contact support@arsel.sa to register one. 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, registered for marketing. Country-specific approval required; see List Senders.
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; see List Segments.

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 $ARSEL_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": 422,
"name": "validation_error",
"message": "name must not exceed 100 characters"
}

After creating a campaign, you can: