# Readiness check

> Everything that would stop this campaign sending, as a list of checks, the same set the dashboard shows before you press start, and worth calling before POST…

Source: https://warmerly.com/docs/campaigns/readiness-check

```text
GET /campaigns/{id}/readiness
```

Everything that would stop this campaign sending, as a list of checks, the same set the dashboard shows before you press start, and worth calling before [`POST /campaigns/{id}/start`](https://warmerly.com/docs/campaigns/readiness-check#start-a-campaign) so a failure is explained rather than guessed at.

```json
{
  "ready": false,
  "checks": [
    { "key": "has_steps", "label": "Message sequence has at least one complete step", "ok": true },
    { "key": "senders.email", "label": "At least one email sender connected", "ok": true },
    { "key": "plan_gates.send_limit", "label": "Monthly campaign send limit not reached", "ok": true },
    {
      "key": "sender_identity",
      "label": "Sender postal address set for the email footer",
      "ok": false,
      "severity": "warning",
      "detail": "Campaigns send without one, but the footer won't carry it."
    },
    { "key": "leads", "label": "At least one lead queued to receive the sequence", "ok": false, "detail": "Add at least one lead" }
  ],
  "usesEmail": true,
  "usesLinkedin": false
}
```

A check with `severity: "warning"` does **not** block sending, `ready` can be `true` with warnings present (starting then needs `acknowledgeWarnings`, see [Start a campaign](https://warmerly.com/docs/campaigns/readiness-check#start-a-campaign)). Anything without it is a blocker. Further copy and deliverability checks appear in the list too, such as `merge_tags`, `brief_for_opener`, `lead_research`, `deliverability` and `content_quality`. Unlike `start`, this call does not run the live AI provider check. For a draft with no senders it also attaches the project's healthy mailboxes that can send campaigns. The `usesX` flags say which channels the sequence actually uses, so a LinkedIn-free campaign is never held up by a LinkedIn check.

## More from Campaigns

- [Leads](https://warmerly.com/docs/campaigns/leads): status is one of queued, active, completed, replied, bounced, unsubscribed, skipped. Each lead is the stored…
- [Preview a rendered message](https://warmerly.com/docs/campaigns/preview-a-rendered-message): Renders one step exactly as it would send, merge fields resolved against a real lead, AI opener included,…
- [Leads across every campaign](https://warmerly.com/docs/campaigns/leads-across-every-campaign): One flat, paged view of every lead in the project's campaigns, rather than one campaign at a time.…
