---
title: "Changes to Update campaign"
method: PUT
path: "/campaigns/{id}"
---

# Changes to Update campaign

`PUT /campaigns/{id}`

> Every recorded change to this operation, newest first.
> 575 revisions in range; 3 not diffed.

## Timeline

Changed in 11 of 575 revisions.

- **2026-10-28** `678ca18d68f0`: 2 breaking
- **2026-10-20** `7c37a9bae125`: 20 breaking, 5 warning, 4 info
- **2026-10-12** `30f95dce0284`: 2 info
- **2026-09-09** `d2e864b788ab`: 2 breaking, 3 warning, 23 info
- **2026-09-08** `e30a27d57cdb`: 20 breaking, 5 warning, 4 info
- **2026-08-12** `bb4f84a3469c`: 1 breaking
- **2026-07-29** `d274674f0337`: 6 breaking, 2 info
- **2026-04-29** `1d24058ecd33`: 1 info
- **2023-10-20** `168698649960`: 1 breaking
- **2023-06-19** `1c08d6b56ba4`: 2 breaking, 64 info
- **2023-05-16** `f6f95dfaa122`: 2 breaking, 64 warning

## Changes

- **2026-10-28** `678ca18d68f0`: 2 breaking
  - the response property `campaign/sender_mode` became optional for the status `201`
  - the response property `campaign/sender_visibility` became optional for the status `201`
- **2026-10-20** `7c37a9bae125`: 20 breaking, 5 warning, 4 info
  - the response's body became nullable
  - the response property `users` became optional for the status `201`
  - the `users` response's property type changed from `array` to `object` for status `201`
  - removed the required property `create_channels` from the response with the `201` status
  - removed the required property `created_at` from the response with the `201` status
  - removed the required property `description` from the response with the `201` status
  - removed the required property `id` from the response with the `201` status
  - removed the required property `name` from the response with the `201` status
  - removed the required property `segment_ids` from the response with the `201` status
  - removed the required property `segments` from the response with the `201` status
  - removed the required property `sender_id` from the response with the `201` status
  - removed the required property `sender_mode` from the response with the `201` status
  - removed the required property `sender_visibility` from the response with the `201` status
  - removed the required property `show_channels` from the response with the `201` status
  - removed the required property `skip_push` from the response with the `201` status
  - removed the required property `skip_webhook` from the response with the `201` status
  - removed the required property `stats` from the response with the `201` status
  - removed the required property `status` from the response with the `201` status
  - removed the required property `updated_at` from the response with the `201` status
  - removed the required property `user_ids` from the response with the `201` status
  - removed the optional property `channel_template` from the response with the `201` status
  - removed the optional property `message_template` from the response with the `201` status
  - removed the optional property `scheduled_for` from the response with the `201` status
  - removed the optional property `sender` from the response with the `201` status
  - removed the optional property `stop_at` from the response with the `201` status
  - added the optional property `campaign` to the response with the `201` status
  - added the optional property `users/next` to the response with the `201` status
  - added the optional property `users/prev` to the response with the `201` status
  - added the required property `duration` to the response with the `201` status
- **2026-10-12** `30f95dce0284`: 2 info
  - added the optional property `cooldown_remaining_ms` to the response with the `400` status
  - added the optional property `cooldown_remaining_ms` to the response with the `429` status
- **2026-09-09** `d2e864b788ab`: 2 breaking, 3 warning, 23 info
  - the `users` response's property type changed from `object` to `array` for status `201`
  - removed the required property `duration` from the response with the `201` status
  - removed the optional property `campaign` from the response with the `201` status
  - removed the optional property `users/next` from the response with the `201` status
  - removed the optional property `users/prev` from the response with the `201` status
  - added the optional property `channel_template` to the response with the `201` status
  - added the optional property `message_template` to the response with the `201` status
  - added the optional property `scheduled_for` to the response with the `201` status
  - added the optional property `sender` to the response with the `201` status
  - added the optional property `stop_at` to the response with the `201` status
  - the response property `users` became required for the status `201`
  - added the required property `create_channels` to the response with the `201` status
  - added the required property `created_at` to the response with the `201` status
  - added the required property `description` to the response with the `201` status
  - added the required property `id` to the response with the `201` status
  - added the required property `name` to the response with the `201` status
  - added the required property `segment_ids` to the response with the `201` status
  - added the required property `segments` to the response with the `201` status
  - added the required property `sender_id` to the response with the `201` status
  - added the required property `sender_mode` to the response with the `201` status
  - added the required property `sender_visibility` to the response with the `201` status
  - added the required property `show_channels` to the response with the `201` status
  - added the required property `skip_push` to the response with the `201` status
  - added the required property `skip_webhook` to the response with the `201` status
  - added the required property `stats` to the response with the `201` status
  - added the required property `status` to the response with the `201` status
  - added the required property `updated_at` to the response with the `201` status
  - added the required property `user_ids` to the response with the `201` status
- **2026-09-08** `e30a27d57cdb`: 20 breaking, 5 warning, 4 info
  - the response's body became nullable
  - the response property `users` became optional for the status `201`
  - the `users` response's property type changed from `array` to `object` for status `201`
  - removed the required property `create_channels` from the response with the `201` status
  - removed the required property `created_at` from the response with the `201` status
  - removed the required property `description` from the response with the `201` status
  - removed the required property `id` from the response with the `201` status
  - removed the required property `name` from the response with the `201` status
  - removed the required property `segment_ids` from the response with the `201` status
  - removed the required property `segments` from the response with the `201` status
  - removed the required property `sender_id` from the response with the `201` status
  - removed the required property `sender_mode` from the response with the `201` status
  - removed the required property `sender_visibility` from the response with the `201` status
  - removed the required property `show_channels` from the response with the `201` status
  - removed the required property `skip_push` from the response with the `201` status
  - removed the required property `skip_webhook` from the response with the `201` status
  - removed the required property `stats` from the response with the `201` status
  - removed the required property `status` from the response with the `201` status
  - removed the required property `updated_at` from the response with the `201` status
  - removed the required property `user_ids` from the response with the `201` status
  - removed the optional property `channel_template` from the response with the `201` status
  - removed the optional property `message_template` from the response with the `201` status
  - removed the optional property `scheduled_for` from the response with the `201` status
  - removed the optional property `sender` from the response with the `201` status
  - removed the optional property `stop_at` from the response with the `201` status
  - added the optional property `campaign` to the response with the `201` status
  - added the optional property `users/next` to the response with the `201` status
  - added the optional property `users/prev` to the response with the `201` status
  - added the required property `duration` to the response with the `201` status
- **2026-08-12** `bb4f84a3469c`: 1 breaking
  - the `stats/progress` response's property format changed from `float` to `double` for status `201`
- **2026-07-29** `d274674f0337`: 6 breaking, 2 info
  - the response property `sender/privacy_settings/delivery_receipts/enabled` became optional for the status `201`
  - the response property `sender/privacy_settings/read_receipts/enabled` became optional for the status `201`
  - the response property `sender/privacy_settings/typing_indicators/enabled` became optional for the status `201`
  - the response property `users/items/privacy_settings/delivery_receipts/enabled` became optional for the status `201`
  - the response property `users/items/privacy_settings/read_receipts/enabled` became optional for the status `201`
  - the response property `users/items/privacy_settings/typing_indicators/enabled` became optional for the status `201`
  - added the optional property `sender/devices/items/hardware_id` to the response with the `201` status
  - added the optional property `users/items/devices/items/hardware_id` to the response with the `201` status
- **2026-04-29** `1d24058ecd33`: 1 info
  - endpoint added
- **2023-10-20** `168698649960`: 1 breaking
  - api path removed without deprecation
- **2023-06-19** `1c08d6b56ba4`: 2 breaking, 64 info
  - the `code` response's property type changed from `string` to `integer` for status `400`
  - the `code` response's property type changed from `string` to `integer` for status `429`
  - removed the `access-key-error` enum value from the `code` response property for the response status `400`
  - removed the `access-key-error` enum value from the `code` response property for the response status `429`
  - removed the `app-suspended` enum value from the `code` response property for the response status `400`
  - removed the `app-suspended` enum value from the `code` response property for the response status `429`
  - removed the `auth-failed` enum value from the `code` response property for the response status `400`
  - removed the `auth-failed` enum value from the `code` response property for the response status `429`
  - removed the `channel-feature-not-supported` enum value from the `code` response property for the response status `400`
  - removed the `channel-feature-not-supported` enum value from the `code` response property for the response status `429`
  - removed the `connection-id-not-found` enum value from the `code` response property for the response status `400`
  - removed the `connection-id-not-found` enum value from the `code` response property for the response status `429`
  - removed the `cool-down` enum value from the `code` response property for the response status `400`
  - removed the `cool-down` enum value from the `code` response property for the response status `429`
  - removed the `custom-command-endpoint-missing` enum value from the `code` response property for the response status `400`
  - removed the `custom-command-endpoint-missing` enum value from the `code` response property for the response status `429`
  - removed the `custom-command-endpoint=call-error` enum value from the `code` response property for the response status `400`
  - removed the `custom-command-endpoint=call-error` enum value from the `code` response property for the response status `429`
  - removed the `duplicate-username` enum value from the `code` response property for the response status `400`
  - removed the `duplicate-username` enum value from the `code` response property for the response status `429`
  - removed the `event-not-supported` enum value from the `code` response property for the response status `400`
  - removed the `event-not-supported` enum value from the `code` response property for the response status `429`
  - removed the `expired-token` enum value from the `code` response property for the response status `400`
  - removed the `expired-token` enum value from the `code` response property for the response status `429`
  - removed the `input-error` enum value from the `code` response property for the response status `400`
  - removed the `input-error` enum value from the `code` response property for the response status `429`
  - removed the `internal-error` enum value from the `code` response property for the response status `400`
  - removed the `internal-error` enum value from the `code` response property for the response status `429`
  - removed the `invalid-token-signature` enum value from the `code` response property for the response status `400`
  - removed the `invalid-token-signature` enum value from the `code` response property for the response status `429`
  - removed the `message-too-long` enum value from the `code` response property for the response status `400`
  - removed the `message-too-long` enum value from the `code` response property for the response status `429`
  - removed the `moderation-failed` enum value from the `code` response property for the response status `400`
  - removed the `moderation-failed` enum value from the `code` response property for the response status `429`
  - removed the `multiple-nesting-level` enum value from the `code` response property for the response status `400`
  - removed the `multiple-nesting-level` enum value from the `code` response property for the response status `429`
  - removed the `not-allowed` enum value from the `code` response property for the response status `400`
  - removed the `not-allowed` enum value from the `code` response property for the response status `429`
  - removed the `not-found` enum value from the `code` response property for the response status `400`
  - removed the `not-found` enum value from the `code` response property for the response status `429`
  - …26 more
- **2023-05-16** `f6f95dfaa122`: 2 breaking, 64 warning
  - the `code` response's property type changed from `integer` to `string` for status `400`
  - the `code` response's property type changed from `integer` to `string` for status `429`
  - added the new `access-key-error` enum value to the `code` response property for the response status `400`
  - added the new `access-key-error` enum value to the `code` response property for the response status `429`
  - added the new `app-suspended` enum value to the `code` response property for the response status `400`
  - added the new `app-suspended` enum value to the `code` response property for the response status `429`
  - added the new `auth-failed` enum value to the `code` response property for the response status `400`
  - added the new `auth-failed` enum value to the `code` response property for the response status `429`
  - added the new `channel-feature-not-supported` enum value to the `code` response property for the response status `400`
  - added the new `channel-feature-not-supported` enum value to the `code` response property for the response status `429`
  - added the new `connection-id-not-found` enum value to the `code` response property for the response status `400`
  - added the new `connection-id-not-found` enum value to the `code` response property for the response status `429`
  - added the new `cool-down` enum value to the `code` response property for the response status `400`
  - added the new `cool-down` enum value to the `code` response property for the response status `429`
  - added the new `custom-command-endpoint-missing` enum value to the `code` response property for the response status `400`
  - added the new `custom-command-endpoint-missing` enum value to the `code` response property for the response status `429`
  - added the new `custom-command-endpoint=call-error` enum value to the `code` response property for the response status `400`
  - added the new `custom-command-endpoint=call-error` enum value to the `code` response property for the response status `429`
  - added the new `duplicate-username` enum value to the `code` response property for the response status `400`
  - added the new `duplicate-username` enum value to the `code` response property for the response status `429`
  - added the new `event-not-supported` enum value to the `code` response property for the response status `400`
  - added the new `event-not-supported` enum value to the `code` response property for the response status `429`
  - added the new `expired-token` enum value to the `code` response property for the response status `400`
  - added the new `expired-token` enum value to the `code` response property for the response status `429`
  - added the new `input-error` enum value to the `code` response property for the response status `400`
  - added the new `input-error` enum value to the `code` response property for the response status `429`
  - added the new `internal-error` enum value to the `code` response property for the response status `400`
  - added the new `internal-error` enum value to the `code` response property for the response status `429`
  - added the new `invalid-token-signature` enum value to the `code` response property for the response status `400`
  - added the new `invalid-token-signature` enum value to the `code` response property for the response status `429`
  - added the new `message-too-long` enum value to the `code` response property for the response status `400`
  - added the new `message-too-long` enum value to the `code` response property for the response status `429`
  - added the new `moderation-failed` enum value to the `code` response property for the response status `400`
  - added the new `moderation-failed` enum value to the `code` response property for the response status `429`
  - added the new `multiple-nesting-level` enum value to the `code` response property for the response status `400`
  - added the new `multiple-nesting-level` enum value to the `code` response property for the response status `429`
  - added the new `not-allowed` enum value to the `code` response property for the response status `400`
  - added the new `not-allowed` enum value to the `code` response property for the response status `429`
  - added the new `not-found` enum value to the `code` response property for the response status `400`
  - added the new `not-found` enum value to the `code` response property for the response status `429`
  - …26 more

---

[Operation](https://skmtc.dev/getstream/apis/stream-api/docs/campaigns/:id/put.md) - [API](https://skmtc.dev/getstream/apis/stream-api.md) - [Page](https://skmtc.dev/getstream/apis/stream-api/changes/campaigns/:id/put)
