Partners and distributors
Signals ready to ingest, under your brand. With no financial risk.
Competitor connections, dropped tools, job changes in a tracked list: signals your users cannot find elsewhere, in one stable JSON schema, by webhook, API or MCP. You only pay for leads that match your criteria.
No time or volume commitment. Credits never expire.
- Connects with a competitor's sales team SaaS vendor · 180 employees Example
- Reacts to a competitor's post Consulting firm · 60 employees Example
- Connects with a competitor's support team Fintech · 300 employees Example
SaaS vendor · 180 employees
Connects with a competitor's sales team
POST to your webhook
{ "signal": { "type": "competitor_relationship_monitoring" },
"contact": { "title": "Head of Sales", "email": "…" },
"company": { "industry": "SaaS vendor", "employee_count": 180 } } What you receive
One lead, one JSON. Always the same schema.
This is exactly what your webhook receives for a prospect who just connected with a competitor's sales team. Fictional values.
Webhook received (excerpt)
POST https://your-platform.com/webhooks/rodz
Content-Type: application/json
X-Webhook-Id: 7c1e4b2a-5d3f-4a8e-9b6c-2f0d1e3a4b5c
X-Webhook-Timestamp: 1759482720
X-Webhook-Signature: 3b9f0c6e2d1a…
{
"signal": {
"id": "d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8",
"name": "CRM competitors, France",
"type": "competitor_relationship_monitoring",
"last_signal_date": "2026-10-03",
"tracked_company": "https://www.linkedin.com/company/example-rival/",
"tracked_contact": "https://www.linkedin.com/in/example-sales-rep/"
},
"contact": {
"lead_id": "7c1e4b2a-5d3f-4a8e-9b6c-2f0d1e3a4b5c",
"created_at": "2026-10-03T09:12:00+00:00",
"first_name": "Camille",
"last_name": "Exemple",
"title": "Head of Sales",
"email": "camille@example-saas.com",
"phone": "",
"country_code": "FR",
"linkedin_profile_url": "https://www.linkedin.com/in/example-profile/",
"matched_persona": "Sales Director"
},
"company": {
"name": "Example SaaS",
"website": "https://example-saas.com",
"industry": "Software Development",
"employee_count": 180,
"employee_range": "51-200",
"hq_country_code": "FR",
"tech_stack": ["HubSpot", "Segment"]
}
} - X-Webhook-Id
- Stable id, the same on every retry: your deduplication key.
- X-Webhook-Signature
- HMAC-SHA256 of the body, checked with your secret.
- signal.type
- The signal type, one of the 46 in the catalogue (GET /api/v1/signal-types).
- signal.tracked_company · tracked_contact
- The watched competitor, and the person on its team the prospect just connected with.
- contact.*
- The person: title, email when enrichment is on, LinkedIn profile, matched persona.
- company.*
- Their company: industry, headcount, country, detected tools.
Three nested objects, signal, contact and company. Every field is always present: an unknown value is "", never null, so your parser does not break.
See every schema →Integration
Three calls, and it's live
No data project: one key, one signal per user, one endpoint that receives.
- 1
Create an API key
In Integrations → API. The 100 free credits are enough to test.
- 2
Create a signal with your webhookUrl
One POST carries your user's filters and the address to deliver to.
- 3
Receive the leads
test-webhook validates your receiver, then every qualified lead arrives signed, as soon as it is ready.
Create a signal for one of your users
curl -X POST https://api.rodz.io/api/v1/signals/competitor-connections \
-H "Authorization: Bearer $RODZ_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "CRM competitors, France",
"webhookUrl": "https://your-platform.com/webhooks/rodz",
"dailyLeadLimit": 50,
"config": {
"linkedinCompanyUrls": [
"https://www.linkedin.com/company/example-rival/"
],
"locations": ["France"],
"getEmails": true
}
}' Already integrated by
-
lemlist
-
Cargo
-
Bulldozer
-
Kalent
-
The Sales Engine
-
Overloop
-
Sinky
-
Extrovert
Zero financial risk
You only pay for leads that match your criteria
Distributing data should not mean betting on volumes.
-
Matching, or free
A lead is billed when it matches the signal’s exact criteria. A lead our checks reject is credited back.
-
No commitment
No minimum term, no minimum volume. You follow your users’ demand, up or down.
-
Credits never expire
Credits you buy stay on your account. No stock lost at the end of a month or a year.
-
A quiet signal costs little
You pay for the leads produced, not a flat fee. A quiet signal leaves no minimum to make up.
What you gain
A signal catalogue ready to sell
-
Fresh data, instantly
Every lead reaches your webhook the moment it is qualified. Your users act while the signal is hot.
-
Your brand, your price
White-labelled, your users see your product. You set your resale price and keep the margin.
-
46 signals, no data team to build
Competitor connections, reactions to their posts, dropped tools, public contracts won: verified and enriched with the right contact.
-
A missing signal? We add it
Your customers need something the catalogue does not cover: we add it, exclusive under licence if you want.
Going further
The whole catalogue in one call
Build your own signal picker: every type, its credit cost, its parameters and the delivered fields.
GET /api/v1/signal-types (excerpt)
curl https://api.rodz.io/api/v1/signal-types \
-H "Authorization: Bearer $RODZ_API_KEY"
{
"signalTypes": [
{
"signalTypeId": "competitor_relationship_monitoring",
"name": "Competitor Connections",
"category": "competitive_intelligence",
"creditsPerLead": 5,
"createEndpoint": "/api/v1/signals/competitor-connections",
"configParameters": {
"linkedinCompanyUrls": { "type": "array" },
"locations": { "type": "array" },
"targetPersonas": { "type": "array" },
"getEmails": { "type": "boolean" }
},
"outputFields": [
"signal.tracked_company",
"contact.email",
"company.name"
]
}
]
} Replace $RODZ_API_KEY with your key (Integrations → API). One catalogue entry, trimmed; full schema in the documentation.
- HMAC-SHA256 signed webhooks (X-Webhook-Signature, X-Webhook-Timestamp)
- X-Webhook-Id identical on every retry, to deduplicate
- Automatic retry on timeout, 5xx or 429
- Test endpoint and replay of leads to a new webhook
- 6,000 requests per minute per key (≈ 100 per second), 429 and Retry-After above
- Version in the path (/api/v1); a renamed endpoint keeps its old path, flagged in the catalogue
- A daily cap per signal (dailyLeadLimit), set by API
- Empty fields sent as "", never missing or null
- Contact enrichment, one by one or in bulk
Price
A price per credit that drops with your volume
-
A credit cost per signal
A lead costs 0.5 to 12 credits depending on the signal, readable in the API catalogue.
-
Prepaid or monthly invoice
Credits that never expire, or a monthly invoice in euros for the leads delivered that month.
-
À la carte
The signal alone, the qualified signal, or the signal with the decision-maker. Keep your own enrichment if you have one.
Your price per credit
€0.10 down to €0.05 per credit: the price drops with the volume you buy, with no time commitment.
Getting started
From the first test to production
- 1
Self-serve test access
Create an account online (100 free credits), generate your key in Integrations → API. No meeting.
- 2
A sample on your targets
Create the signals you need, validate your receiver with test-webhook, judge the leads on real output.
- 3
Scoping call, if useful
Volumes, delivery format, resale terms.
- 4
Terms
Credit volume, prepaid or monthly invoice.
- 5
Production
Webhooks wired, caps set, quality monitored with your team.
FAQ
Your questions, answered
Test the API today
Create an account, generate a key, call the catalogue. A call is still there to scope volumes and resale.