Creates a new outbound dialer campaign.
The Create campaign endpoint creates a new outbound Dialer campaign.
Requirements: Base URL, Authentication, Error codes
Scope: campaigns.manage
What this does
When you send a Create campaign request,
Endpoint
POST /api/v4/campaigns
Request body
Required fields:
- name The name of the campaign. Must be unique within the contact center.
- caller_id_sets Sets of caller IDs used for outbound calls. Provide at least one set.
Optional fields:
-
strategy
Dialing strategy for the campaign.predictive_aiis only available if Dialer AI is enabled for the contact center. -
dial_level
Number of simultaneous call attempts per available agent. -
dial_level_override
Override settings for dial level based on the number of active agents. -
max_dial_time
Maximum time in seconds to spend dialing a contact before hanging up. -
max_wait_time
Maximum time in seconds to wait for an available agent when a contact answers. -
max_dial_attempts
Maximum number of attempts to dial a contact. -
voice_message_id
Identifier of the voice message to play. Must reference an existing voice message in the contact center. -
amd_enabled
Whether answering machine detection is enabled for calls. -
amd_voicemail_message
Controls whetherVoisoplays a voicemail message when AMD detects an answering machine. -
live
Configuration for adding leads to the campaign while it is running. -
use_local_caller_id
Whether to use only caller IDs matching the contact’s country or region. -
asr_optimization_enabled
Whether ASR optimization is enabled. -
post_call_rating
Post call survey configuration. -
contact_local_time
Time restrictions for calling contacts based on their local time. Only available if the contact local time feature is enabled for the contact center. -
follow_up_rules
Rules for redialing contacts based on call disposition. -
follow_up_mode
Controls how the dialer prioritizes follow up attempts withinfollow_up_rules.- timer
Contacts are prioritized strictly by their configured redial delay (default). - lowest_attempts
Contacts with the fewest dial attempts are prioritized first, while still respecting redial delay timers.
- timer
caller_id_sets array
Each caller ID set contains:
- phone_numbers
An array of phone numbers (strings) to use as caller IDs.
follow_up_rules object
follow_up_rules is an object where each key is a disposition (for example no_answer or busy) and each value is an array of rules. Each rule includes:
- wait_time
- wait_time_unit (
seconds,minutes,hours) - switch_caller_id_set
amd_voicemail_message object
- enabled
Specify whether voicemail playback is enabled when AMD detects an answering machine. - voice_message_id
Identifier of the voice message to play when voicemail playback is enabled.
Note: If you include amd_voicemail_message, amd_voicemail_message.enabled is required.
Related endpoints
- Get campaign IDs: Get list of campaigns
- Retrieve a created campaign: Get campaign
Example request
curl -X POST "https://{cluster_id}.voiso.com/api/v4/campaigns" \
-H "Authorization: Bearer <contact_center_api_key>" \
-H "Content-Type: application/json" \
-d '{
"name": "Summer Outreach Campaign",
"strategy": "simple",
"dial_level": 1,
"dial_level_override": {
"enabled": true,
"value": 1.5,
"active_agents_threshold": 3
},
"max_dial_time": 60,
"max_wait_time": 5,
"max_dial_attempts": 3,
"amd_enabled": true,
"amd_voicemail_message": {
"enabled": true,
"voice_message_id": 12
},
"caller_id_sets": [
{
"phone_numbers": ["18885650001", "18885650002"]
}
],
"use_local_caller_id": false,
"asr_optimization_enabled": true,
"contact_local_time": {
"start_time": "08:00",
"end_time": "22:00",
"days_of_week": [1, 2, 3, 4, 5]
},
"follow_up_rules": {
"no_answer": [
{
"wait_time": 10,
"wait_time_unit": "minutes",
"switch_caller_id_set": true
}
],
"busy": [
{
"wait_time": 5,
"wait_time_unit": "minutes",
"switch_caller_id_set": false
}
]
},
"follow_up_mode": "timer"
}'Response
If successful, the API returns a campaign object.
Example response:
{
"campaign": {
"id": 3,
"name": "Summer Outreach Campaign",
"status": "draft",
"strategy": "simple",
"dial_level": 1,
"dial_level_override": {
"enabled": true,
"value": 1.5,
"active_agents_threshold": 3
},
"max_dial_time": 60,
"max_wait_time": 5,
"max_dial_attempts": 3,
"amd_enabled": true,
"amd_voicemail_message": {
"enabled": true,
"voice_message": {
"type": "voice_message",
"name": "Instructions"
}
},
"caller_id_sets": [
{
"phone_numbers": ["18885650001", "18885650002"]
}
],
"use_local_caller_id": false,
"asr_optimization_enabled": true,
"contact_local_time": {
"start_time": "08:00",
"end_time": "22:00",
"days_of_week": [1, 2, 3, 4, 5]
},
"follow_up_mode": "timer",
"created_at": "2026-01-15T10:30:00.000Z",
"updated_at": "2026-01-20T14:15:00.000Z"
}
}Notes
- You must include at least one caller ID set.
- Some configuration fields are only applicable if the related feature is enabled for your contact center, such as
predictive_aistrategy,contact_local_time, andlive.dialing_order.
Troubleshooting
400 Bad request
Returned when request parameters are invalid.
401 Unauthorized
Returned if the API key is missing or invalid.
403 Forbidden
Returned if the API key does not have access to Campaign resources.
422 Unprocessable Entity
Returned when request validation fails (for example missing required fields, invalid values, or invalid phone number formats).
429 Too many requests
Returned if requests are rate limited.