Readiness check
From the Campaigns API reference. Requests use the base URL https://app.warmerly.com/api/v1 and an API key, see Authentication.
GET /campaigns/{id}/readinessEverything 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 so a failure is explained rather than guessed at.
{
"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). 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.