Send connection request
Queue a LinkedIn connection invite with an optional note (300-char cap; rate-safe).
Tool: send_connection_request
Fails with active_campaign_conflict if the person is on an active sequence - recover with stop_sequence_and_send or remove_from_sequence.
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
person_id | string (slug or UUID) | no | Who to invite. One of person_id / linkedin_url is required. |
linkedin_url | string | no | OR act by LinkedIn profile URL - matches the existing person; someone not yet imported is created, enriched (best-effort), and filed into today's misc lead group. A URL pasted into person_id is treated the same way. Alias: profile_url. |
message | string | no | Invite note, max 300 chars. Aliases: message_template, body. Default: no note. |
connected_account_id | string (slug or UUID) | no | Seat to act as. Alias: account_id. |
Template variables ({{first_name}}, {{custom.<key>}}, ...) render at queue time: unknown names →
validation_error; names the person has no value for →missing_variables- empty text is never sent.Blocked with
active_campaign_conflictwhen the person is on an active sequence (a one-off invite would double-touch them).The sample shows the queue-time envelope; the invite goes out on the drip tick.
Sample request
{
"person_id": "marco-rossi-0004",
"message": "Hi Marco — loved your PLG onboarding post. Would be great to connect."
}Search LinkedIn
OPT-IN ONLY: use this ONLY when the user explicitly asks to search LinkedIn with their own connected account - it runs as their real LinkedIn seat and spends its daily search quota.
Send InMail
Queue a LinkedIn InMail (premium seats only - capability_missing on free seats; body cap ~1900, subject 200; rate-safe).