This page documents the canonical HTTP contract for this endpoint.
This is an open object at the HTTP boundary, but the handler allows only the writable fields listed above. Contact fields (email, email_addresses, phone_numbers, primary_phone) are rejected; use POST /api/leads/{lead_id}/contact-channels. Activity summary fields are read-only, and unknown fields or invalid status return 400. The returned Lead is normalized and may include populated company and priority data.
Path parameters
lead_idrequiredstring
Lead ID.
| Name | Type | Description |
|---|---|---|
| lead_idrequired | string | Lead ID. |
Body parameters
first_name· optionalstring
Updated first name.
last_name· optionalstring
Updated last name.
company_domain· optionalstring
Updated company domain (triggers company re-matching).
linkedin_url· optionalstring
Updated LinkedIn profile URL.
linkedin_member_id· optionalstring
LinkedIn member identifier.
linkedin_sales_url· optionalstring
LinkedIn Sales URL.
company_id· optionalstring
Company record ID.
company_name· optionalstring
Company name.
company_linkedin_url· optionalstring
Company LinkedIn URL.
location· optionalstring
Location.
city· optionalstring
City.
state· optionalstring
State.
country· optionalstring
Country.
zip_code· optionalstring
Postal code.
timezone· optionalstring
Time zone.
notes· optionalstring
Lead notes.
title· optionalstring
Updated job title.
lead_status· optionalstring
Updated status; valid values: new, qualified, contacting, converted, customer, unqualified, bad_data, nurture.
user_id· optionalstring
Optional owner user ID field.
next_activity_at· optionalstring
Next activity timestamp.
note· optionalstring
Optional status transition note.
unqualified_reason· optionalstring
Optional reason for unqualified status.
unqualifiedReason· optionalstring
Accepted alias for unqualified_reason.
lead_status_reason· optionalstring
Optional lead status reason.
leadStatusReason· optionalstring
Accepted alias for lead_status_reason.
status_reason· optionalstring
Accepted status reason alias.
statusReason· optionalstring
Accepted status reason alias.
| Name | Type | Description |
|---|---|---|
| first_name | string | Updated first name. |
| last_name | string | Updated last name. |
| company_domain | string | Updated company domain (triggers company re-matching). |
| linkedin_url | string | Updated LinkedIn profile URL. |
| linkedin_member_id | string | LinkedIn member identifier. |
| linkedin_sales_url | string | LinkedIn Sales URL. |
| company_id | string | Company record ID. |
| company_name | string | Company name. |
| company_linkedin_url | string | Company LinkedIn URL. |
| location | string | Location. |
| city | string | City. |
| state | string | State. |
| country | string | Country. |
| zip_code | string | Postal code. |
| timezone | string | Time zone. |
| notes | string | Lead notes. |
| title | string | Updated job title. |
| lead_status | string | Updated status; valid values: new, qualified, contacting, converted, customer, unqualified, bad_data, nurture. |
| user_id | string | Optional owner user ID field. |
| next_activity_at | string | Next activity timestamp. |
| note | string | Optional status transition note. |
| unqualified_reason | string | Optional reason for unqualified status. |
| unqualifiedReason | string | Accepted alias for unqualified_reason. |
| lead_status_reason | string | Optional lead status reason. |
| leadStatusReason | string | Accepted alias for lead_status_reason. |
| status_reason | string | Accepted status reason alias. |
| statusReason | string | Accepted status reason alias. |
Errors
| Status | Meaning |
|---|---|
| 400 | Invalid update payload. |
| 401 | Invalid API key or missing auth. |
| 403 | Missing leads:write scope. |
| 404 | Lead not found. |
