Call Scheduling and Pacing API
Last updated
Last updated
- NEW! - Interactive API docs, now live!
Visit to read Plum API documentation, build and test requests in our interactive API sandbox, review the responses, and share it all with your team.
IMPORTANT: Development on this API is ongoing – please bear in mind that additional, unforeseen changes may occur between the time of this writing and product release.
The Outbound Call Scheduling and Pacing API allows you to create outbound calling campaigns as well as reusable resources to define schedules and call pacing for each campaign. This API consists of three main resources:
Schedules: Sets the days of the week that your campaign will run. Once created, a schedule can be reused across one or more campaigns.
Profiles: Sets call pacing for your campaign. Once created, a profile can be reused across one or more campaigns. One or multiple profiles can be used in a single campaign if desired.
Campaigns: Creates outbound calling campaigns linked to your chosen VXML application. Also controls existing campaign activity. Existing schedules and profiles are linked to campaigns during campaign creation.
This API contains the following endpoints (6 total):
https://scheduler.plumvoice.com/api/schedules
https://scheduler.plumvoice.com/api/profiles
https://scheduler.plumvoice.com/api/campaigns
https://scheduler.plumvoice.com/api/campaigns/start
https://scheduler.plumvoice.com/api/campaigns/stop
https://scheduler.plumvoice.com/api/campaigns/add-calls
API requests are authenticated using a bearer token. Currently, this token will be generated for you. In the future, users will be able to generate their own bearer tokens as needed.
NOTE: In each of the following methods, you can view an example request and success response by expanding the Responses section and viewing the 200: OK response.
POST
https://scheduler.plumvoice.com/api/schedules
Creates a rule set that controls which day(s) in a week a campaign will be active. A schedule can be reused across one or more campaigns.
To affect a campaign, an existing schedule must be added when the campaign is created.
days
Array
[Required]
The day(s) in a week when a campaign may place calls. Enter each chosen day as a 3-letter abbreviation.
(mon
, tue
, wed
, thu
, fri
, sat
, sun
)
Example: ["mon","wed","fri"]
nickname
String
[Optional] | 64 character maximum
A custom name for the schedule.
Example: "3wkdays"
GET
https://scheduler.plumvoice.com/api/schedules
Returns all existing schedules created by you.
Content-Type
String
[Optional]
Indicates the content type of the request. Any content type relevant to a form-data POST request will likely work. Default is text/plain
.
Example / Suggested values:
"application/json"
"application/xml"
Example Request
This request returns all existing schedules that you have created and their associated parameters.
Success Response
PATCH
https://scheduler.plumvoice.com/api/schedules/{id}
Update one or more specific parameters for the selected schedule.
Note: The API is designed to accept this request with either the PATCH or PUT method and produce the same results. Only parameters specified in the request will be updated.
id
Integer
[Required]
The identifier for an existing schedule.
The Create Schedule endpoint returns this identifier as response.id
when you create a schedule. The Get Schedules endpoint returns this identifier as id
for any existing schedule.
Example: 4
days
Array
[Required]
The day(s) in a week when a campaign may place calls. Enter each chosen day as a 3-letter abbreviation.
(mon
, tue
, wed
, thu
, fri
, sat
, sun
)
Example: ["mon","wed","fri"]
name
String
[Optional] | 64 character minimum
A custom name for the schedule.
Example: "3wkdays"
Example Request
This request updates the days
parameter to Mondays and Wednesdays for the schedule with id
15.
Success Response
DELETE
https://scheduler.plumvoice.com/api/schedules/{id}
Removes an existing schedule using the id
number entered.
Note: A schedule cannot be deleted while applied to a campaign.
id
Integer
[Required]
The identifier for an existing schedule.
The Create Schedule endpoint returns this identifier as response.id
when you create a schedule. The Get Schedules endpoint returns this identifier as id
for any existing schedule.
Example: 4
Example Request
This request deletes the schedule associated with id
4.
Success Response
POST
https://scheduler.plumvoice.com/api/profiles
Creates a rule set that controls call pacing for campaigns. A profile can be reused across one or more campaigns.
To affect a campaign, an existing profile must be added when the campaign is created.
period
Integer
[Required] | 11 digit maximum
The interval for placing calls, in minutes.
Example: 30
time_between_periods
Integer
[Required] | 11 digit maximum
An interval of downtime between each period, in minutes.
Example: 10
nickname
String
[Optional] | 64 character maximum
A custom name for the profile. Used to reference the profile when using the Create Campaign endpoint.
Example: "MorningCalls"
amount_per_period
Integer
[Required] | 11 digit maximum
The number of calls to place within a period.
Example: 100
Example Request
This request creates a profile named MorningPace
. If this profile were applied to a new campaign, that campaign would run for 30 minutes at a time (period
), make 100 calls during that time (amount_per_period
), and have 10 minutes of downtime between each 30 minute period (time_between_periods
).
Success Response
GET
https://scheduler.plumvoice.com/api/profiles
Returns all existing profiles created by you.
Content-Type
String
[Optional]
Indicates the content type of the request. Any content type relevant to a form-data POST request will likely work. Default is text/plain
.
Example / Suggested values:
"application/json"
"application/xml"
Example Request
This request returns all existing profiles that you have created and their associated parameters.
Success Response
PATCH
https://scheduler.plumvoice.com/api/profiles/{id}
Update one or more specific parameters for the selected profile.
Note: The API is designed to accept this request with either the PATCH or PUT method and produce the same results. Only parameters specified in the request will be updated.
id
Integer
[Required]
The identifier for an existing profile.
The Create Profile endpoint returns this identifier as response.id
when you create a profile. The Get Profiles endpoint returns this identifier as id
for any existing profile.
Example: 7
period
Integer
[Optional] | 11 digit maximum
The interval for placing calls, in minutes.
Example: 30
amount_per_period
Integer
[Optional] | 11 digit maximum
The number of calls to place within a period.
Example: 100
nickname
String
[Optional] | 64 character maximum
A custom name for the profile. Used to reference the profile when using the Create Campaign endpoint.
Example: "MorningCalls"
time_between_periods
Integer
[Optional] | 11 digit maximum
An interval of downtime between each period, in minutes.
Example: 10
Example Request
This request updates all parameters available for the profile with id
17.
Note that the response only returns the profile's id
and nickname
. To confirm all specified parameters have the desired values, use the Get Profiles endpoint and review the updated profile in the response.
Success Response
DELETE
https://scheduler.plumvoice.com/api/profiles/{id}
Removes an existing profile using the id
number entered.
Note: A profile cannot be deleted while applied to a campaign.
id
Integer
[Required]
The identifier for an existing profile.
The Create Profile endpoint returns this identifier as response.id
when you create a profile. The Get Profiles endpoint returns this identifier as id
for any existing profile.
Example: 7
Example Request
This request deletes the profile associated with id
7.
Success Response
POST
https://scheduler.plumvoice.com/api/campaigns
Creates a new campaign.
Content-Type
String
[Optional]
Indicates the content type of the request. Any content type relevant to a form-data POST request will likely work. Default is text/plain
.
Example / Suggested values:
"application/json"
"application/xml"
start_date
String
[Required]
The start date for the campaign.
Format: YYYY-MM-DD
Example: "2022-01-01"
end_date
String
[Required]
The end date for the campaign.
Format: YYYY-MM-DD
Example: "2022-01-31"
schedule
String
[Required]
The schedule to apply to the campaign. Accepts one (1) schedule's schedule_id
number or nickname
, whichever you choose.
Example:
6
"3wkdays"
profiles
Array
[Required]
The profile(s) to apply to the campaign. You can enter one or multiple profiles.
For each profile, enter an array containing the following key/value pairs:
profile
(String): The nickname set for your chosen profile.
start_time
(String): The time campaign calls will start. Eastern timezone.
Format: HH:MM
(24-hour clock)
end_time
(String): The time campaign calls will end. Eastern timezone.
Format: HH:MM
(24-hour clock)
Examples:
1 profile:
[{"profile":"JanuaryMornings", "start_time":"08:00", "end_time":"21:00"}]
2 profiles:
[{"profile":"MorningPace", "start_time":"08:00", "end_time":"11:00"},{"profile":"AfternoonPace", "start_time":"12:00", "end_time":"16:00"}]
phone_numbers
Object
[Optional]
The .CSV or .TXT file containing phone numbers to be called. Enter the filepath to the .CSV or .TXT file.
Example:
"/C:/Users/My Account/Desktop/PhoneNumbers.csv"
Note: Phone number entries can also include a message_reference
value. Once submitted in an API request, this value will be posted to the URLs referemced in thestart_url
and result_url
parameters.
Adding message_reference
values can help with identifying calls and API requests within your internal systems.
Format: Any string that does not contain a comma. Add this string at the end of any phone number entry, separated with a comma.
Examples:
Without a message_reference
value: ["tel:+12223334444; ani=7778889999"]
With a message_reference
value:
["tel:+12223334444; ani=7778889999, marchcampaign"]
start_url
String
[Required]
The URL of the VXML application to use in each call.
Example:
"http://charles.plumgroup.com/~schan/src/charles/vxml/start.php"
result_url
String
[Optional]
The URL for post-call processing.
Example:
"http://myserver.com/storesmsresults.php"
Example Request
This request creates a campaign that will run from January 1, 2022 (start_date
) to January 5, 2022 (end_date
). The campaign will run on the days set in the schedule associated with the schedule_id
6. On each scheduled day, the campaign will begin running at 8:00 A.M. and stop running at 11:00 A.M. (Eastern) using the call-pacing profile MorningPace
. Each call will use the VXML application linked in start_url
and post-call processing linked in result_url
.
Success Response
GET
https://scheduler.plumvoice.com/api/campaigns
Returns all existing campaigns created by you.
Content-Type
String
[Optional]
Indicates the content type of the request. Any content type relevant to a form-data POST request will likely work. Default is text/plain
.
Example / Suggested values:
"application/json"
"application/xml"
Example Request
This request returns all existing campaigns that you have created and their associated parameters.
Success Response
POST
https://scheduler.plumvoice.com/api/campaigns/start
Starts an existing campaign.
campaign_id
Integer
[Required]
The identifier for the campaign to start.
The Create Campaign endpoint returns this identifier as response.id
when you create a campaign. The Get Campaigns endpoint returns this identifier as id
for any existing campaign.
Example: 2
Example Request
This request starts the campaign associated with campaign_id
6.
Success Response
POST
https://scheduler.plumvoice.com/api/campaigns/stop
Stops an active campaign.
campaign_id
Integer
[Required]
The identifier for an existing campaign.
Example: 2
Example Request
This request stops the campaign associated with campaign_id
2.
Success Response
POST
https://scheduler.plumvoice.com/api/campaigns/add-calls
Appends additional phone numbers to an existing campaign.
If the campaign is already running, the new phone numbers will be added to the end of the queue.
phone_numbers
Array / Object
[Required]
The phone numbers to be added to an existing campaign. Can be submitted as either a JSON array, or a .CSV or .TXT file.
For JSON: Enter each number as a string in the array, including both the long code number and the ANI.
Format:
["tel:[(phone number); ani=(ANI)"]
Example (Array):
["tel:+12223334444; ani=7778889999","tel:+14443332222; ani=9998887777"]
For .CSV/.TXT files: Enter the filepath to the .CSV or .TXT file.
Example:
"/C:/Users/My Account/Desktop/PhoneNumbers.csv"
Note: Phone number entries can also include a message_reference
value. Once submitted in an API request, this value will be posted to the URLs referemced in thestart_url
and result_url
parameters.
Adding message_reference
values can help with identifying calls and API requests within your internal systems.
Format: Any string that does not contain a comma. Add this string at the end of any phone number entry, separated with a comma.
Examples:
Without a message_reference
value: ["tel:+12223334444; ani=7778889999"]
With a message_reference
value:
["tel:+12223334444; ani=7778889999, marchcampaign"]
campaign_id
Integer
[Required]
The identifier for an existing campaign.
Example: 2
Example Request
This request adds the submitted phone numbers to the campaign associated with campaign_id
2.
Success Response
PATCH
https://scheduler.plumvoice.com/api/campaigns/{id}
Update one or more specific parameters for the selected campaign.
Notes:
The API is designed to accept this request with either the PATCH or PUT method and produce the same results. Only parameters specified in the request will be updated.
A campaign's phone numbers cannot be updated through this method. Use the Add Calls method for this instead.
id
Integer
[Required]
The identifier for an existing campaign.
The Create Campaign endpoint returns this identifier as response.id
when you create a campaign. The Get Campaigns endpoint returns this identifier as id
for any existing campaign.
Example: 11
Note: The id
parameter is required for this method to function properly, but requests without a value set for id
will still return a response.
However, in this case, the request will simply return all existing campaigns, similar to the Get Campaigns method. No changes to any other specified parameters will be applied to any campaign.
start_date
String
[Optional]
The start date for the campaign.
Format: YYYY-MM-DD
Example: "2022-01-01"
end_date
String
[Optional]
The end date for the campaign.
Format: YYYY-MM-DD
Example: "2022-01-31"
start_url
String
[Optional]
The URL of the VXML application to use in each call.
Example:
"http://charles.plumgroup.com/~schan/src/charles/vxml/start.php"
result_url
String
[Optional]
The URL for post-call processing.
Example:
"http://myserver.com/storesmsresults.php"
profiles
Array
[Optional]
The profile(s) to apply to the campaign. You can enter one or multiple profiles.
For each profile, enter an array containing the following key/value pairs:
profile
(String): The nickname set for your chosen profile.
start_time
(String): The time campaign calls will start. Eastern timezone.
Format: HH:MM
(24-hour clock)
end_time
(String): The time campaign calls will end. Eastern timezone.
Format: HH:MM
(24-hour clock)
Examples:
1 profile:
[{"profile":"JanuaryMornings", "start_time":"08:00", "end_time":"21:00"}]
2 profiles:
[{"profile":"MorningPace", "start_time":"08:00", "end_time":"11:00"},{"profile":"AfternoonPace", "start_time":"12:00", "end_time":"16:00"}]
IMPORTANT – PLEASE READ!
The profile(s) submitted here will overwrite ALL of the selected campaign's attached profiles.
If the selected campaign has multiple profiles, you must enter ALL of the profiles that the campaign should have once updated. This includes both the profiles being added/changed AND the ones that should stay the same.
schedule
String
[Optional]
The schedule to apply to the campaign. Accepts one (1) schedule's schedule_id
number or nickname
, whichever you choose.
Example:
6
"3wkdays"
Example Request
This request updates the applied schedule, starting date, ending date, and applied profile for the campaign with id
26.
Note that the response only returns the campaign's id
. To confirm all specified parameters have the desired values, use the Get Campaigns endpoint and review the updated campaign in the response.
Success Response
DELETE
https://scheduler.plumvoice.com/api/campaigns/{id}
Removes an existing campaign using the id
number entered.
Note: Deleting a campaign will not delete any schedule or profile(s) applied to that campaign.
id
Integer
[Required]
The identifier for an existing campaign.
The Create Campaign endpoint returns this identifier as response.id
when you create a campaign. The Get Campaigns endpoint returns this identifier as id
for any existing campaign.
Example: 11
Example Request
This request deletes the campaign associated with id
11.
Success Response