On this page

POST/campaigns/:campaignId/leads/:leadId/preview

Credits: 0
Rate limit: Global only (read-only dry-run)


Purpose

Static dry-run of the connection invite note and first message for a lead. No AI, no LinkedIn call, no send.

Fills placeholders from the assigned manual agent’s static text (invite note length may be capped for Premium accounts).


Request

POST /campaigns/:campaignId/leads/:leadId/preview
X-API-Key: sk_live_...

Response 200

{
  "campaignId": "…",
  "leadId": "…",
  "templateId": "…",
  "accountId": "acc_1",
  "wouldSendNow": false,
  "blockers": ["campaign_not_in_progress"],
  "rendered": {
    "connectionInviteNote": "Hi Ada — loved your post…",
    "message": "Hi Ada"
  },
  "reason": null
}
FieldNotes
renderedStatic fill result, or null when text is produced at send time (AI / Full Auto)
reason'generated_at_send' when text is produced at send time; else null
wouldSendNowtrue only when the campaign is in progress, the lead is not excluded, no connection request has been sent yet, and the first selected account still has daily connection capacity
blockersWhy wouldSendNow is false (informational)
accountIdFirst selected account used for caps / note length, or null

Not a reservation — outreach may still skip the lead later (outside send window, review mode, etc.).


Errors

CodeWhen
not_foundCampaign, lead, or assigned template missing
validation_errorNo agent assigned

MCP

Tool: preview_lead (readOnlyHint: true).