Pre-flight checklist covering status, senders, prospects, sequence content, and draft messages.
POST /api/campaigns/{id}/launch. Returns a structured { ready, checks, errors, warnings } payload covering eight dimensions:
draft statusactive/warming for email, connected for LinkedIn)pending prospect existscampaign_prospect_messagesdraft, the response short-circuits — the other checks are skipped and only the Campaign is <status> — must be draft to launch error is returned.
errors blocks launch; warnings does not. Both should be surfaced to the user verbatim.Messages-generated is a warning, not an error. Missing draft messages are a warning when non-AI sendable nodes exist (messages can still be generated at launch), and silently skipped when the only sendable nodes are AI. Agents shouldn’t gate on messages_generated === true.No side effects. Safe to call as often as you like. Call it right before launchCampaign — status changes between these two calls are the only race, and they surface as a 400 on launch.Repair loop. If ready === false, walk errors top-to-bottom: fix draft status via updateCampaign, add senders via POST /api/campaigns/{id}/senders, add prospects via POST /api/campaigns/{id}/leads, fill sequence content via updateCampaign, optionally call POST /api/campaigns/{id}/generate-messages with action: "resolve". Re-validate after each fix.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Campaign UUID
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Validation snapshot. ready tells you whether launch would succeed right now.
Full pre-launch validation snapshot. Surface errors to the user verbatim before calling launchCampaign.
True iff errors is empty. Warnings alone do not block launch.
Individual readiness signals. A campaign is launch-ready when every *_ready / has_* flag is true AND errors is empty.
Human-readable blockers. Each string is a specific, actionable reason the campaign cannot launch yet.
Non-blocking advisories — e.g. AI nodes without pre-generated examples (messages get generated at launch).