Update signal
Pause or resume a signal, change its filters, its webhook endpoint or its daily lead limit — without recreating it or losing its lead history.
Input: name (new signal display name), webhookUrl (new endpoint URL where leads are delivered), config, dailyLeadLimit (max leads per day, 1–999,999), duplicateHandling (duplicate-lead policy: refuse = never re-accept a lead already delivered, allow = always accept, or Xd = accept again after X days, e.g. 7d), status (active or paused).
config is merged into the stored configuration: send only the fields you want to change, and every field you omit keeps its current value. To clear a list, send it empty (for example targetPersonas: []). A complete object still overwrites every field it carries.
Watched lists: on a watchlist, companies (or profiles on a job-change watchlist) sent in config are added to the watched list, exactly as POST /api/v1/watchlists/{signalId}/companies (or /profiles) does in its default append mode — nothing is removed, and the list is not echoed back in config. To replace the whole list use that endpoint with mode: replace; to remove one entry, DELETE it. A LinkedIn link in a company list that names no company (a person's profile, a post) is refused with 422 INVALID_COMPANY_ENTRY; a Sales Navigator company link is read as the company's LinkedIn id.
Connection signals: people added to linkedinProfileUrls start being watched, and people removed stop being watched, as on activation.
Output: the updated signal with its stored config, applied and warnings (see GET), status, real-time lead metrics (leads today + cumulative total since creation), and timestamps (created, updated, last lead received). When the PATCH carried a watched list, watchlist reports how many entries are now watched, were already watched, or were rejected.
Request
- Base URL: https://api.rodz.io (the document declares no server; this is the origin it was published from)
- URL: https://api.rodz.io/api/v1/signals/{signal_id}
- Auth: HTTP bearer
Path parameters
Request body
Example request
{
"destinations": {
"hubspot": {
"enabled": true
},
"instantly": {
"campaignId": "01920e5f-3c7a-7b1e-9d2f-8a1b2c3d4e5f"
}
},
"config": {
"linkedinCompanyUrls": [
"https://linkedin.com/company/acme"
]
},
"duplicateHandling": "7d"
}Response
Successful Response
Example response
{
"applied": {
"allowUnknownCompanySize": false,
"maxJobAgeDays": 180
},
"config": {
"companySizeFilters": [
"201-500",
"501-1000"
],
"getEmails": true,
"jobTitles": [
"CTO"
],
"locations": [
"France"
],
"maxJobAgeDays": 90
},
"createdAt": "2026-01-15T10:30:00Z",
"dailyLeadLimit": 50,
"duplicateHandling": "refuse",
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"lastLeadAt": "2026-03-15T14:22:00Z",
"leadsToday": 3,
"leadsTotal": 127,
"name": "CTOs changing jobs in France",
"signalTypeId": "job_changes",
"status": "active",
"updatedAt": "2026-03-16T08:00:00Z",
"warnings": [
{
"code": "VALUE_BELOW_MINIMUM",
"field": "maxJobAgeDays",
"message": "`maxJobAgeDays` is 90; this signal applies 180. Job changes are delivered up to 180 days after the start date, and a shorter window is raised to that minimum.",
"severity": "info",
"values": [
"90"
]
}
],
"webhookUrl": "https://your-server.com/webhooks/rodz"
}Changes
No recorded changes to this operation across all 1 revision of this API.