---
title: "Add users to a campaign"
method: POST
path: "/api/v4/campaigns/{campaign_id}/users"
tags: ["Campaigns"]
---

# Add users to a campaign

`POST /api/v4/campaigns/{campaign_id}/users`

## Request

- Base URL: `https://{cluster_id}.voiso.com`
- URL: `https://{cluster_id}.voiso.com/api/v4/campaigns/{campaign_id}/users`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/voiso/apis/voiso-api/docs/api/v4/campaigns/:campaign_id/users/post.ts> (a function with typed inputs; its response is checked against the schema)

Assigns users to the specified campaign. A user still held by an assigned team stays team-assigned and leaves with the team. A user left in the campaign by a team that is no longer assigned becomes individually assigned and stays.

## Path parameters

- `campaign_id` integer, required

## Request body

- object
  - `user_ids` integer[], required: List of user IDs to assign to the campaign.

## Response `200`

OK

- object
  - `added_users` User[]: Users successfully assigned to the campaign.
    - `id` integer: The unique identifier of the user.
    - `name` string: The name of the user.
    - `email` string, email: The email address of the user.
    - `sip_account` string: The SIP account in the format username@domain.
    - `extension` string, nullable: The phone extension assigned to the user.
    - `caller_id` string, nullable: The caller ID.
    - `employee_id` string, nullable: An internal employee identifier.
    - `timezone` string: The user's IANA time zone.
    - `security_access_group` SecurityAccessGroupShort
      - `id` integer: The unique identifier of the security access group.
      - `name` string: The name of the security access group.
    - `teams` TeamShort[]: Teams the user belongs to.
      - `id` integer: The unique identifier of the team.
      - `name` string: The name of the team.
    - `supervised_teams` TeamShort[]: Teams supervised by the user.
      - `id` integer: The unique identifier of the team.
      - `name` string: The name of the team.
    - `queues` QueueShort[]: Queues the user belongs to.
      - `id` integer: The unique identifier of the queue.
      - `name` string: The name of the queue.
    - `supervised_queues` QueueShort[]: Queues supervised by the user.
      - `id` integer: The unique identifier of the queue.
      - `name` string: The name of the queue.
    - `webrtc_ringtone` MediaRingtone: Ringtone Media object.
      - `type` 'ringtone': The type of media.
      - `name` string: The name of the media.
    - `channels` string[]: Channels enabled for the user.
    - `channel_group_capacity` object: Per-channel capacity limits.
      - `chat` integer: Maximum concurrent chat conversations.
      - `instant` integer: Maximum concurrent instant messaging conversations.
    - `channel_profiles` ChannelProfileShort[]: Channel profiles assigned to the user.
      - `id` integer: The unique identifier of the channel profile.
      - `channel` 'chat' | 'facebook' | 'instagram' | 'telegram' | 'viber' | 'whatsapp': The channel associated with the profile.
      - `identifier` string, nullable: Channel profile identifier (for WhatsApp, the phone number).
      - `name` string: The name of the channel profile.
    - `speech_language` 'ar' | 'auto' | 'cs' | 'de' | 'en' | 'es' | 'fr' | 'hi' | 'hu' | 'it' | 'ja' | 'lt' | 'lv' | 'nl' | 'pl' | 'pt' | 'ro' | 'sk' | 'tr', nullable: Preferred speech recognition language.
    - `skills` object[]: Skills and proficiency levels.
      - `skill` Skill
        - `id` integer: The unique identifier of the skill.
        - `name` string: The name of the skill.
        - `created_at` string, date-time: Timestamp when the skill was created (ISO 8601).
        - `updated_at` string, date-time: Timestamp when the skill was last updated (ISO 8601).
      - `value` integer: Proficiency level for the skill.
    - `voicemail_playback_enabled` boolean: Leave voice message on voicemail permission of the user.
    - `status` 'offline' | 'unavailable' | 'available' | 'inbound' | 'outbound' | 'dialer' | 'postcall': Current status of the user.
    - `created_at` string, date-time: Date and time the user was created.
    - `updated_at` string, date-time: Date and time the user was updated.
    - `deleted_at` string, date-time, nullable: Date and time the user was deleted (if applicable).

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict
- `422`: Unprocessable Entity
- `429`: Too many requests

## Changes

- **2026-11-03** `5a6ea146bd21`: 1 breaking, 8 warning, 1 info
  - the response property `added_users/items/deleted_at` became nullable for the status `200`
  - added the new `cs` enum value to the `added_users/items/speech_language` response property for the response status `200`
  - added the new `hu` enum value to the `added_users/items/speech_language` response property for the response status `200`
  - added the new `ja` enum value to the `added_users/items/speech_language` response property for the response status `200`
  - …6 more

[Operation history](https://skmtc.dev/voiso/apis/voiso-api/changes/api/v4/campaigns/:campaign_id/users/post.md)

---

[API](https://skmtc.dev/voiso/apis/voiso-api.md) - [All operations](https://skmtc.dev/voiso/apis/voiso-api/llms.txt) - [OpenAPI document](https://skmtc.dev/voiso/apis/voiso-api/revisions/5a6ea146bd21?raw)
