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

# Get a push campaign

`GET /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

Returns a push campaign's content, audience and status, plus delivery stats once it has started sending (null for drafts). Requires the campaigns:read scope.

## Path parameters

- `campaignId` string, required

## Response `200`

Campaign

- 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
  - `stats` PushCampaignStats
    - `total` integer: Contacts in the send.
    - `pending` integer
    - `sent` integer: Contacts whose push at least one push service accepted.
    - `failed` integer
    - `skipped` integer
    - `delivered` integer: Contacts whose device reported displaying the notification (browsers and apps that report displays).
    - `clicked` integer: Contacts who opened the notification.
    - `devicesTargeted` integer
    - `devicesAccepted` integer
    - `skipReasons` object[]
      - `reason` string
      - `count` integer
    - `failureReasons` object[]
      - `reason` string
      - `count` integer

## Other responses

- `400`: Not a push campaign
- `401`: Unauthorized
- `403`: Missing campaigns:read scope
- `404`: Not found
- `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/get.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/3d816357b738?raw)
