Add signal leads to a campaign
add_signal_leads_to_campaignAdds up to 100 signal leads (by lead id, from search_signal_leads) to one of your campaigns (one that opens with a connection note, or a Nurture campaign), exactly as the Signals tab's "Add to campaign" does, with the same checks and the same skips, reported per lead: someone already in a campaign, on your do-not-contact list, already connected (only a Nurture campaign takes them), not connected (a Nurture campaign takes only connections), or with no name. An AI-written campaign's first signal leads switch it to review, so their drafts wait for your approval in ZenMode. Spends no credits. Nothing happens on LinkedIn at the moment you call this. ZenMode's campaign engine works through each campaign later, inside your daily and weekly limits, business hours and pacing. If the account is restricted, paused for the week, cooling down or switched off, the call is refused with the reason and when it lifts, and nothing changes. If the account has only used today's allowance, the change is accepted and the response says it will be worked through once the limit resets. Calls that only stop outreach (remove, pause, exclude, not interested) are never refused. An idempotency_key makes a retried call a no-op.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"campaign_id": "<campaign_id>",
"lead_ids": "<lead_ids>"
},
"name": "add_signal_leads_to_campaign"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| lead_ids | Yes | ||
| campaign_id | Yes | The campaign id, from list_campaigns. Confirm it with the person first. | |
| idempotency_key | No | Optional. A unique string you make up for this exact change (8 to 128 letters, digits, - _ . :). If the call is repeated with the same key and the same arguments within 24 hours, nothing happens twice and the first result is returned again. Use a fresh key for every new change. |