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
}
| Field | Notes |
|---|---|
rendered | Static 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 |
wouldSendNow | true 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 |
blockers | Why wouldSendNow is false (informational) |
accountId | First 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
| Code | When |
|---|---|
not_found | Campaign, lead, or assigned template missing |
validation_error | No agent assigned |
MCP
Tool: preview_lead (readOnlyHint: true).