Create Account Watchlist signal
Upload your accounts once and hear about everything that happens to them - one list, one daily budget, one set of destinations.
Every other watchlist answers one question about your accounts: did they raise, are they hiring, did someone join. This one asks all of them at once, so you stop maintaining the same company list in a dozen places and stop reconciling a dozen webhooks.
Input: companies (a name, a domain, or a LinkedIn company URL per entry - send the LinkedIn URL whenever you have it, it is the only one of the three that separates two companies sharing a name - or an object {name, domain, linkedinUrl} carrying all three; strings and objects can be mixed), sources (which events to watch - omit it for the defaults), firstRunLookbackDays (default 180), dailyLeadLimit, plus persona and enrichment flags (targetPersonas, getEmails, getPhones) which apply to every event.
Events you can switch on, as keys of sources: fundraising, mergers_acquisitions, forecasted_funding, forecasted_ipo, forecasted_acquisition, forecasted_growth, public_tenders, job_offers, recruitment_campaign, new_decision_makers, company_post_reactions, competitor_social_reactions, competitor_connections, company_news. Each entry is an object taking enabled. Every event except company_news is on by default, so omit sources to watch for all of them and send it only to switch some off. company_news (funding, acquisitions, new locations, leadership changes, launches, contracts, restructuring and upcoming trade shows reported in the news, each checked against the article itself) is off unless you send {"company_news": {"enabled": true}}. competitor_connections is the slowest to produce - the relationships it reports build over weeks - so expect it to be quiet at first.
Output: every event at a watched company is pushed to your webhookUrl as an ordinary lead. signal.id and signal.type always identify THIS watchlist, whichever event fired, so one handler covers the whole list; signal.last_signal names the event, and is the field to switch on. company is always populated; contact is the empty string for company-level events (a funding round, a tender) and a contact object for person-level ones (a new decision maker, a post reactor, or any event with persona targeting on).
Billing: a flat 3 credits per lead, whichever event produced it. The dailyLeadLimit is ONE budget across every event you enabled, not one per event.
The first check reaches back firstRunLookbackDays and delivers the matching events from that window, so an uploaded list is worth something the same day; later checks deliver only what is new. It is bounded on purpose - an unbounded first run would bill you for years of history the moment you save.
companies is consumed into the watchlist, so it is NOT echoed back in the config of this or any later response - the watched list has exactly one home. Read it with GET /api/v1/watchlists/{signalId}/companies, and add or remove companies with POST / DELETE on the same path.
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/account-watchlist
- Auth: HTTP bearer
Request body
Example request
{
"config": {
"companies": [
"https://www.linkedin.com/company/doctolib",
{
"domain": "payfit.com",
"linkedinUrl": "https://www.linkedin.com/company/payfit",
"name": "PayFit"
},
"Lemlist"
],
"firstRunLookbackDays": 180,
"getEmails": true,
"sources": {
"competitor_connections": {
"enabled": false
},
"fundraising": {
"enabled": true
},
"job_offers": {
"enabled": true
},
"mergers_acquisitions": {
"enabled": true
},
"new_decision_makers": {
"enabled": true
}
},
"targetPersonas": [
"Sales Director"
]
},
"dailyLeadLimit": 50,
"name": "My key accounts",
"status": "active",
"webhookUrl": "https://example.com/webhooks/rodz"
}Response
Signal created
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.