Create Warm Intros signal
Get your team's warm intros: the people of your ICP who already worked alongside one of your people - an employee, a founder, a happy client - at the same company and at the same time, so the first message is a referral instead of a cold one. Name the people who can introduce you, or simply give your company page: we read where each of them worked and when, and deliver the former colleagues who now hold the roles you sell to. One lead per person, however many of your people know them, with every introduction path (who, where, how long together) and a strength score to start with the warmest.
Input: sourceProfiles (LinkedIn profile URLs of the people who can introduce you, up to 500; linkedinProfileUrls, the name the other people-based signals use, is accepted as the same field) and/or sourceCompany (a LinkedIn company page, usually yours: its employees become introducers; partners, agencies, freelancers, consultants, ambassadors, affiliates, advisors and board members shown on the page are left out) - at least one of the two is required; minOverlapMonths (minimum months worked at the same company at the same time, 3-120, defaults to 6); includeCurrentCompanies (also use the companies your introducers work at today; defaults to false, since their current colleagues are usually your own team or your client); oneTimeExtractCount (how many people to deliver once, counted in leads delivered after your filters; 0-25,000, defaults to 500; not metered by dailyLeadLimit); dailyNewIntros (true to keep delivering newly found introductions afterwards, up to dailyLeadLimit a day; defaults to false, which stops the signal once the one-time extract is complete); optional persona targeting (targetPersonas, customPersonaTitles); optional ICP filters (companySizeFilters, locations, industryFilters, excludedLocations, excludedCompanySizeFilters, excludedIndustryFilters, excludedTitles, excludedCompanyUrls); optional restrictToCompanies / restrictToProfiles to deliver only people at your target accounts or on your list; optional enrichment toggles (getEmails, getPhones, getSireneData, detectTechnologies, getHomepageContent); webhookUrl, dailyLeadLimit, duplicateHandling, status. At a company over 1,000 people a person counts only if they worked in the same function as your introducer there; over 10,000, also in the same place and for at least 12 months together. People currently working with one of your introducers (your own team) are never delivered. Each lead is billed as it is delivered, once whatever the number of paths: 3 credits per lead for the one-time extract, then 5 credits per lead for the daily new introductions. Activating with status: active checks that your balance covers the one-time extract (oneTimeExtractCount x 3 credits) and answers 402 with the estimate when it does not.
Output: each person is pushed to your webhookUrl as an enriched person lead: the contact (name, email if enriched, phone if enriched, title, location, LinkedIn profile URL, matched persona), their employer today (company name, website, LinkedIn URL), and in signal: intro_paths - every way to be introduced, best first, each with via (the introducer: name, LinkedIn URL, title), entity (the company you share: name, LinkedIn URL, employee count), overlap (start and end as YYYY-MM, months), same_function and strength (0-100: more months together, a smaller company and the same function score higher); intro_strength and intro_tier (strong 70+, likely 50-69, possible) for the best path; intro_reason, that path in one sentence ready for a message or a CRM note; tracked_contact (the best introducer's LinkedIn profile URL) and tracked_company (the shared company's page); and the best path again as flat fields, under the names the alumni signals use, for merge tags, sheet columns and CRM fields: introducer_name, introducer_title, affiliation_name (the shared company), affiliation_started and affiliation_ended (YYYY-MM), overlap_months, same_function. Text that is unknown is ``, never null. The same intro fields reach Google Sheets as columns and outbound tools as merge tags (introReason, introStrength, introTier, introducerName, introducerTitle, affiliationName, affiliationStarted, affiliationEnded, overlapMonths, sameFunction). The single-signal responses report progress in applied.oneTimeExtract (target, delivered, status).
Use cases:
- Your team's warm intros - give your company page and get the people of your ICP who worked alongside one of your employees, with who can introduce you, where and for how long, so the first touch is a referral instead of a cold message.
- Happy-client referrals - name your best customers and reach their former colleagues who now hold the roles you sell to, then ask the client for the intro.
- Account-based prospecting - restrict to your target accounts and see, account by account, which of your people already know someone inside.
- Prioritised outreach - sort by intro_strength and start with the strongest paths (years together, a small company, the same function).
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/warm-intros
- Auth: HTTP bearer
Request body
Example request
{
"config": {
"companySizeFilters": [
"11-50",
"51-200",
"201-500",
"501-1000"
],
"dailyNewIntros": true,
"getEmails": true,
"oneTimeExtractCount": 2000,
"sourceCompany": "https://www.linkedin.com/company/lemlist/",
"targetPersonas": [
"Sales Director",
"Head of Growth"
]
},
"dailyLeadLimit": 50,
"name": "Warm intros from our team",
"status": "active",
"webhookUrl": "https://your-server.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.