Add Or Update Lead
Add or update a lead keyed by LinkedIn URL, accepting either a slug like 'john-doe' or a full profile URL. It creates the contact when not found and updates status, notes, tags, and custom attributes when it already exists. Returns an error if the account storage_mode is not 'managed'.
Example prompt: Add john-doe as a lead at Acme with status contacted and tag warm-lead
{
"crispy_id": "c_8f21",
"created": false,
"status": "contacted",
"tags": ["warm-lead"]
}What you can build
Parameters
Inputs accepted by upsert_lead.
| Name | Type | Description |
|---|---|---|
| lookup | object | Structured contact identifier. Resolver picks the highest-priority field per RESOLVER-09 (crispy_id > linkedin_provider_id > external_id > linkedin_url > email). |
| linkedin_url | string | LinkedIn profile URL or slug (e.g. 'john-doe' or 'linkedin.com/in/john-doe'). [Deprecated: use lookup.linkedin_url] |
| status | string | Lead status to set (e.g. new, contacted, replied, qualified). |
| first_name | string | First name. |
| last_name | string | Last name. |
string | Email address. | |
| company | string | Company name. |
| title | string | Job title. |
| tags | string[] | Tags for categorization. |
| custom_attrs | object | Custom personalization variables (max 100 string keys, 1KB total). Used in templates as {key}. Merged with existing. |
| external_ids | object | Stable third-party identifiers (CRM IDs, enrichment IDs). Keys ending in _id are auto-populated from CSV imports. |
Related tools
Enroll Lead In Campaign
Enroll a LinkedIn contact in a campaign by slug. Returns a clear verdict every time, added, already enrolled, or skipped, and is fully idempotent.
Get Full Contact Picture
Get the complete LinkedIn contact picture in one call: identifiers, campaigns, messages, connection events, company, lead score, and next-best-action.
Search Saved Leads
Search your saved LinkedIn leads and contacts by name, status, tags, or company. Filter to new, contacted, replied, or qualified leads in one call.
Bulk Import Contacts
Bulk-import LinkedIn contacts from JSON, CSV, URL, or storage with merge, replace, or skip strategies. Preview before committing and track per-record skips.
The complete LinkedIn API. Ready when you are.
Connect your first LinkedIn profile in under 5 minutes. Every tool, every seat, no feature gates. Safe limits, warm-up, and full permission control built in.