Partially update campaign

Partially updates a campaign. Cannot update campaigns with status stopped or completed. Only provided fields are updated.

The Partially update campaign endpoint updates one or more settings on an existing Dialer campaign. Only the fields you include in the request body are updated, and you cannot update campaigns with status stopped or completed.

Requirements: Base URL, Authentication, Error codes

Scope: campaigns.manage

What this does

Use this endpoint to change campaign configuration without resubmitting the full campaign definition. For example, you can adjust dial level, toggle answering machine detection, update caller ID sets, or change follow up rules, while leaving all other settings unchanged.

Endpoint

PATCH /api/v4/campaigns/{campaign_id}

Path parameters

  • campaign_id The unique identifier of the campaign.

Request body

This endpoint accepts a JSON object. Include only the fields you want to update.

Common fields you can update:

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

  • 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
    Dial level override configuration.

  • 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.

  • caller_id_sets
    Sets of caller IDs used for outbound calls.

  • use_local_caller_id
    Whether to use only caller IDs matching the contact’s country or region.

  • asr_optimization_enabled
    Whether ASR (Answer Seizure Ratio) optimization is enabled.

  • post_call_rating
    Post call survey configuration.

  • contact_local_time
    Time restrictions for calling contacts based on their local time. Set to null to clear.

  • 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.

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

Update dial level and enable AMD:

curl -X PATCH "https://{cluster_id}.voiso.com/api/v4/campaigns/5" \
  -H "Authorization: Bearer <contact_center_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "dial_level": 1.5,
    "amd_enabled": true
  }'

Update follow up rules for no_answer:

curl -X PATCH "https://{cluster_id}.voiso.com/api/v4/campaigns/5" \
  -H "Authorization: Bearer <contact_center_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "follow_up_rules": {
      "no_answer": [
        {
          "wait_time": 10,
          "wait_time_unit": "minutes",
          "switch_caller_id_set": true
        }
      ]
    }
  }'

Play voicemail message when an answering machine is detected:

curl -X PATCH "https://{cluster_id}.voiso.com/api/v4/campaigns/5" \
  -H "Authorization: Bearer <contact_center_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "amd_enabled": true,
    "amd_voicemail_message": {
      "enabled": true,
      "voice_message_id": 12
    }
  }'

Set follow up mode:

curl -X PATCH "https://{cluster_id}.voiso.com/api/v4/campaigns/5" \
  -H "Authorization: Bearer <contact_center_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "follow_up_mode": "lowest_attempts"
  }'

Response

If successful, the API returns the updated campaign:

{
  "campaign": {
    "id": 5,
    "name": "Summer Outreach Campaign",
    "dial_level": 1.5,
    "amd_enabled": true,
    "amd_voicemail_message": {
      "enabled": true,
      "voice_message": {
        "type": "voice_message",
        "name": "Instructions"
      }
    },
    "follow_up_mode": "lowest_attempts"
  }
}

The response campaign fields come from the Campaign schema.

Notes

  • Only provided fields are updated.
  • You cannot update campaigns with status stopped or completed.
  • In requests you set amd_voicemail_message.voice_message_id, but responses return the resolved amd_voicemail_message.voice_message object.

Troubleshooting

400 Bad Request

Returned if the request is malformed (for example invalid JSON).

401 Unauthorized

Returned if the API key is missing or invalid.

403 Forbidden

Returned if the API key does not have access to Campaigns resources.

404 Not Found

Returned if the campaign ID does not exist.

422 Unprocessable Entity

Returned when validation fails (for example invalid enum values, values outside allowed ranges, or invalid object structure).

429 Too Many Requests

Returned if requests are rate limited.

Path Params
integer
required

The unique identifier of the campaign.

Body Params
string
length ≤ 100

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

string
enum

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

Allowed:
float
1 to 6

Number of simultaneous call attempts per available agent.

dial_level_override
object

Dial level override configuration.

integer
1 to 600

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

integer
0 to 3600

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

integer
1 to 99

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

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
length between 1 and 20

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

caller_id_sets
boolean

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

boolean

Whether ASR (Answer Seizure Ratio) optimization is enabled.

boolean

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