Receiving Events
🚧 Coming soon. Signals are not available yet. This page describes how they will work at launch – the
/signalsendpoints,signal.*events and the SDK, CLI and MCP signal commands do not work today. Network monitoring –/network/polland thenetwork.*webhook events – works today.
Every new item a signal detects – a post, a comment, a reaction, a profile view, a connection change – is recorded once as an event. You can read events in two ways, and both return the same event objects:
- Polling – ask for everything recorded since your last request.
- Webhooks – Linked API sends each event to your endpoint as it is recorded.
Events are kept for 90 days, including after the signal that produced them is deleted.
Polling
POST https://api.linkedapi.io/signals/pollThe request body is a single object. All fields are optional:
{
"since": "2026-10-12T00:00:00Z",
"signalId": "5b0d3c1e-8f2a-4c1b-9e7d-2a6f4c8b1d90",
"signalType": "personPosts",
"eventType": "postPublished"
}since– return events detected after this timestamp. If omitted, all retained events are returned.signalId– only events of this signal.signalType– only events of signals of this type.eventType– only events of this type, such aspostPublishedorcommentAdded.
Events of every signal on the account come back together unless you filter them:
{
"success": true,
"result": {
"events": [
{
"id": "c7e1a0f2-3d4b-4e5f-8a9b-0c1d2e3f4a5b",
"signalId": "5b0d3c1e-8f2a-4c1b-9e7d-2a6f4c8b1d90",
"signalType": "personPosts",
"label": "lead-1042",
"type": "postPublished",
"detectedAt": "2026-10-12T16:40:00Z",
"post": {
"url": "https://www.linkedin.com/feed/update/urn:li:activity:1234567890123456789",
"activityUrn": "urn:li:activity:1234567890123456789",
"time": "2026-10-12T14:05:00Z",
"type": "original",
"author": {
"type": "person",
"name": "Example Person",
"urn": "urn:li:member:123456789",
"profileUrl": "https://www.linkedin.com/in/person1",
"headline": "Product Marketing Lead"
},
"text": "We are hiring our first sales engineer.",
"reactionsCount": 4,
"commentsCount": 1,
"repostsCount": 0
}
},
{
"id": "f4d92946-8821-6da6-ff4c-c36f0671292a",
"signalId": "0e6f1a2b-7c8d-4e9f-a0b1-c2d3e4f5a6b7",
"signalType": "network",
"label": null,
"type": "connectionAccepted",
"detectedAt": "2026-10-12T11:35:00Z",
"personUrn": "urn:li:member:987654321",
"personUrl": "https://www.linkedin.com/in/person2"
}
]
}
}events– array of events, ordered newest first.id– unique event identifier. The same event delivered as a webhook carries the sameid.signalId,signalType,label– the signal that produced the event and its label.type– event type. Each signal type page lists its event types.detectedAt– when Linked API recorded the event. It is the time of the check, not the time the thing happened on LinkedIn: a post published at 14:05 and found by the 16:40 check hasdetectedAt16:40 andpost.time14:05.- The rest is the event's subject:
post,comment,reaction,viewer, or the person fields of anetworkevent. Their fields are described on each signal type page.
Recommended flow:
- Leave
sinceempty on the first request to retrieve everything recorded so far. - On every next request, pass the
detectedAtof the most recent event you have assince. - Process each event once by its
id.
💡
/network/pollkeeps working and returns the samenetworkevents as before.
Webhook events
If you have a webhook registered, every signal event is also delivered to it as it is recorded. Signal events share the signal.* namespace:
| Webhook event | Produced by | Event type in polling |
|---|---|---|
signal.postPublished | personPosts, companyPosts | postPublished |
signal.postFound | postSearch | postFound |
signal.commentAdded | postEngagement | commentAdded |
signal.reactionAdded | postEngagement | reactionAdded |
signal.profileViewed | profileViewers | profileViewed |
The network signal keeps its existing event names: network.connectionRequestReceived, network.connectionAccepted and network.connectionAdded. See network events.
data carries the event exactly as polling returns it, plus accountId:
{
"id": "signal.commentAdded:9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d",
"type": "signal.commentAdded",
"createdAt": "2026-10-12T16:40:02.000Z",
"data": {
"id": "9a8b7c6d-5e4f-4a3b-2c1d-0e9f8a7b6c5d",
"accountId": "f9b4346a-...",
"signalId": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"signalType": "postEngagement",
"label": "launch-post",
"type": "commentAdded",
"detectedAt": "2026-10-12T16:40:00Z",
"postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:1234567890123456789",
"comment": {
"commentUrl": "https://www.linkedin.com/feed/update/urn:li:activity:1234567890123456789/?dashCommentUrn=urn%3Ali%3Afsd_comment%3A(9876543210%2Curn%3Ali%3Aactivity%3A1234567890123456789)",
"author": {
"type": "person",
"name": "John Doe",
"profileUrl": "https://www.linkedin.com/in/john-doe",
"headline": "Head of Growth"
},
"time": "2h",
"text": "Interested – how does it handle multiple accounts?",
"isReply": false
}
}
}To receive only some signal events, use event selection: signal.* for all of them, or exact types such as signal.commentAdded.
Events you deselect from the webhook are still recorded and still returned by polling. The webhook selection controls delivery, not what signals detect.