Skip to main content

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.

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. 1

    Create an API key

    In Integrations → API. The 100 free credits are enough to test.

  2. 2

    Create a signal with your webhookUrl

    One POST carries your user's filters and the address to deliver to.

  3. 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. 1

    Self-serve test access

    Create an account online (100 free credits), generate your key in Integrations → API. No meeting.

  2. 2

    A sample on your targets

    Create the signals you need, validate your receiver with test-webhook, judge the leads on real output.

  3. 3

    Scoping call, if useful

    Volumes, delivery format, resale terms.

  4. 4

    Terms

    Credit volume, prepaid or monthly invoice.

  5. 5

    Production

    Webhooks wired, caps set, quality monitored with your team.

FAQ

Your questions, answered

You only pay for leads that match your criteria. Your credits stay on your account, never expire, and can go to another signal or later.
Every webhook is HMAC-SHA256 signed. A timeout, a 5xx or a 429 triggers an automatic retry with the same X-Webhook-Id header: deduplicate on it. A test endpoint validates your receiver before going live, and existing leads can be replayed to a new webhook. The API accepts 6,000 requests per minute per key.
The Rodz team, directly: a scoping call, a sample on your targets, then quality monitoring shared with your team once live.
Yes. The data reaches your product through API and webhooks, and the payload never mentions Rodz: your users see your interface. You set your resale price.
We add it to the catalogue. A custom signal can stay exclusive under an annual licence.
Mostly your engineering time. Account, API key, catalogue and test endpoint are self-serve: you move without waiting for a meeting.

Test the API today

Create an account, generate a key, call the catalogue. A call is still there to scope volumes and resale.