Update Signal
curl --request POST \
--url https://api.datamagnet.co/api/v1/signal/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signal_type": "<string>",
"action": "<string>",
"profile_urls": [
{}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"additional_emails": [
{}
],
"signal_id": "<string>",
"keywords": [
{}
],
"industries": [
{}
],
"company_urls": [
{}
],
"icp": {},
"tracking_mode": "<string>"
}
'import requests
url = "https://api.datamagnet.co/api/v1/signal/update"
payload = {
"signal_type": "<string>",
"action": "<string>",
"profile_urls": [{}],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"additional_emails": [{}],
"signal_id": "<string>",
"keywords": [{}],
"industries": [{}],
"company_urls": [{}],
"icp": {},
"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({
signal_type: '<string>',
action: '<string>',
profile_urls: [{}],
webhook_url: '<string>',
webhook_secret: '<string>',
additional_emails: [{}],
signal_id: '<string>',
keywords: [{}],
industries: [{}],
company_urls: [{}],
icp: {},
tracking_mode: '<string>'
})
};
fetch('https://api.datamagnet.co/api/v1/signal/update', 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/update",
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([
'signal_type' => '<string>',
'action' => '<string>',
'profile_urls' => [
[
]
],
'webhook_url' => '<string>',
'webhook_secret' => '<string>',
'additional_emails' => [
[
]
],
'signal_id' => '<string>',
'keywords' => [
[
]
],
'industries' => [
[
]
],
'company_urls' => [
[
]
],
'icp' => [
],
'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/update"
payload := strings.NewReader("{\n \"signal_type\": \"<string>\",\n \"action\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"additional_emails\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"industries\": [\n {}\n ],\n \"company_urls\": [\n {}\n ],\n \"icp\": {},\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/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signal_type\": \"<string>\",\n \"action\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"additional_emails\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"industries\": [\n {}\n ],\n \"company_urls\": [\n {}\n ],\n \"icp\": {},\n \"tracking_mode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datamagnet.co/api/v1/signal/update")
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 \"signal_type\": \"<string>\",\n \"action\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"additional_emails\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"industries\": [\n {}\n ],\n \"company_urls\": [\n {}\n ],\n \"icp\": {},\n \"tracking_mode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Signal paused successfully",
"credit_used": 0
}
{
"message": {
"signal_type": "job_change",
"status": "active",
"profile_urls": [
"https://linkedin.com/in/satyanadella",
"https://linkedin.com/in/reidhoffman"
]
},
"credit_used": 1
}
{
"message": "Webhook updated successfully",
"credit_used": 0
}
{
"message": {
"signal_type": "job_change",
"email_recipients": ["user@example.com", "teammate@example.com"]
},
"credit_used": 0
}
Update Signal
Pause, resume, or modify an existing Datamagnet signal monitor, including its tracked profiles, keywords, target industries, or delivery webhook.
POST
/
api
/
v1
/
signal
/
update
Update Signal
curl --request POST \
--url https://api.datamagnet.co/api/v1/signal/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"signal_type": "<string>",
"action": "<string>",
"profile_urls": [
{}
],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"additional_emails": [
{}
],
"signal_id": "<string>",
"keywords": [
{}
],
"industries": [
{}
],
"company_urls": [
{}
],
"icp": {},
"tracking_mode": "<string>"
}
'import requests
url = "https://api.datamagnet.co/api/v1/signal/update"
payload = {
"signal_type": "<string>",
"action": "<string>",
"profile_urls": [{}],
"webhook_url": "<string>",
"webhook_secret": "<string>",
"additional_emails": [{}],
"signal_id": "<string>",
"keywords": [{}],
"industries": [{}],
"company_urls": [{}],
"icp": {},
"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({
signal_type: '<string>',
action: '<string>',
profile_urls: [{}],
webhook_url: '<string>',
webhook_secret: '<string>',
additional_emails: [{}],
signal_id: '<string>',
keywords: [{}],
industries: [{}],
company_urls: [{}],
icp: {},
tracking_mode: '<string>'
})
};
fetch('https://api.datamagnet.co/api/v1/signal/update', 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/update",
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([
'signal_type' => '<string>',
'action' => '<string>',
'profile_urls' => [
[
]
],
'webhook_url' => '<string>',
'webhook_secret' => '<string>',
'additional_emails' => [
[
]
],
'signal_id' => '<string>',
'keywords' => [
[
]
],
'industries' => [
[
]
],
'company_urls' => [
[
]
],
'icp' => [
],
'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/update"
payload := strings.NewReader("{\n \"signal_type\": \"<string>\",\n \"action\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"additional_emails\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"industries\": [\n {}\n ],\n \"company_urls\": [\n {}\n ],\n \"icp\": {},\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/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"signal_type\": \"<string>\",\n \"action\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"additional_emails\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"industries\": [\n {}\n ],\n \"company_urls\": [\n {}\n ],\n \"icp\": {},\n \"tracking_mode\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datamagnet.co/api/v1/signal/update")
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 \"signal_type\": \"<string>\",\n \"action\": \"<string>\",\n \"profile_urls\": [\n {}\n ],\n \"webhook_url\": \"<string>\",\n \"webhook_secret\": \"<string>\",\n \"additional_emails\": [\n {}\n ],\n \"signal_id\": \"<string>\",\n \"keywords\": [\n {}\n ],\n \"industries\": [\n {}\n ],\n \"company_urls\": [\n {}\n ],\n \"icp\": {},\n \"tracking_mode\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Signal paused successfully",
"credit_used": 0
}
{
"message": {
"signal_type": "job_change",
"status": "active",
"profile_urls": [
"https://linkedin.com/in/satyanadella",
"https://linkedin.com/in/reidhoffman"
]
},
"credit_used": 1
}
{
"message": "Webhook updated successfully",
"credit_used": 0
}
{
"message": {
"signal_type": "job_change",
"email_recipients": ["user@example.com", "teammate@example.com"]
},
"credit_used": 0
}
Update Signal
Modify an existing signal monitor. Use theaction field to specify what to change.
job_change / new_post
Actions for profile-tracking signals. These have one monitor per account persignal_type.
string
required
"job_change" or "new_post"string
required
| Action | Description |
|---|---|
pause | Stop monitoring without deleting. Resume at any time. |
resume | Reactivate a paused monitor. |
add_profiles | Add new LinkedIn profiles to track. Requires profile_urls. |
remove_profiles | Remove specific profiles. Requires profile_urls. Pauses automatically if all profiles are removed. |
update_webhook | Change the webhook URL. Requires webhook_url. |
update_emails | Replace the notification email list. Requires additional_emails. |
array
Required for
add_profiles and remove_profiles. LinkedIn profile URLs to add or remove.string
Required for
update_webhook. The new delivery URL.string
Optional with
update_webhook. Updates the HMAC signing secret.array
Required for
update_emails. Replaces the current list. Your account email is always retained. Pass [] to remove all additional recipients.Response
{
"message": "Signal paused successfully",
"credit_used": 0
}
{
"message": {
"signal_type": "job_change",
"status": "active",
"profile_urls": [
"https://linkedin.com/in/satyanadella",
"https://linkedin.com/in/reidhoffman"
]
},
"credit_used": 1
}
{
"message": "Webhook updated successfully",
"credit_used": 0
}
{
"message": {
"signal_type": "job_change",
"email_recipients": ["user@example.com", "teammate@example.com"]
},
"credit_used": 0
}
keyword_engagement / industry_engagement / company_engagement / person_engagement
Engagement signals support multiple monitors per account. All actions requiresignal_id (returned when the signal was created).
string
required
"keyword_engagement", "industry_engagement", "company_engagement", or "person_engagement"string
required
The unique ID of the signal to update. Returned in the response when the signal was created.
string
required
| Action | Applies to | Description |
|---|---|---|
pause | All engagement types | Stop the signal without deleting it. |
resume | All engagement types | Reactivate a paused signal. |
update_targets | All engagement types | Replace the signal’s targets (keywords, industries, companies, or people). |
update_icp | All engagement types | Replace the ICP filter configuration. |
update_webhook | All engagement types | Change the webhook delivery URL. |
update_emails | All engagement types | Replace the notification email list. |
update_keywords | keyword_engagement only | Alias for update_targets on keyword signals. |
update_tracking_mode | person_engagement only | Change whether to track posts, mentions, or both. |
update_targets
Replaces the primary targets for the signal. The required field depends on the signal type:array
keyword_engagement only. New list of seed keywords. Replaces the current keywords entirely.["product-led growth", "B2B SaaS"]
array
industry_engagement only. New list of industry names. Unrecognised names are skipped and reported in unresolved_industries.["software development", "financial services"]
array
company_engagement only. New list of LinkedIn company URLs. Unresolvable URLs are skipped and reported in unresolved_company_urls.["https://www.linkedin.com/company/salesforce/"]
array
person_engagement only. New list of LinkedIn profile URLs to monitor. Unresolvable URLs are skipped and reported in unresolved_profile_urls.["https://www.linkedin.com/in/satyanadella/"]
update_icp
object
Replaces the full ICP filter. See ICP Filter Reference for all available fields. Pass
{} to remove all filters.{
"job_titles": ["VP Sales", "Head of Revenue"],
"seniority_levels": ["vp", "c_level"],
"locations": ["United States"]
}
update_webhook
string
required
The new delivery URL.
string
Updates the HMAC signing secret.
update_emails
array
required
Replaces the current recipient list. Your account email is always retained. Pass
[] to remove all additional recipients.update_tracking_mode (person_engagement only)
string
required
"posts" — posts authored by the tracked person · "mentions" — posts mentioning them · "both" — both.Response
{
"message": "Signal paused successfully",
"credit_used": 0
}
{
"message": {
"signal_id": "9f4a2c81-3b7e-4d12-a5f1-c8e0d9b2f3a4",
"signal_type": "keyword_engagement",
"keywords": ["product-led growth", "B2B SaaS"]
},
"credit_used": 0
}
{
"message": {
"signal_id": "3a1b9c42-7d2e-4f88-b6c1-e9f0a2d3c5b7",
"signal_type": "industry_engagement",
"industry_groups": [
{ "ids": [4], "label": "software development" }
],
"unresolved_industries": ["saas tools"]
},
"credit_used": 0
}
{
"message": {
"signal_id": "7c3e1f85-2a9d-4b6c-8e0f-d1a2b3c4d5e6",
"signal_type": "company_engagement",
"company_groups": [
{ "ids": [1441], "label": "Salesforce" }
]
},
"credit_used": 0
}
{
"message": {
"signal_id": "b2d4f6a8-1c3e-5g7h-9i0j-k1l2m3n4o5p6",
"signal_type": "person_engagement",
"person_groups": [
{ "member_id": "ACoAABcd1234", "label": "Satya Nadella" }
]
},
"credit_used": 0
}
{
"message": {
"signal_id": "9f4a2c81-3b7e-4d12-a5f1-c8e0d9b2f3a4",
"signal_type": "keyword_engagement",
"icp": {
"seniority_levels": ["vp", "c_level"],
"locations": ["United States"]
}
},
"credit_used": 0
}
{
"message": {
"signal_id": "b2d4f6a8-1c3e-5g7h-9i0j-k1l2m3n4o5p6",
"signal_type": "person_engagement",
"tracking_mode": "posts"
},
"credit_used": 0
}
{
"message": {
"signal_id": "9f4a2c81-3b7e-4d12-a5f1-c8e0d9b2f3a4",
"signal_type": "keyword_engagement",
"email_recipients": ["user@example.com", "teammate@example.com"]
},
"credit_used": 0
}
Notes
- Returns
404if the signal does not exist or does not belong to your account. update_emailsreplaces the full recipient list — it does not append. Your account email is always retained.- To permanently delete a signal, use /signal/delete.
Was this page helpful?