On this page

PATCH/campaigns/:campaignId/leads/:leadId

Update CRM fields on a lead. 0 credits. Rate class: patch_lead. Body must include at least one of tag, excluded, or a CRM/profile field below.

Request

PATCH /campaigns/search-xyz/leads/lead_abc
X-API-Key: sk_live_...
Content-Type: application/json
{
  "tag": "Interested",
  "excluded": false,
  "custom1": "VIP",
  "custom10": "Q4"
}
FieldNotes
tagnull / "" clears; else one of the writable tags below
excludedboolean
Profile / CRMOptional — see below. null clears a slot (stored empty; echoed as null)

Writable tag values

Built-ins (case-insensitive, stored as canonical labels): Interested, Not interested, Wrong person, Meeting booked, Resolved.

Also accepts active custom reply tags from GET /tags. Classifier alias Meeting request is not assignable — use Meeting booked. Archived custom tags are rejected.

GET ?tag= filters may still accept additional list-only labels; write paths use the catalog above.

Profile & CRM merge fields

Optional keys (strings; unknown keys → 400). Not email or linkedinUrl.

KeysMax
fullName, firstName, lastName120
companyName200
website, companyLinkedin500
jobTitle400
phone80
headline500
location, companySize, companyCountry, companyCity120
personalization, custom, custom1 … custom102000

If you patch firstName / lastName without fullName, the API recomputes fullName from the new parts plus any existing name fields.

Response

{
  "id": "lead_abc",
  "tag": "Interested",
  "excluded": false,
  "fields": {
    "custom1": "VIP",
    "custom10": "Q4"
  }
}

fields is present only when CRM/profile keys were written in this request (cleared slots echo as null).

Errors

Error codeWhen
validation_errorEmpty body / unknown fields / invalid tag / oversize CRM
not_foundUnknown campaign or lead

MCP

Tool: update_lead.