Create campaign

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,

Voiso
creates a new campaign with the dialing configuration you provide. At minimum, you must provide a campaign name and at least one caller ID set.

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_ai is 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 whether

    Voiso
    plays 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 within follow_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.

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

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_ai strategy, contact_local_time, and live.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.

Body Params
string
required
length ≤ 100

The name of the campaign. Must be unique within the contact center.

string
enum
Defaults to simple

Dialing strategy for the campaign. predictive_ai is only available if Dialer AI is enabled for the contact center.

Allowed:
float
1 to 6
Defaults to 1

Number of simultaneous call attempts per available agent.

dial_level_override
object

Dial level override configuration.

integer
1 to 600
Defaults to 60

Maximum time in seconds to spend dialing a contact before hanging up.

integer
0 to 3600
Defaults to 5

Maximum time in seconds to wait for an available agent when a contact answers.

integer
1 to 99
Defaults to 3

Maximum number of attempts to dial a contact.

integer | null

Identifier of the voice message to play. Must reference an existing voice message in the contact center.

amd_voicemail_message
object | null

Configuration for voicemail playback when an answering machine is detected.

boolean
Defaults to true

Whether answering machine detection is enabled for calls.

live
object | null

Configuration for adding leads to the campaign while it is running.

caller_id_sets
array of objects
required
length between 1 and 20

Sets of caller IDs used for outbound calls. Maximum 20 sets.

caller_id_sets*
phone_numbers
array of strings
required

Phone numbers in the caller ID set.

phone_numbers*
boolean
Defaults to false

Whether to use only caller IDs matching the contact's country or region.

boolean
Defaults to true

Whether ASR (Answer Seizure Ratio) optimization is enabled.

boolean
Defaults to false

Whether the same phone number can be added to the campaign more than once.

post_call_rating
object | null

Post-call survey configuration.

contact_local_time
object | null

Time restrictions for calling contacts based on their local time. Only available if the contact local time feature is enabled for the contact center. Set to null to clear.

string | null
enum
Defaults to timer

Controls how the dialer prioritizes redial attempts within follow-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
Allowed:
follow_up_rules
object | null

Rules for redialing contacts based on call disposition. Each disposition can have up to 20 rules.

Responses

Language
Credentials
Bearer
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json