Watchlists
Watchlists let you group companies, persons, addresses, properties, and vehicles into named lists and receive notifications when monitored entities change.
Overview
Watchlist
A named container for members you want to monitor.
Members
Entities (companies, persons, etc.) added to a watchlist.
Events & Notifications
Changes detected on members, delivered via email, webhook, or SMS.
Minimum plan
| Member type | Minimum plan |
|---|---|
| Companies | Pro+ |
| Vehicles | Pro+ |
| Persons | Max+ |
| Addresses | Enterprise+ |
| Properties | Enterprise+ |
Watchlist management, notifications, subscriptions, and events are available on Pro+.
Watchlist CRUD
List watchlists
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/watchlists?sortBy=name"
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
sortBy |
string | name |
name or created |
Response — array of watchlist objects:
[
{
"watchListGuid": "a1b2c3d4-e5f6-...",
"watchListName": "My companies",
"watchListDescription": "Portfolio monitoring",
"numberOfCompanies": 42,
"numberOfPersons": 0,
"numberOfNotifications": 2,
"numberOfSubscriptions": 5,
"numberOfUnacknowledgedEvents": 3
}
]
Create a watchlist
curl -X POST "https://lens-api.tic.io/watchlists" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "watchListName": "My companies", "watchListDescription": "Portfolio monitoring" }'
| Field | Type | Required | Constraints |
|---|---|---|---|
watchListName |
string | Yes | 1–200 characters |
watchListDescription |
string | No | Max 1000 characters |
Returns 201 Created with the full watchlist object and a Location header.
Update a watchlist
PUT /watchlists/{watchlistGuid}
Same request body as create. Returns the updated watchlist.
Delete a watchlist
DELETE /watchlists/{watchlistGuid}
Returns 204 No Content. Deleting a watchlist removes all members, events, notifications, and subscriptions.
Members
Each member type has the same three operations: list (paginated), add, and remove.
Adding a member
# Add a company
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/companies/3508351" \
-H "x-api-key: YOUR_API_KEY"
Replace companies/3508351 with the entity type and ID:
| Entity | Route | ID field |
|---|---|---|
| Company | /companies/{companyId} |
companyId |
| Person | /persons/{personId} |
personId |
| Address | /addresses/{addressId} |
addressId |
| Property | /properties/{propertyId} |
propertyId |
| Vehicle | /vehicles/{vehicleId} |
vehicleId |
Returns 201 Created with the member GUID:
{
"watchListMemberGuid": "f6e5d4c3-b2a1-...",
"companyId": 3508351
}
Returns 409 Conflict if the entity is already a member.
Listing members (paginated)
Member lists use the same offset-based pagination as other table endpoints. See Pagination & Filtering for the full reference.
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/companies" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "startRow": 0, "endRow": 50 }'
Paginated member endpoints:
| Endpoint | Description |
|---|---|
POST /watchlists/{id}/companies |
Company members |
POST /watchlists/{id}/persons |
Person members |
POST /watchlists/{id}/addresses |
Address members |
POST /watchlists/{id}/properties |
Property members |
POST /watchlists/{id}/vehicles |
Vehicle members |
Exporting members
Each member type can be exported as CSV:
GET /watchlists/{watchlistGuid}/companies/export
GET /watchlists/{watchlistGuid}/persons/export
GET /watchlists/{watchlistGuid}/addresses/export
GET /watchlists/{watchlistGuid}/properties/export
GET /watchlists/{watchlistGuid}/vehicles/export
Removing a member
DELETE /watchlists/{watchlistGuid}/members/{memberGuid}
Returns 204 No Content. Associated events are also deleted.
Moving members
Move a single member to another watchlist:
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/members/{memberGuid}/move" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "targetWatchListGuid": "b2c3d4e5-f6a7-..." }'
Move multiple members at once:
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/members/move" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"targetWatchListGuid": "b2c3d4e5-f6a7-...",
"memberGuids": ["f6e5d4c3-b2a1-...", "a1b2c3d4-e5f6-..."]
}'
Returns 409 for members that already exist in the target watchlist. Bulk move reports skipped duplicates:
{
"movedCount": 8,
"skippedDuplicates": ["f6e5d4c3-b2a1-..."],
"targetWatchListGuid": "b2c3d4e5-f6a7-..."
}
Check membership
Find which watchlists an entity belongs to:
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/watchlists/membership?companyId=3508351"
Pass exactly one query parameter: companyId, personId, addressId, propertyId, or vehicleId.
Event subscriptions
Subscriptions control which event types generate events for a watchlist. Without subscriptions, no events are recorded.
List subscriptions
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/watchlists/{watchlistGuid}/subscriptions"
Response:
[
{
"subscriptionId": "abcdef01-2345-...",
"eventType": 1,
"eventTypeName": "CompanyAddress",
"lastUpdatedAtUtc": "2025-03-15T10:30:00Z"
}
]
Subscribe to event types
Subscribe to a single event type:
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/subscriptions" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "eventType": 1 }'
Subscribe to all event types at once:
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/subscriptions" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "subscribeToAll": true }'
Unsubscribe
DELETE /watchlists/{watchlistGuid}/subscriptions/{subscriptionId}
Event types
| Value | Name | Entity |
|---|---|---|
| 1 | CompanyAddress |
Company |
| 2 | CompanyName |
Company |
| 3 | CompanyStatus |
Company |
| 4 | CompanyRegistration |
Company |
| 5 | CompanyIntelligence |
Company |
| 6 | CompanyBeneficialOwner |
Company |
| 7 | CompanyDocument |
Company |
| 8 | CompanyWorkplace |
Company |
| 9 | CompanyPerson |
Company |
| 10 | CompanyRegisteredOffice |
Company |
| 11 | CompanyShareCapital |
Company |
| 12 | CompanyPurpose |
Company |
| 13 | CompanyDebtBalance |
Company |
| 14 | CompanyOrderToPayCase |
Company |
| 15 | CompanyFinancialDocument |
Company |
| 16 | CompanyCase |
Company |
| 17 | CompanyWorkplaceAddress |
Company |
| 25 | PersonAddress |
Person |
| 26 | PersonName |
Person |
| 27 | PersonIntelligence |
Person |
| 28 | PersonStatus |
Person |
| 29 | PersonCompany |
Person |
| 40 | PropertyOwnershipChange |
Property |
| 41 | PropertyMortgageDeedChange |
Property |
| 47 | VehicleOwnerChange |
Vehicle |
| 48 | VehicleUserChange |
Vehicle |
| 49 | VehicleStatusChange |
Vehicle |
| 50 | VehicleInspection |
Vehicle |
| 51 | VehicleStolen |
Vehicle |
Notifications
Notifications define where events are delivered. Each watchlist can have multiple notification destinations.
List notifications
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/watchlists/{watchlistGuid}/notifications"
Response:
[
{
"notificationId": "12345678-abcd-...",
"destination": "https://example.com/webhook",
"destinationType": 0,
"destinationTypeDescription": "Webhook",
"hasBeenValidated": true,
"lastUpdatedAtUtc": "2025-03-15T10:30:00Z"
}
]
Create a notification
| Field | Type | Description |
|---|---|---|
destination |
string | Email address, webhook URL, or E.164 phone number |
destinationType |
int | 0 = Webhook, 1 = Email, 2 = SMS |
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/notifications" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "destination": "https://example.com/webhook", "destinationType": 0 }'
Destination must be a valid https:// URL.
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/notifications" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "destination": "alerts@example.com", "destinationType": 1 }'
Destination must be a valid email address.
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/notifications" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "destination": "+46701234567", "destinationType": 2 }'
Destination must be a valid E.164 mobile phone number.
Returns 409 Conflict if the destination already exists on the watchlist.
Delete a notification
DELETE /watchlists/{watchlistGuid}/notifications/{notificationId}
Events
When a subscribed change is detected on a member, an event is recorded. Events persist until the member is removed.
List events (paginated)
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/events" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "startRow": 0, "endRow": 50 }'
Uses offset-based pagination. See Pagination & Filtering.
Each event contains:
| Field | Type | Description |
|---|---|---|
eventId |
int | Unique event identifier |
watchListMemberGuid |
Guid | The member that changed |
eventType |
int | Event type (see table above) |
subType |
string | Additional detail about the change |
eventDate |
datetime | When the change was detected |
isAcknowledged |
bool | Whether the event has been acknowledged |
acknowledgedNote |
string | Note added during acknowledgement |
companyId / personId / addressId / propertyId / vehicleId |
int | The entity that changed (one is set) |
Export events
GET /watchlists/{watchlistGuid}/events/export
Returns a CSV file.
Acknowledge a single event
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/events/42/acknowledge" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "note": "Reviewed, no action needed" }'
The note field is optional.
Unacknowledge a single event
DELETE /watchlists/{watchlistGuid}/events/{eventId}/acknowledge
Bulk acknowledge
Acknowledge multiple events at once:
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/events/acknowledge" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "eventIds": [42, 43, 44], "note": "Batch reviewed" }'
Bulk unacknowledge
curl -X DELETE "https://lens-api.tic.io/watchlists/{watchlistGuid}/events/acknowledge" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "eventIds": [42, 43, 44] }'
Acknowledge all
Acknowledge every unacknowledged event on a watchlist:
curl -X POST "https://lens-api.tic.io/watchlists/{watchlistGuid}/events/acknowledge-all" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "note": "End-of-week review" }'
Optionally exclude specific events:
{
"note": "End-of-week review",
"excludeEventIds": [99, 100]
}
Dashboard
Get a summary of a watchlist including recent events and event counts per entity type:
curl -H "x-api-key: YOUR_API_KEY" \
"https://lens-api.tic.io/watchlists/{watchlistGuid}/dashboard?recentEventCount=10"
| Parameter | Type | Default | Max |
|---|---|---|---|
recentEventCount |
int | 10 | 25 |
Response:
{
"watchListGuid": "a1b2c3d4-e5f6-...",
"watchListName": "My companies",
"totalMembers": 42,
"unacknowledgedEventCount": 3,
"lastEventAtUtc": "2025-03-15T10:30:00Z",
"eventBreakdown": {
"companyEvents": 12,
"personEvents": 0,
"addressEvents": 0,
"propertyEvents": 0,
"vehicleEvents": 0,
"totalEvents": 12
},
"recentEvents": [
{
"eventId": 42,
"memberGuid": "f6e5d4c3-b2a1-...",
"eventType": 2,
"subType": "Name changed",
"eventDate": "2025-03-15T10:30:00Z",
"isAcknowledged": false,
"entityType": "Company",
"entityName": "Volvo AB",
"entityId": 3508351
}
]
}
Typical workflow
POST /watchlists with a name and optional description.
Add companies, persons, addresses, properties, or vehicles to your watchlist.
Choose specific event types or use subscribeToAll to monitor everything.
Set up webhook for real-time delivery, email for digests, or SMS for alerts.
Events are recorded as members change. Poll the events endpoint or receive notifications.
Mark events as reviewed — individually, in bulk, or all at once.
Error reference
| Status | Cause |
|---|---|
201 |
Member or resource created |
204 |
Delete successful |
400 |
Invalid request body or missing required field |
404 |
Watchlist or member not found |
409 |
Duplicate member or notification |