Update a lead
Change a lead's pipeline status or owner.
Changes a lead's pipeline status, its owner, or both. Send only the fields you want to change. The answer is the updated lead.
Route
PATCH/api/v3/leads/{lead_id}
Access modes
Use a workspace API key. The workspace is inferred from the key.
Authorization: Bearer sk_live_...Path parameters
| Parameter | Type | Description |
|---|---|---|
| lead_id | integer | ID of the lead. |
Body parameters
| Parameter | Type | Description |
|---|---|---|
| status | string | New pipeline status. See Pipeline status for the values. |
| owner_email | string or null | Email address of a workspace member to assign as owner. null removes the current owner. |
Send at least one of status or owner_email. An empty body is refused with 422.
Example request
curl -X PATCH "https://api.getsillage.com/api/v3/leads/123" \
-H "Authorization: Bearer $SILLAGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "meeting_booked",
"owner_email": "sam@acme.com"
}'Success response
Status: 200 OK
{
"data": {
"id": 123,
"full_name": "Jane Doe",
"first_name": "Jane",
"last_name": "Doe",
"linkedin_url": "https://www.linkedin.com/in/janedoe",
"linkedin_handle": "janedoe",
"linkedin_headline": "VP Sales at Acme",
"avatar_url": "https://example.com/avatar.png",
"email": "jane.doe@acme.com",
"phone": "+33 1 23 45 67 89",
"position": "VP Sales",
"location": {
"city": "Paris",
"region": "Île-de-France",
"country": "France",
"country_code": "FR"
},
"company": {
"id": 789,
"name": "Acme",
"domain": "acme.com",
"linkedin_url": "https://www.linkedin.com/company/acme",
"linkedin_handle": "acme",
"logo_url": "https://example.com/acme-logo.png",
"activity_summary": "Acme builds enterprise sales software.",
"employee_range": "201-500",
"location": {
"city": "Paris",
"region": "Île-de-France",
"country": "France",
"country_code": "FR"
},
"in_key_account_list": true
},
"experiences": [
{
"position": "VP Sales",
"company_name": "Acme",
"company_linkedin_url": "https://www.linkedin.com/company/acme",
"location": "Paris, France",
"start_date": "2022-03-01",
"end_date": null,
"is_current": true
},
{
"position": "Sales Director",
"company_name": "Globex",
"company_linkedin_url": "https://www.linkedin.com/company/globex",
"location": "Lyon, France",
"start_date": "2018-06-01",
"end_date": "2022-02-01",
"is_current": false
}
],
"status": "meeting_booked",
"owner": {
"email": "sam@acme.com",
"first_name": "Sam",
"last_name": "Martin"
},
"crm_records": [
{
"provider": "salesforce",
"contact_id": "003xx000004TMMaBC",
"account_id": "001xx000008ABCdEF"
}
],
"created_at": "2026-09-14T09:12:44.000Z"
}
}Response fields
The response has the shape of Get a lead: data holds the lead as it stands after the change.
Errors
| Status | Meaning |
|---|---|
| 401 | The API key is missing or invalid. |
| 404 | The lead does not exist. |
| 422 | The lead_id is not valid, the body is empty, the status is not a known value, owner_email is not the email of a member of the workspace, or a field is not known. |
| 429 | Rate limit exceeded. |
| 500 | An unexpected server error occurred. |
Error responses use RFC 9457 problem documents with Content-Type: application/problem+json. type is always about:blank; code tells one problem from another, detail says what went wrong this time, and errors names the field at fault.