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.

Get a lead

Retrieve a lead's data by its ID.

Returns one lead of your workspace: their profile, their current company, their work history, where they stand in the pipeline and who owns them.

A lead without a linked profile still answers 200 OK, with the profile fields set to null. Likewise company is null when the current company cannot be resolved, and experiences is an empty array when no work history is known. None of these cases is an error.

Route

GET/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: the lead.id of a signal, or the id of a lead returned by Query leads. Use the value the API returned to you; do not guess it or reuse one from another workspace.

Example request

curl "https://api.getsillage.com/api/v3/leads/123" \
  -H "Authorization: Bearer $SILLAGE_API_KEY"

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

FieldTypeDescription
data.idintegerID of the lead.
data.full_namestring or nullLead's full name.
data.first_namestring or nullLead's first name.
data.last_namestring or nullLead's last name.
data.linkedin_urlstring or nullLinkedIn profile URL.
data.linkedin_handlestring or nullLinkedIn profile handle.
data.linkedin_headlinestring or nullLinkedIn headline.
data.avatar_urlstring or nullProfile picture URL.
data.emailstring or nullLead's email address, when known.
data.phonestring or nullLead's phone number, when known.
data.positionstring or nullJob title.
data.locationobject or nullLead's location. null when no location could be resolved. See Location.
data.companyobject or nullThe lead's current company, or null when the lead has no current company.
data.company.idintegerID of the company in the workspace, usable with Get a company.
data.company.namestring or nullCompany name.
data.company.domainstring or nullPrimary domain.
data.company.linkedin_urlstring or nullLinkedIn company page URL.
data.company.linkedin_handlestring or nullLinkedIn company handle.
data.company.logo_urlstring or nullLogo of the company.
data.company.activity_summarystring or nullShort summary of what the company does.
data.company.employee_rangestring or nullEmployee headcount range, one of the persona headcounts values: 1-10, 11-50, 51-200, 201-500, 501-1,000, 1,001-5,000, 5,001-10,000 or 10,001+. null when unknown.
data.company.locationobject or nullThe company's headquarters. See Location.
data.company.in_key_account_listbooleantrue when this company is on one of your customer or prospect lists.
data.experiencesarrayThe lead's work history, in the order of their LinkedIn profile and including the current position. An empty array when no work history is known.
data.experiences[].positionstring or nullJob title held in that position. null when unknown, never an empty string.
data.experiences[].company_namestring or nullName of the employer. null when unknown, never an empty string.
data.experiences[].company_linkedin_urlstring or nullThe employer's LinkedIn page, when known.
data.experiences[].locationstring or nullThe job's location as written on LinkedIn (free text). null when unknown, never an empty string.
data.experiences[].start_datestring or nullWhen the position started, as a date without a time (YYYY-MM-DD). The source may only carry a month or a year, so treat it as approximate.
data.experiences[].end_datestring or nullWhen the position ended, as a date without a time (YYYY-MM-DD). null for the current position or when unknown.
data.experiences[].is_currentbooleantrue for the lead's current position.
data.statusstring or nullWhere the lead stands in your pipeline: see Pipeline status. null when no status is set.
data.ownerobject or nullThe workspace member assigned to the lead, or null when unassigned.
data.owner.emailstringThe member's email address.
data.owner.first_namestring or nullThe member's first name.
data.owner.last_namestring or nullThe member's last name.
data.crm_recordsarrayThe CRM records Sillage has matched the lead to, one item per CRM. Empty when the lead is not matched to a contact in any of your CRMs.
data.crm_records[].providerstringThe CRM, salesforce or hubspot. More CRMs may be added, so ignore values you do not handle.
data.crm_records[].contact_idstring or nullThe lead's Contact ID in this CRM.
data.crm_records[].account_idstring or nullThe ID of the Account associated with the contact in this CRM. null when the contact has no associated account.
data.created_atstring or nullWhen the lead was added to the workspace, as an ISO 8601 timestamp.

Use crm_records to match the lead to your CRM record, for example to route it to the right owner.

Location

Every location in this API has the same shape: { "city", "region", "country", "country_code" }. Any part is null when it is not known, and the whole location is null when nothing could be resolved. country_code is the ISO country code, for example FR. This is a valid response, not an error.

Errors

StatusMeaning
401The API key is missing or invalid.
404The lead does not exist.
422The lead_id is not a valid ID, or a query parameter is sent: this route takes none, and errors names the parameter.
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