The Schedule Campaign API allows you to schedule an existing Email Campaign for delivery to Subscriber Lists or saved Segments.
Available API Functions
| Method | Endpoint | Description |
|---|---|---|
| POST | /scheduleCampaign |
Schedule an Email Campaign |
| GET | /getScheduledCampaign |
Retrieve one scheduled campaign |
| GET | /getScheduledCampaigns |
Retrieve scheduled campaigns |
Schedule Campaign
Endpoint
POST /scheduleCampaign
Parameters
| Parameter | Required | Description |
|---|---|---|
campaign_label |
Yes | Internal name for the scheduled campaign |
list_type |
Yes | 1 = Subscriber Lists, 2 = Segments |
list_id_fk[] |
Conditional | Subscriber List IDs when list_type=1 |
segment_id_fk[] |
Conditional | Segment IDs when list_type=2 |
email_campaign_id_fk[] |
Yes | Email Campaign ID(s) |
smtp_list[] |
Yes | SMTP username(s) to use for sending |
campaign_type |
No | Use 1 for a normal Email Campaign |
smtp_sequence |
No | 1 = Batches, 2 = Loop |
sender_info |
No | Sender information source |
sch_fromname |
No | From Name |
sch_fromemail |
Recommended | From Email |
sch_bounceemail |
Recommended | Bounce Email |
sch_replyemail |
Recommended | Reply-To Email |
sch_datetime |
Recommended | UTC Time to send the email campaign |
notification_email |
No | Campaign notification email |
show_unsub |
No | 1 to enable unsubscribe functionality |
track_open |
No | 1 to enable open tracking |
track_click |
No | 1 to enable click tracking |
no_of_threads |
No | Number of sending threads |
hourly_limit |
No | Hourly sending limit |
masked_domain |
No | Domain masking option |
SMTP Accounts
Use smtp_list[] to specify the SMTP username to use for sending. SMTP username can be fetched from API endpoint /getSMTPs
Single SMTP
smtp_list[]=smtp-user-1
Multiple SMTP Accounts
smtp_list[]=smtp-user-1
smtp_list[]=smtp-user-2
smtp_list[]=smtp-user-3
Each SMTP username must be valid and available to your account.
SMTP Sequence
When multiple SMTP accounts are selected, smtp_sequence controls the sending sequence.
| Value | Mode |
|---|---|
1 |
Batches |
2 |
Loop |
Example:
smtp_sequence=1
Subscriber Lists
To send to Subscriber Lists:
list_type=1
Provide one or more List IDs:
list_id_fk[]=10
list_id_fk[]=12
Segments
To send to saved Segments:
list_type=2
Provide one or more Segment IDs:
segment_id_fk[]=15
segment_id_fk[]=20
Email Campaign
Specify the Email Campaign using:
email_campaign_id_fk[]=125
The campaign must already exist before it can be scheduled.
Send Campaign Now
If no future schedule date and time are supplied, the campaign is scheduled for immediate delivery.
curl -X POST "https://YOUR-DOMAIN/API-PATH/scheduleCampaign" \
-d "campaign_label=September Newsletter" \
-d "list_type=1" \
-d "list_id_fk[]=10" \
-d "email_campaign_id_fk[]=125" \
-d "smtp_list[]=smtp-user-1" \
-d "campaign_type=1" \
-d "smtp_sequence=1" \
-d "sender_info=3" \
-d "sch_fromname=My Company" \
-d "[email protected]" \
-d "[email protected]" \
-d "[email protected]" \
-d "show_unsub=1" \
-d "track_open=1" \
-d "track_click=1"
Schedule Campaign for Later
Use sch_date and sch_time to schedule delivery for a future date and time.
sch_date=09/28/2026
sch_time=10:00:00 AM
Example:
curl -X POST "https://YOUR-DOMAIN/API-PATH/scheduleCampaign" \
-d "campaign_label=Monday Newsletter" \
-d "list_type=1" \
-d "list_id_fk[]=10" \
-d "email_campaign_id_fk[]=125" \
-d "smtp_list[]=smtp-user-1" \
-d "campaign_type=1" \
-d "smtp_sequence=1" \
-d "sch_date=09/28/2026" \
-d "sch_time=10:00:00 AM" \
-d "sender_info=3" \
-d "sch_fromname=My Company" \
-d "[email protected]" \
-d "[email protected]" \
-d "[email protected]" \
-d "show_unsub=1" \
-d "track_open=1" \
-d "track_click=1"
A combined schedule date/time may also be supplied:
sch_datetime=2026-09-28 10:00:00
Schedule Campaign to a Segment
curl -X POST "https://YOUR-DOMAIN/API-PATH/scheduleCampaign" \
-d "campaign_label=Engaged Subscribers" \
-d "list_type=2" \
-d "segment_id_fk[]=15" \
-d "email_campaign_id_fk[]=125" \
-d "smtp_list[]=smtp-user-1" \
-d "campaign_type=1" \
-d "smtp_sequence=1" \
-d "sender_info=3" \
-d "sch_fromname=My Company" \
-d "[email protected]" \
-d "[email protected]" \
-d "[email protected]" \
-d "show_unsub=1" \
-d "track_open=1" \
-d "track_click=1"
Multiple SMTP Accounts
Multiple SMTP usernames can be supplied:
curl -X POST "https://YOUR-DOMAIN/API-PATH/scheduleCampaign" \
-d "campaign_label=Multi SMTP Campaign" \
-d "list_type=1" \
-d "list_id_fk[]=10" \
-d "email_campaign_id_fk[]=125" \
-d "smtp_list[]=smtp-user-1" \
-d "smtp_list[]=smtp-user-2" \
-d "smtp_list[]=smtp-user-3" \
-d "smtp_sequence=2" \
-d "sender_info=3" \
-d "sch_fromname=My Company" \
-d "[email protected]" \
-d "[email protected]" \
-d "[email protected]"
Sender Information
The sender_info parameter controls the source of sender information.
| Value | Source |
|---|---|
1 |
Subscriber List |
2 |
SMTP Account |
3 |
Custom Sender Information |
For custom sender information:
sender_info=3
sch_fromname=My Company
[email protected]
[email protected]
[email protected]
Tracking Options
Enable unsubscribe, open tracking, and click tracking:
show_unsub=1
track_open=1
track_click=1
Use 0 to disable the corresponding option.
Hourly Sending Limit
Example:
hourly_limit=5000
For the default unlimited setting:
hourly_limit=-1
Sending Threads
Example:
no_of_threads=5
The availability of multiple sending threads depends on your account and installation configuration.
Domain Masking
masked_domain |
Description |
|---|---|
0 |
Do not mask |
1 |
Use SMTP domain |
2 |
Use custom masking domain |
Example:
masked_domain=1
For a custom masking domain:
masked_domain=2
mask_domain_id_fk[]=5
Recipient Filtering
Recipient filters can be used when scheduling to Subscriber Lists (list_type=1).
Subscriber Name
| Value | Description |
|---|---|
0 |
All Subscribers |
1 |
With First Name |
2 |
With Last Name |
3 |
With First and Last Name |
4 |
Without First Name |
5 |
Without Last Name |
6 |
Without First and Last Name |
7 |
With First Name or Last Name |
8 |
Without First Name or Last Name |
Example:
subscriber_name=3
Email Address
Include email addresses containing:
email_contains=gmail.com
Exclude email addresses containing:
email_dont_contains=example.com
Open Status
| Value | Description |
|---|---|
0 |
All |
1 |
Opened |
2 |
Unopened |
Example:
opened=1
Additional open filters:
opened_country[]=United States
opened_after_date=09/01/2026
opened_after_time=00:00:00
opened_before_date=09/30/2026
opened_before_time=23:59:59
Click Status
| Value | Description |
|---|---|
0 |
All |
1 |
Clicked |
2 |
Unclicked |
Example:
clicked=1
Additional click filters:
clicked_country[]=United States
clicked_after_date=09/01/2026
clicked_after_time=00:00:00
clicked_before_date=09/30/2026
clicked_before_time=23:59:59
Successful Response
Example:
{
"success": true,
"Schedule Campaign ID": 250,
"Total": 15420,
"Schedule DateTime": "2026-09-28 05:00:00"
}
Get Scheduled Campaign
Endpoint
GET /getScheduledCampaign
Parameters
| Parameter | Required | Description |
|---|---|---|
schedule_campaign_id |
Yes | Schedule Campaign ID |
Example:
curl -X GET \
"https://YOUR-DOMAIN/API-PATH/getScheduledCampaign?schedule_campaign_id=250"
The API returns the details of the requested scheduled campaign.
Get Scheduled Campaigns
Endpoint
GET /getScheduledCampaigns
Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
start |
No | 0 |
Starting record |
records |
No | 100 |
Number of records |
status |
No | — | Filter by campaign status |
search |
No | — | Search campaign label |
campaign_type |
No | — | Filter by campaign type |
list_type |
No | — | 1 = Lists, 2 = Segments |
Example:
curl -X GET \
"https://YOUR-DOMAIN/API-PATH/getScheduledCampaigns?start=0&records=100"
Search:
GET /getScheduledCampaigns?search=Newsletter
Subscriber List campaigns:
GET /getScheduledCampaigns?list_type=1
Segment campaigns:
GET /getScheduledCampaigns?list_type=2
Error Responses
Possible errors include:
campaign_label is required
smtp_list is required
email_campaign_id_fk is required
list_id_fk is required when list_type=1
segment_id_fk is required when list_type=2
list_type must be 1 (subscriber lists) or 2 (segments)
One or more mailing lists are invalid or access denied
One or more segments are invalid or access denied
One or more email campaigns are invalid or access denied
SMTP account not found, disabled or access denied
Invalid campaign schedule date/time
Complete Example
curl -X POST "https://YOUR-DOMAIN/API-PATH/scheduleCampaign" \
-d "campaign_label=September Customer Newsletter" \
-d "list_type=1" \
-d "list_id_fk[]=10" \
-d "list_id_fk[]=12" \
-d "email_campaign_id_fk[]=125" \
-d "smtp_list[]=smtp-user-1" \
-d "smtp_list[]=smtp-user-2" \
-d "campaign_type=1" \
-d "smtp_sequence=1" \
-d "masked_domain=1" \
-d "no_of_threads=5" \
-d "hourly_limit=5000" \
-d "sender_info=3" \
-d "sch_fromname=My Company" \
-d "[email protected]" \
-d "[email protected]" \
-d "[email protected]" \
-d "[email protected]" \
-d "show_unsub=1" \
-d "track_open=1" \
-d "track_click=1" \
-d "sch_date=09/28/2026" \
-d "sch_time=10:00:00 AM"
Example response:
{
"success": true,
"Schedule Campaign ID": 250,
"Total": 15420,
"Schedule DateTime": "2026-09-28 05:00:00"
}
Typical Workflow
1. Create Email Campaign
↓
POST /addCampaign
2. Receive Campaign ID
↓
Campaign ID: 125
3. Schedule Campaign
↓
POST /scheduleCampaign
4. Select Recipients
↓
list_type=1
list_id_fk[]=10
OR
list_type=2
segment_id_fk[]=15
5. Select Email Campaign
↓
email_campaign_id_fk[]=125
6. Select SMTP Account(s)
↓
smtp_list[]=smtp-user-1
7. Configure sender, tracking and schedule
↓
Campaign Scheduled
Important Notes
Creating an Email Campaign does not automatically schedule or send it.
First create the campaign:
POST /addCampaign
Then schedule it:
POST /scheduleCampaign
For Subscriber Lists:
list_type=1
list_id_fk[]=10
For Segments:
list_type=2
segment_id_fk[]=15
For SMTP accounts:
smtp_list[]=smtp-user-1
Multiple SMTP accounts can be supplied by repeating smtp_list[].
