---
title: "Get Campaign Review"
method: GET
path: "/campaigns/{id}/review"
tags: ["Campaigns"]
---

# Get Campaign Review

`GET /campaigns/{id}/review`

## Request

- Base URL: `https://api.supersend.io/v2`
- URL: `https://api.supersend.io/v2/campaigns/{id}/review`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/supersend/apis/supersend-api/docs/campaigns/:id/review/get.ts> (a function with typed inputs; its response is checked against the schema)

Everything to check before launching a campaign, in one call: the steps on the main path
(subjects, waits, LinkedIn actions), who sends (sender profiles, inboxes, warmup), who receives
(contacts by state), the schedule and daily volume, and the launch checks.

`checks` combines the dashboard's start checklist with the trial/plan gate (all `blocking: true`),
plus warnings that don't block launch (`blocking: false`), such as no contacts waiting or inboxes
still warming. `can_launch` is true when the campaign is not already active and no blocking check
fails.

Sequences longer than 12 steps list the first 12 in `sequence.steps`; `sequence.total_steps` has
the full count. Waits are folded into `wait_before` on the step that follows them.

Returns **404** for campaigns that don't exist or belong to another organization, and **403**
when the campaign is in your organization but you are not on its team.

## Path parameters

- `id` string, uuid, required

## Response `200`

Pre-launch review of the campaign

- CampaignReviewResponse
  - `success` boolean
  - `request_id` string
  - `data` CampaignReview
    - `object` string
    - `campaign` object
      - `id` string, uuid
      - `name` string
      - `status` 'active' | 'draft' | 'paused' | 'not_launched': `paused` means not active but contacts have already started or finished. `not_launched` means not active, not a draft, and no contact has started yet.
      - `is_draft` boolean
      - `version` 'simple' | 'complex' | 'legacy': Sequence builder version (`simple` = 3, `complex` = 2, `legacy` = 1).
      - `team_id` string, uuid
    - `sequence` object
      - `steps` CampaignReviewStep[]: Steps on the main path, up to 12. Waits are folded into the following step's `wait_before`.
        - `step` integer
        - `type` string: `email`, or the node type without the `Node` suffix (for example `linkedinConnection`, `linkedinMessage`).
        - `label` string
        - `wait_before` object, nullable: Wait before this step, or null for none.
          - `value` number
          - `unit` string
        - `subject` string, nullable: Email steps only. Subject of variant A; null for a reply with no subject.
        - `variants` integer: Email steps only. Number of A/B subject variants.
        - `as_reply` boolean: Email steps only. Sent as a reply in the previous email's thread.
      - `total_steps` integer: Number of steps on the main path, including any beyond the 12 listed.
      - `emails` integer: Number of email steps on the main path.
      - `has_branches` boolean: True when the sequence has If (other than simple route-by-status) or Switch nodes.
    - `sending` object
      - `sender_profiles` CampaignReviewSenderProfile[]
        - `id` string, uuid
        - `name` string
        - `inboxes` integer
        - `active_inboxes` integer
        - `warming_inboxes` integer
        - `linkedin` boolean: Whether the profile has a LinkedIn account.
        - `daily_capacity` integer: Sum of the profile's active inboxes' daily limits.
      - `active_inboxes` integer
      - `warming_inboxes` integer: Active inboxes with warmup on that started less than 14 days ago.
      - `linkedin_accounts` integer: Assigned sender profiles that have a LinkedIn account.
      - `daily_capacity` integer: Sum of active inboxes' daily limits, capped by `campaign_daily_limit` when set.
      - `campaign_daily_limit` integer, nullable
    - `contacts` object
      - `total` integer
      - `not_started` integer
      - `in_progress` integer
      - `finished` integer
      - `paused` integer
    - `schedule` object
      - `timezone` string
      - `days` string[]
      - `hours` object[]
        - `start` string
        - `end` string
      - `next_window` object, nullable: Next sending window in the campaign's timezone, or null when the schedule has no days or hours.
        - `day` string: `today`, `tomorrow`, or a weekday name
        - `start` string: Start time (HH:MM). When sending now, the current time.
        - `sending_now` boolean
    - `settings` object
      - `tracking` boolean
      - `unsubscribe_link` boolean
    - `billing` object
      - `can_send` boolean: Whether the organization's trial or plan allows sending.
      - `trial_available` boolean: When `can_send` is false, whether adding a card starts the free trial (otherwise a plan is needed).
    - `checks` CampaignReviewCheck[]
      - `key` string: Blocking: `has_nodes`, `has_messages`, `has_sender_profile`, `has_active_email_sender`, `has_active_linkedin_identity`, `schedule_valid`, `can_send`. Warnings: `has_contacts`, `inboxes_warming` (only when inboxes are warming).
      - `ok` boolean
      - `blocking` boolean: Whether a failing check stops launch.
      - `message` string
    - `can_launch` boolean: True when the campaign is not active and no blocking check fails.
    - `estimate` object
      - `sending_days_to_reach_everyone` integer, nullable: Sending days to send the first step to every not-started contact at `daily_capacity`. Null when there are no contacts to start or no capacity.
    - `links` object
      - `campaign` string, uri: Dashboard link to the campaign's sequence.
      - `add_card` string, uri: Only present when `billing.can_send` is false. Where a human adds a card or picks a plan.

## Other responses

- `401`: Unauthorized - Invalid or missing API key
- `403`: Forbidden - Access denied
- `404`: Not Found - Resource does not exist

## Changes

- **2026-10-03** `e4e7dcbc09be`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/supersend/apis/supersend-api/changes/campaigns/:id/review/get.md)

---

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