You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Lensmor provides developer-facing access to event, exhibitor, personnel, contact, and profile-matching data through the Lensmor API.
7
+
Lensmor provides developer-facing access to event, exhibitor, attendee-source, registered Visitor, contact, and profile-matching data through the Lensmor API.
8
8
9
9
This repository hosts the public documentation site for developers integrating with [Lensmor](https://www.lensmor.com/?utm_source=github&utm_medium=readme&utm_campaign=API-Doc) — an AI-native event intelligence platform for B2B teams.
10
10
@@ -14,6 +14,7 @@ Use the API to:
14
14
15
15
- Check credit balance before running credit-consuming workflows
16
16
- Browse and inspect event data
17
+
- Build attendee intelligence with Exhibitor, Social Signals, and registered Visitor source labels
17
18
- Search exhibitors using company context and optional event scope
18
19
- Retrieve exhibitor and personnel profiles
19
20
- Search contacts with company-based inputs and unlock contact emails
@@ -53,10 +54,12 @@ curl -X GET "https://platform.lensmor.com/external/events/list?page=1&pageSize=2
53
54
-`openapi.json` — OpenAPI 3.1 specification for documented endpoints
54
55
-`api-catalog.json` — machine-readable API catalog pointing to the OpenAPI file
55
56
-`llms.txt` and `llms-full.txt` — LLM-friendly documentation entry points
57
+
-`zh-Hans/` — Simplified Chinese core onboarding, attendee, access, and contact-unlock guides
Copy file name to clipboardExpand all lines: api-reference-backup/contacts/search.mdx
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ openapi: "openapi.json GET /external/contacts/search"
6
6
7
7
Search contacts by company name.
8
8
9
-
Use this endpoint when you want a lightweight contact result set keyed off a company query, with optional role filtering.
9
+
Use this endpoint when you want a lightweight contact result set keyed off a company query, with optional role filtering and attendee source context aggregated across associated events.
|`department`, `seniorityLevel`| Normalized role metadata when available. |
91
91
|`linkedinUrl`| LinkedIn profile URL when available. |
92
92
|`companyName`| Matched company name. |
93
-
|`sourceType`|Normalized source labels for the contact record. Values can include `exhibitor`, `social`, and`visitors`. |
93
+
|`sourceType`|Non-exclusive source labels aggregated across associated events. Product mapping: Exhibitor = `exhibitor`, Social Signals = `social`, Visitor =`visitors`. |
94
94
|`email`| Email if already unlocked for the caller; otherwise `null`. |
95
95
|`phone`| Phone number if already unlocked for the caller; otherwise `null`. |
96
96
|`contactUnlockStatus`| Contact access state for this API key owner. |
@@ -112,5 +112,6 @@ No matching contacts can return an empty paginated response. Use this as a valid
112
112
113
113
## Notes
114
114
- Emails are returned only when the contact is already unlocked for the caller.
115
+
- Use [Personnel list](/api-reference/personnel/list-event-personnel) when you need source labels for one specific event. See [Attendee source types](/concepts/attendee-source-types) for the full mapping.
115
116
- Contact-style list responses follow the shared [Pagination conventions](/concepts/pagination).
116
117
- Each item includes `linkedinActivity` and `linkedinActivityStatus` for shape consistency, but they are always `null` on this endpoint. Only [Personnel list](/api-reference/personnel/list-event-personnel) populates LinkedIn activity data.
Copy file name to clipboardExpand all lines: api-reference-backup/events/unlock-event-visitor-access.mdx
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ openapi: "openapi.json POST /external/events/{id}/visitors/unlock"
6
6
7
7
Unlock the visitor data layer for an event that already has base event access.
8
8
9
-
Use this endpoint when the caller needs visitor records in addition to the exhibitor and personnel coverage unlocked by [Unlock event](/api-reference/events/unlock-event-access).
9
+
Use this endpoint when the caller needs registered Visitor records in addition to the exhibitor and personnel coverage unlocked by [Unlock event](/api-reference/events/unlock-event-access). Visitor records are obtained through organizer or data-provider partnerships and are available only for selected events.
10
10
11
11
## Prerequisites
12
12
@@ -16,7 +16,11 @@ Before executing this paid action:
16
16
2. Call [Actions precheck](/api-reference/actions/precheck-an-external-action) with `action_type: "unlock_event_visitors"` and the selected `event_id`.
17
17
3. Continue only when precheck returns `allowed: true`.
18
18
19
-
Visitor access requires an active subscription, available visitor data for the event, and enough credits.
19
+
Visitor access requires an active subscription, available Visitor data for the event, and enough credits.
20
+
21
+
<Note>
22
+
The product label is **Visitor**, while personnel responses use the API source value `"visitors"`. See [Attendee source types](/concepts/attendee-source-types).
23
+
</Note>
20
24
21
25
<Warning>
22
26
The first successful visitor unlock consumes `3000` credits. Precheck is read-only and should be used before the paid call.
Copy file name to clipboardExpand all lines: api-reference-backup/openapi.json
+17-5Lines changed: 17 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
"openapi": "3.1.0",
3
3
"info": {
4
4
"title": "Lensmor API",
5
-
"version": "0.24.0",
5
+
"version": "0.24.1",
6
6
"description": "Lensmor Event Intelligence API for event discovery, exhibitor research, personnel lookup, credits, and profile matching.",
7
7
"license": {
8
8
"name": "Lensmor Terms of Service",
@@ -1228,7 +1228,7 @@
1228
1228
"Personnel"
1229
1229
],
1230
1230
"summary": "List event personnel",
1231
-
"description": "Return paginated people for an event with preview or full-access semanticsand visible coverage counts.",
1231
+
"description": "Return paginated people for an event with event-scoped attendee source labels and preview or full base-event access semantics. The sourceType array can contain exhibitor, social, and visitors; labels are not mutually exclusive. The endpoint does not currently accept a source filter. Visitor is a separate access layer, so semantics.accessMode does not by itself confirm Visitor access.",
1232
1232
"operationId": "listPersonnel",
1233
1233
"parameters": [
1234
1234
{
@@ -1294,6 +1294,10 @@
1294
1294
"fullName": "Jane Smith",
1295
1295
"title": "VP of Retail Technology",
1296
1296
"companyName": "Acme Retail Systems",
1297
+
"sourceType": [
1298
+
"exhibitor",
1299
+
"social"
1300
+
],
1297
1301
"email": null,
1298
1302
"phone": null,
1299
1303
"contactUnlockStatus": "locked",
@@ -1334,7 +1338,7 @@
1334
1338
"Personnel"
1335
1339
],
1336
1340
"summary": "Get personnel profile",
1337
-
"description": "Return the public professional profile for one personnel identifier.",
1341
+
"description": "Return the public professional profile for one personnel identifier. The sourceType array can aggregate non-exclusive attendee source labels across the person's associated events.",
"description": "Search public contact records by required company name and optional role or person-name filters.",
1605
+
"description": "Search public contact records by required company name and optional role or person-name filters. Returned sourceType arrays can aggregate non-exclusive attendee source labels across associated events.",
1598
1606
"operationId": "searchContacts",
1599
1607
"parameters": [
1600
1608
{
@@ -1645,6 +1653,10 @@
1645
1653
"fullName": "Jane Doe",
1646
1654
"title": "VP Marketing",
1647
1655
"companyName": "Acme",
1656
+
"sourceType": [
1657
+
"social",
1658
+
"visitors"
1659
+
],
1648
1660
"email": null,
1649
1661
"phone": null,
1650
1662
"contactUnlockStatus": "locked",
@@ -3892,7 +3904,7 @@
3892
3904
},
3893
3905
"sourceType": {
3894
3906
"type": "array",
3895
-
"description": "Normalized Lensmor source labels for this person. Possible values are exhibitor, social, and visitors.",
3907
+
"description": "Lensmor source/business labels for this person. Source labels are not mutually exclusive. Product mapping: Exhibitor is exhibitor, Social Signals is social, and Visitor is visitors. Visitor represents registered attendees obtained through organizer or data-provider partnerships; Social Signals is not proof of official registration. Event personnel lists return event-scoped labels, while personnel profile and contact search can aggregate labels across associated events.",
Copy file name to clipboardExpand all lines: api-reference-backup/personnel/list.mdx
+11-4Lines changed: 11 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ openapi: "openapi.json GET /external/personnel/list"
6
6
7
7
List personnel records for a specific event.
8
8
9
-
Use this endpoint when you want a paginated people directory for one event, with optional exhibitor, department, level, and search filters.
9
+
Use this endpoint when you want a paginated people directory for one event, with optional exhibitor, department, level, and search filters. Each item can include event-scoped Exhibitor, Social Signals, and Visitor source labels.
10
10
11
11
## When to use this endpoint
12
12
@@ -17,8 +17,13 @@ Common use cases:
17
17
- browse people associated with an event
18
18
- filter by department or seniority
19
19
- find contacts for a selected exhibitor
20
+
- segment accessible attendees by their event-scoped `sourceType` labels
20
21
- collect personnel IDs before calling [Unlock contact emails](/api-reference/contacts/unlock-contact-emails)
21
22
23
+
<Note>
24
+
The endpoint does not currently accept a source filter. Fetch the accessible result set and segment it client-side. See [Attendee source types](/concepts/attendee-source-types).
|`department`, `seniorityLevel`| Normalized role metadata when available. |
122
127
|`linkedinUrl`| LinkedIn profile URL when available. |
123
128
|`companyName`| Associated company or exhibitor name. |
124
-
|`sourceType`|Normalized source labels for the person record. Values can include `exhibitor`, `social`, and `visitors`; an empty array means no supported source label is available. |
129
+
|`sourceType`|Event-scoped, non-exclusive source labels. Product mapping: Exhibitor = `exhibitor`, Social Signals = `social`, Visitor = `visitors`. An empty array means no supported source label is available. |
125
130
|`email`| Email address if already unlocked for the caller; otherwise `null`. |
126
131
|`phone`| Phone number if already unlocked for the caller; otherwise `null`. |
127
132
|`contactUnlockStatus`| Contact access state, such as `locked` or unlocked states. |
Locked events can still return preview personnel results. Read `semantics` before deciding whether to unlock the event:
139
144
140
-
-`accessMode` tells you whether the response is preview or full access.
145
+
-`accessMode` tells you whether base event coverage is preview or full access. It does not describe the separate Visitor access layer.
141
146
-`counts.remainingLockedCount` tells you whether more records are hidden.
142
147
-`unlock.requiredForMoreResults` tells you whether event unlock is useful for this query.
143
148
-`guidance.message` provides a user-facing explanation.
@@ -150,6 +155,8 @@ Locked events can still return preview personnel results. Read `semantics` befor
150
155
151
156
## Notes
152
157
- Personnel list responses intentionally use the lightweight contact-style response shape.
158
+
- A person can have multiple source labels. Preserve every value rather than assigning one exclusive category.
159
+
- Visitor records are registered attendees obtained through organizer or data-provider partnerships. Visitor availability and access must be checked separately.
153
160
- Emails are returned only when the contact is already unlocked for the caller.
154
161
- Locked events can return preview results. Use `semantics.unlock` to decide whether to call [Unlock event](/api-reference/events/unlock-event-access).
155
162
- Pagination behavior follows the shared [Pagination conventions](/concepts/pagination).
Copy file name to clipboardExpand all lines: api-reference-backup/personnel/profile.mdx
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ Use this endpoint when you already know the personnel identifier and need profil
12
12
13
13
Use `GET /external/personnel/profile` after a user selects a person from a personnel list, contact search result, or LinkedIn-based event lookup.
14
14
15
-
This endpoint is intentionally lightweight. Use it to confirm the person's identity and current email unlock state before starting a contact unlock workflow.
15
+
This endpoint is intentionally lightweight. Use it to confirm the person's identity, aggregated source labels, and current email unlock state before starting a contact unlock workflow.
|`department`, `seniorityLevel`| Normalized role metadata when available. |
63
63
|`linkedinUrl`| Public LinkedIn profile URL when available. |
64
64
|`companyName`| Associated company or exhibitor. |
65
-
|`sourceType`|Normalized source labels such as `exhibitor`, `social`, and`visitors`. |
65
+
|`sourceType`|Non-exclusive source labels aggregated across the person's associated events. Product mapping: Exhibitor = `exhibitor`, Social Signals = `social`, Visitor =`visitors`. |
66
66
|`email`| Email address if already unlocked for the caller; otherwise `null`. |
67
67
|`phone`| Phone number if already unlocked for the caller; otherwise `null`. |
68
68
|`contactUnlockStatus`| Current contact access state for this API key owner. |
@@ -81,5 +81,7 @@ An empty `email` value does not necessarily mean Lensmor has no email data. It c
81
81
82
82
## Notes
83
83
- This response stays intentionally lightweight.
84
+
- Use [Personnel list](/api-reference/personnel/list-event-personnel) when you need source labels for one specific event. Profile labels can reflect multiple associated events.
85
+
- See [Attendee source types](/concepts/attendee-source-types) for label meanings and Visitor access behavior.
84
86
- Emails are returned only when the contact is already unlocked for the caller.
85
87
- The response includes `linkedinActivity` and `linkedinActivityStatus` for shape consistency, but they are always `null` on this endpoint. Only [Personnel list](/api-reference/personnel/list-event-personnel) populates LinkedIn activity data.
0 commit comments