API v3 is live and in beta: expect possible malfunctions and breaking changes in the coming days. If you find a bug, please report it to your Sillage contact.

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

ParameterTypeDescription
lead_idintegerID of the lead.

Body parameters

ParameterTypeDescription
statusstringNew pipeline status. See Pipeline status for the values.
owner_emailstring or nullEmail 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

StatusMeaning
401The API key is missing or invalid.
404The lead does not exist.
422The 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.
429Rate limit exceeded.
500An 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.

On this page