Create Signal
curl --request POST \
--url https://api.datamagnet.co/api/v1/signal/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"frequency": "<string>",
"scheduled_time": "<string>",
"scheduled_day": "<string>",
"signal_type": "<string>",
"profile_urls": [
{}
],
"signal_id": "<string>",
"new_signal": true,
"activity_types": [
{}
],
"additional_emails": [
{}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"keywords": [
{}
],
"icp": {},
"industries": [
{}
],
"date_posted": "<string>",
"company_urls": [
{}
],
"tracking_mode": "<string>"
}
'import requests
url = "https://api.datamagnet.co/api/v1/signal/create"
payload = {
"name": "<string>",
"frequency": "<string>",
"scheduled_time": "<string>",
"scheduled_day": "<string>",
"signal_type": "<string>",
"profile_urls": [{}],
"signal_id": "<string>",
"new_signal": True,
"activity_types": [{}],
"additional_emails": [{}],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"keywords": [{}],
"icp": {},
"industries": [{}],
"date_posted": "<string>",
"company_urls": [{}],
"tracking_mode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
frequency: '<string>',
scheduled_time: '<string>',
scheduled_day: '<string>',
signal_type: '<string>',
profile_urls: [{}],
signal_id: '<string>',
new_signal: true,
activity_types: [{}],
additional_emails: [{}],
webhook_url: '<string>',
webhook_secret: '<string>',
keywords: [{}],
icp: {},
industries: [{}],
date_posted: '<string>',
company_urls: [{}],
tracking_mode: '<string>'
})
};
fetch('https://api.datamagnet.co/api/v1/signal/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datamagnet.co/api/v1/signal/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'frequency' => '<string>',
'scheduled_time' => '<string>',
'scheduled_day' => '<string>',
'signal_type' => '<string>',
'profile_urls' => [
[
]
],
'signal_id' => '<string>',
'new_signal' => true,
'activity_types' => [
[
]
],
'additional_emails' => [
[
]
],
'webhook_url' => '<string>',
'webhook_secret' => '<string>',
'keywords' => [
[
]
],
'icp' => [
],
'industries' => [
[
]
],
'date_posted' => '<string>',
'company_urls' => [
[
]
],
'tracking_mode' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.datamagnet.co/api/v1/signal/create"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"frequency\": \"<string>\",\n \"scheduled_time\": \"<string>\",\n \"scheduled_day\": \"<string>\",\n \"signal_type\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"new_signal\": true,\n \"activity_types\": [\n {}\n ],\n \"additional_emails\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"icp\": {},\n \"industries\": [\n {}\n ],\n \"date_posted\": \"<string>\",\n \"company_urls\": [\n {}\n ],\n \"tracking_mode\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.datamagnet.co/api/v1/signal/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"frequency\": \"<string>\",\n \"scheduled_time\": \"<string>\",\n \"scheduled_day\": \"<string>\",\n \"signal_type\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"new_signal\": true,\n \"activity_types\": [\n {}\n ],\n \"additional_emails\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"icp\": {},\n \"industries\": [\n {}\n ],\n \"date_posted\": \"<string>\",\n \"company_urls\": [\n {}\n ],\n \"tracking_mode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datamagnet.co/api/v1/signal/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"frequency\": \"<string>\",\n \"scheduled_time\": \"<string>\",\n \"scheduled_day\": \"<string>\",\n \"signal_type\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"new_signal\": true,\n \"activity_types\": [\n {}\n ],\n \"additional_emails\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"icp\": {},\n \"industries\": [\n {}\n ],\n \"date_posted\": \"<string>\",\n \"company_urls\": [\n {}\n ],\n \"tracking_mode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": {
"signal_id": "e7f1c2a4-9b3d-4c8e-a1f5-6d2b0c9e8a7f",
"signal_type": "job_change",
"name": "Champions",
"status": "active",
"profile_urls": [
"https://linkedin.com/in/satyanadella",
"https://linkedin.com/in/williamgates"
],
"email_recipients": [
"user@example.com",
"teammate@example.com"
],
"webhook_url": "https://yourapp.com/webhooks/signals"
},
"credit_used": 2
}
Create Signal
Create a signal monitor that tracks LinkedIn profiles for job changes, new posts, or their own reactions and comments, or tracks keyword, industry, company, and person engagement events.
POST
/
api
/
v1
/
signal
/
create
Create Signal
curl --request POST \
--url https://api.datamagnet.co/api/v1/signal/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"frequency": "<string>",
"scheduled_time": "<string>",
"scheduled_day": "<string>",
"signal_type": "<string>",
"profile_urls": [
{}
],
"signal_id": "<string>",
"new_signal": true,
"activity_types": [
{}
],
"additional_emails": [
{}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"keywords": [
{}
],
"icp": {},
"industries": [
{}
],
"date_posted": "<string>",
"company_urls": [
{}
],
"tracking_mode": "<string>"
}
'import requests
url = "https://api.datamagnet.co/api/v1/signal/create"
payload = {
"name": "<string>",
"frequency": "<string>",
"scheduled_time": "<string>",
"scheduled_day": "<string>",
"signal_type": "<string>",
"profile_urls": [{}],
"signal_id": "<string>",
"new_signal": True,
"activity_types": [{}],
"additional_emails": [{}],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"keywords": [{}],
"icp": {},
"industries": [{}],
"date_posted": "<string>",
"company_urls": [{}],
"tracking_mode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
frequency: '<string>',
scheduled_time: '<string>',
scheduled_day: '<string>',
signal_type: '<string>',
profile_urls: [{}],
signal_id: '<string>',
new_signal: true,
activity_types: [{}],
additional_emails: [{}],
webhook_url: '<string>',
webhook_secret: '<string>',
keywords: [{}],
icp: {},
industries: [{}],
date_posted: '<string>',
company_urls: [{}],
tracking_mode: '<string>'
})
};
fetch('https://api.datamagnet.co/api/v1/signal/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datamagnet.co/api/v1/signal/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'frequency' => '<string>',
'scheduled_time' => '<string>',
'scheduled_day' => '<string>',
'signal_type' => '<string>',
'profile_urls' => [
[
]
],
'signal_id' => '<string>',
'new_signal' => true,
'activity_types' => [
[
]
],
'additional_emails' => [
[
]
],
'webhook_url' => '<string>',
'webhook_secret' => '<string>',
'keywords' => [
[
]
],
'icp' => [
],
'industries' => [
[
]
],
'date_posted' => '<string>',
'company_urls' => [
[
]
],
'tracking_mode' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.datamagnet.co/api/v1/signal/create"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"frequency\": \"<string>\",\n \"scheduled_time\": \"<string>\",\n \"scheduled_day\": \"<string>\",\n \"signal_type\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"new_signal\": true,\n \"activity_types\": [\n {}\n ],\n \"additional_emails\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"icp\": {},\n \"industries\": [\n {}\n ],\n \"date_posted\": \"<string>\",\n \"company_urls\": [\n {}\n ],\n \"tracking_mode\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.datamagnet.co/api/v1/signal/create")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"frequency\": \"<string>\",\n \"scheduled_time\": \"<string>\",\n \"scheduled_day\": \"<string>\",\n \"signal_type\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"new_signal\": true,\n \"activity_types\": [\n {}\n ],\n \"additional_emails\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"icp\": {},\n \"industries\": [\n {}\n ],\n \"date_posted\": \"<string>\",\n \"company_urls\": [\n {}\n ],\n \"tracking_mode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datamagnet.co/api/v1/signal/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"frequency\": \"<string>\",\n \"scheduled_time\": \"<string>\",\n \"scheduled_day\": \"<string>\",\n \"signal_type\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"new_signal\": true,\n \"activity_types\": [\n {}\n ],\n \"additional_emails\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"icp\": {},\n \"industries\": [\n {}\n ],\n \"date_posted\": \"<string>\",\n \"company_urls\": [\n {}\n ],\n \"tracking_mode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": {
"signal_id": "e7f1c2a4-9b3d-4c8e-a1f5-6d2b0c9e8a7f",
"signal_type": "job_change",
"name": "Champions",
"status": "active",
"profile_urls": [
"https://linkedin.com/in/satyanadella",
"https://linkedin.com/in/williamgates"
],
"email_recipients": [
"user@example.com",
"teammate@example.com"
],
"webhook_url": "https://yourapp.com/webhooks/signals"
},
"credit_used": 2
}
Create Signal
Create a new signal monitor. The required fields depend on thesignal_type.
| Signal type | Monitors |
|---|---|
job_change | Job/company changes on tracked profiles |
new_post | New LinkedIn posts from tracked profiles |
person_activity | Reactions and comments the tracked people make, on anyone’s post (guide) |
keyword_engagement | People engaging with posts matching your keywords |
industry_engagement | People engaging with posts from target industries |
company_engagement | People engaging with posts from specific companies |
person_engagement | People engaging with posts from or about specific people |
Schedule and name (all signal types)
These optional fields work with everysignal_type.
string
A display name for the signal, such as
"Champions" or "Competitor founders". It appears in /signal/list and in webhook payloads as job_name. Names don’t need to be unique and never identify a signal; signal_id does. Defaults to the type’s name, such as "Job Change Monitor". Change it later with the rename action.string
default:"every_day"
How often the signal runs:
"every_hour", "every_2hr", "every_12hr", "every_day", or "every_week".string
default:"09:00"
Time of day to run,
"HH:MM" in UTC. For every_hour and every_2hr, only the minutes are used. For every_12hr, the signal runs at this time and 12 hours later, so "09:00" means 09:00 and 21:00 UTC. To spread load, a run can start after this time: up to about 20 minutes for hourly signals, 30 minutes for 12-hourly ones, an hour for daily ones, and 2 hours for weekly ones.string
default:"monday"
Day of the week to run, for
every_week only. For example "monday".job_change / new_post / person_activity
Track a list of LinkedIn profiles.person_activity has its own guide with its webhook payload.
The first run for each profile records a baseline and reports nothing. After that, each run reports what changed since the last one.
Required
string
required
"job_change", "new_post", or "person_activity"array
required
A non-empty list of LinkedIn profile URLs to track.
["https://linkedin.com/in/satyanadella", "https://linkedin.com/in/williamgates"]
Optional
string
Add
profile_urls to this existing signal instead of creating one. The signal keeps its name, schedule, and other settings.boolean
default:"false"
true always creates a new signal, even if you already have one of this type. Can’t be combined with signal_id.array
person_activity only. What to report: "reactions", "comments", or both (the default).array
Extra email addresses to notify when a signal fires. Your registered account email is always included automatically.
string
HMAC secret for signing webhook payloads. Adds an
X-Datamagnet-Signature header to each delivery.name, frequency, scheduled_time, and scheduled_day from Schedule and name.
Several signals of one type
You can run several signals of the same type, for example ajob_change signal for champions and another for churned customers. Each has its own profiles, baseline, and alerts, and a profile tracked by two signals alerts in both.
Which signal a create call affects:
| You send | You have | Result |
|---|---|---|
new_signal: true | anything | A new signal |
signal_id | that signal | The profiles are added to it |
| neither | no signal of this type | A new signal |
| neither | exactly one | The profiles are added to it |
| neither | several | 400: pass signal_id or new_signal: true |
1 credit per profile in profile_urls.
Response
{
"message": {
"signal_id": "e7f1c2a4-9b3d-4c8e-a1f5-6d2b0c9e8a7f",
"signal_type": "job_change",
"name": "Champions",
"status": "active",
"profile_urls": [
"https://linkedin.com/in/satyanadella",
"https://linkedin.com/in/williamgates"
],
"email_recipients": [
"user@example.com",
"teammate@example.com"
],
"webhook_url": "https://yourapp.com/webhooks/signals"
},
"credit_used": 2
}
object
Show Fields
Show Fields
string
Unique identifier for this signal. Save this: use it to update, add profiles to, or delete this signal.
string
The signal type.
string
The signal’s display name.
string
active or paused.array
All URLs the signal now tracks, including any it tracked before.
array
person_activity only. What the signal reports.array
Email addresses that will receive notifications.
string
Only present if configured.
Adding profiles to a paused signal is refused. Resume it first via /signal/update with
action: resume.keyword_engagement
Monitor LinkedIn for posts matching your keywords and surface the people who liked or commented on them, filtered and scored against your Ideal Customer Profile (ICP). You can create multiplekeyword_engagement signals, each targeting a different keyword set or ICP. Each signal is identified by a signal_id returned in the response.
For the full ICP field reference and lead scoring details, see the Keyword Engagement guide.
Required
string
required
"keyword_engagement"array
required
Seed keywords to monitor. Minimum 1. The system automatically expands these with semantically related variants on the first run.
["sales intelligence", "CRM automation", "outbound prospecting"]
Optional
object
Ideal Customer Profile filter. If omitted, every engaging lead is returned unfiltered. See the ICP Filter Reference for all available fields.
{
"job_titles": ["VP Sales", "Head of Revenue"],
"seniority_levels": ["vp", "c_level", "director"],
"industries": ["SaaS", "B2B Software"],
"locations": ["United States", "United Kingdom"],
"company_size": ["51 - 200", "201 - 500"],
"exclude_titles": ["Intern", "Student"],
"mandatory_keywords": ["sales"],
"negative_keywords": ["recruiting", "hiring"]
}
array
Extra email addresses to receive the lead digest.
string
URL to receive qualified leads via POST after each run.
string
HMAC secret for signing webhook payloads.
Response
{
"message": {
"signal_id": "9f4a2c81-3b7e-4d12-a5f1-c8e0d9b2f3a4",
"signal_type": "keyword_engagement",
"name": "CRM buyers",
"status": "active",
"keywords": ["sales intelligence", "CRM automation"],
"icp": {
"job_titles": ["VP Sales", "Head of Revenue"],
"seniority_levels": ["vp", "c_level", "director"],
"industries": ["SaaS", "B2B Software"]
},
"email_recipients": ["user@example.com"],
"webhook_url": "https://yourapp.com/webhooks/signals"
}
}
object
Show Fields
Show Fields
string
Unique identifier for this signal. Save this — required for update and delete operations.
string
Always
"keyword_engagement".string
Always
active after creation.array
The seed keywords provided.
object
The ICP configuration, if provided.
array
Email addresses that will receive lead digests.
string
Only present if configured.
industry_engagement
Monitor LinkedIn for posts originating from companies in your target industries and surface the people who engage with them, filtered and scored against your Ideal Customer Profile. You can create multipleindustry_engagement signals — each identified by a signal_id returned in the response. See the Industry Engagement guide for the full ICP reference and lead scoring details.
Required
string
required
"industry_engagement"array
required
A list of LinkedIn industry names to monitor. Each name is resolved to its LinkedIn numeric ID automatically.Unrecognised names are returned in
["software development", "financial services", "information technology and internet"]
unresolved_industries and skipped.Optional
object
Ideal Customer Profile filter. See the ICP Filter Reference for all available fields.
string
Only surface leads who engaged with posts published within this window. Valid values:
"past-24h" · "past-week" · "past-month"array
Extra email addresses to receive the lead digest.
string
URL to receive qualified leads via POST after each run.
string
HMAC secret for signing webhook payloads.
Response
{
"message": {
"signal_id": "3a1b9c42-7d2e-4f88-b6c1-e9f0a2d3c5b7",
"signal_type": "industry_engagement",
"name": "Fintech audience",
"status": "active",
"industry_groups": [
{ "ids": [4], "label": "software development" },
{ "ids": [43], "label": "financial services" }
],
"unresolved_industries": ["saas tools"],
"icp": {
"seniority_levels": ["vp", "c_level", "director"]
},
"email_recipients": ["user@example.com"]
}
}
object
Show Fields
Show Fields
string
Unique identifier for this signal. Save this — required for update and delete operations.
string
Always
"industry_engagement".string
Always
active after creation.array
The industry groups provided.
object
The ICP configuration, if provided.
array
Email addresses that will receive lead digests.
string
Only present if configured.
company_engagement
Monitor LinkedIn for posts from specific companies and surface the people who engage with them, filtered and scored against your Ideal Customer Profile. You can create multiplecompany_engagement signals — each identified by a signal_id returned in the response. See the Company Engagement guide for the full ICP reference and lead scoring details.
Required
string
required
"company_engagement"array
required
A list of LinkedIn company profile URLs to monitor. The company ID is resolved automatically from each URL.Unresolvable URLs are returned in
[
"https://www.linkedin.com/company/salesforce/",
"https://www.linkedin.com/company/hubspot/"
]
unresolved_company_urls and skipped.Optional
object
Ideal Customer Profile filter. See the ICP Filter Reference for all available fields.
string
Only surface leads who engaged with posts published within this window. Valid values:
"past-24h" · "past-week" · "past-month"array
Extra email addresses to receive the lead digest.
string
URL to receive qualified leads via POST after each run.
string
HMAC secret for signing webhook payloads.
Response
{
"message": {
"signal_id": "7c3e1f85-2a9d-4b6c-8e0f-d1a2b3c4d5e6",
"signal_type": "company_engagement",
"name": "Competitor audience",
"status": "active",
"company_groups": [
{ "ids": [1441], "label": "Salesforce" },
{ "ids": [2382228], "label": "HubSpot" }
],
"unresolved_company_urls": ["https://www.linkedin.com/company/nonexistent/"],
"icp": {
"seniority_levels": ["vp", "c_level", "director"]
},
"email_recipients": ["user@example.com"]
}
}
object
Show Fields
Show Fields
string
Unique identifier for this signal. Save this — required for update and delete operations.
string
Always
"company_engagement".string
Always
active after creation.array
The company groups provided.
object
The ICP configuration, if provided.
array
Email addresses that will receive lead digests.
string
Only present if configured.
person_engagement
Monitor LinkedIn for posts and/or mentions from specific people and surface the users who engage with that content, filtered and scored against your Ideal Customer Profile. You can create multipleperson_engagement signals — each identified by a signal_id returned in the response. See the Person Engagement guide for the full ICP reference, tracking modes, and lead scoring details.
Required
string
required
"person_engagement"array
required
A list of LinkedIn profile URLs for the people to monitor. The Unresolvable URLs are returned in
member_id is resolved automatically from each profile.[
"https://www.linkedin.com/in/satyanadella/",
"https://www.linkedin.com/in/williamhgates/"
]
unresolved_profile_urls and skipped.Optional
string
What content to monitor.
"posts" — posts by the person · "mentions" — posts mentioning them · "both" (default) — both.object
Ideal Customer Profile filter. See the ICP Filter Reference for all available fields.
string
Only surface leads who engaged with content published within this window. Valid values:
"past-24h" · "past-week" · "past-month"array
Extra email addresses to receive the lead digest.
string
URL to receive qualified leads via POST after each run.
string
HMAC secret for signing webhook payloads.
Response
{
"message": {
"signal_id": "b2d4f6a8-1c3e-5g7h-9i0j-k1l2m3n4o5p6",
"signal_type": "person_engagement",
"name": "Founder audiences",
"status": "active",
"person_groups": [
{ "member_id": "ACoAABcd1234", "label": "Satya Nadella" },
{ "member_id": "ACoAAEfgh5678", "label": "Bill Gates" }
],
"unresolved_profile_urls": ["https://www.linkedin.com/in/private-profile/"],
"tracking_mode": "both",
"icp": {
"seniority_levels": ["vp", "c_level", "director"]
},
"email_recipients": ["user@example.com"]
}
}
object
Show Fields
Show Fields
string
Unique identifier for this signal. Save this — required for update and delete operations.
string
Always
"person_engagement".string
Always
active after creation.array
The people being monitored.
string
The active tracking mode:
"posts", "mentions", or "both".object
The ICP configuration, if provided.
array
Email addresses that will receive lead digests.
string
Only present if configured.
Was this page helpful?