---
title: "Update a push campaign"
method: PATCH
path: "/push/campaigns/{campaignId}"
tags: ["Push"]
---

# Update a push campaign

`PATCH /push/campaigns/{campaignId}`

## Request

- Base URL: `https://api.sequenzy.com/api/v1`
- URL: `https://api.sequenzy.com/api/v1/push/campaigns/{campaignId}`
- Auth: HTTP bearer

Updates a draft or scheduled push campaign. Only the fields you pass change; content fields merge over the stored content. A scheduled campaign keeps its schedule and cannot be cleared to empty content. Requires the campaigns:write scope.

## Path parameters

- `campaignId` string, required

## Request body

- object
  - `name` string
  - `targetLists` object: Audience, same shape as campaign targetLists.
  - `title` string: Notification title. Merge tags such as {{FIRST_NAME|there}} are supported.
  - `body` string: Notification message. Merge tags are supported.
  - `url` string, nullable: Link opened on tap. An https URL, an app deep link (myapp://...), or a merge tag. Browsers only open https links. null clears it.
  - `imageUrl` string, nullable: Optional https image shown in the notification.
  - `iconUrl` string, nullable: Optional https icon for web push. Defaults to the workspace icon.
  - `platforms` string[]: Limit delivery to these platforms. Omit or pass an empty array for every platform.

## Response `200`

Campaign updated

- object
  - `success` boolean
  - `campaign` PushCampaign
    - `id` string
    - `name` string
    - `type` 'push'
    - `status` 'draft' | 'scheduled' | 'sending' | 'sent' | 'cancelled'
    - `content` object
      - `title` string: Notification title. Merge tags such as {{FIRST_NAME|there}} are supported.
      - `body` string: Notification message. Merge tags are supported.
      - `url` string, nullable: Link opened on tap. An https URL, an app deep link (myapp://...), or a merge tag. Browsers only open https links. null clears it.
      - `imageUrl` string, nullable: Optional https image shown in the notification.
      - `iconUrl` string, nullable: Optional https icon for web push. Defaults to the workspace icon.
      - `platforms` string[]: Limit delivery to these platforms. Omit or pass an empty array for every platform.
    - `targetLists` object, nullable
    - `scheduledAt` string, date-time, nullable
    - `sentAt` string, date-time, nullable
    - `estimatedRecipientCount` integer, nullable
    - `labelIds` string[]
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Missing campaigns:write scope
- `404`: Not found
- `409`: Campaign is not editable (sent, sending or cancelled) or changed while saving
- `500`: Server error

## Changes

- **2026-10-16** `db3873ca3d4d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/push/campaigns/:campaignId/patch.md)

---

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