Email API·verify · find · reverse · prospects

Send to addresses that actually exist.

Bounces quietly wreck your sender reputation, and a name with no address stalls the whole campaign. The Email API checks deliverability at the mailbox level, finds the work email you are missing, and resolves the person behind any address. One key, one JSON envelope.

Mailbox-level checksYou pay only for resultsNo card to start
200 · 88ms
await renidly.emails.verify("[email protected]")
{
  "email": "[email protected]",
  "deliverable": true,
  "reason": "mailbox_accepts",
  "catch_all": false
}
//What you can do

Four ways to work with a work email.

200 · 124ms
await renidly.emails.find("Ada Meyer", "vercel.com")
{
  "email": "[email protected]",
  "found": true,
  "confidence": "high",
  "catch_all": false
}
01Find

Find the email behind a name

You know the person and the company, but not the address. Give a name and a domain, or a profile URL, and get back a deliverable work email with a confidence score. No pattern guessing, no test sends against a real inbox.

  • A name and company, or a profile URL
  • Every address confirmed at the mailbox
  • A high or low confidence on each result
200 · 11ms
await renidly.emails.verifyBatch(["[email protected]", …])
{
  "status": "processing",
  "total": 1000,
  "resolved": 847,
  "next_cursor": 847
}
03Bulk

Clean a whole list in one job

Checking a list one call at a time does not scale. Submit up to a thousand addresses or people in a single job and stream the verdicts back as they land, so nothing blocks on any one row.

  • Up to 1,000 items per job
  • Verdicts stream in as they resolve
  • Free to submit, charged per resolved item
200 · 142ms
await renidly.emails.reverse("[email protected]")
{
  "found": true,
  "confidence": "high",
  "person": {
    "full_name": "Ada Meyer",
    "title": "VP Engineering",
    "location": "Berlin, DE"
  },
  "current_company": {
    "name": "Vercel",
    "industry": "Software",
    "size": "201-500"
  }
}
02Reverse

Know who is behind an address

A work email lands in your funnel with nothing attached to it. Reverse resolves the person and their company from that one string, so a bare signup arrives already enriched. Consumer, role, and throwaway addresses are turned away before any charge.

  • Person and company from one address
  • Role, seniority, and location included
  • Unsupported inboxes declined for free
200 · 94ms
await renidly.emails.prospects("acme.com", "verified_only")
{
  "domain": "acme.com",
  "count": 2,
  "prospects": [
    {
      "email": "[email protected]",
      "first_name": "Jane",
      "last_name": "Doe"
    },
    {
      "email": "[email protected]",
      "first_name": "Marc",
      "last_name": "Smith"
    }
  ]
}
04Prospects

Pull the contacts for a domain

Start from a company instead of a person. Ask for a domain and get the contacts already on file, either every known address or verified only, so you can build an account list without a single name to begin with.

  • Every known email, or verified only
  • Names attached where available
  • Paged so you take exactly what you need
//In depth

Everything the Email API does, up close.

01Verify

Deliverability, checked at the mailbox

Renidly goes past the format and checks the mailbox itself. Every address comes back deliverable, undeliverable, or risky, with the reason attached: a disposable provider, a role inbox, a forwarding relay, a domain with no mail servers, or a catch-all it cannot confirm.

02Catch-all

Honest when it cannot be sure

Some domains accept mail for every address, real or not. Renidly detects them and returns risky rather than a false deliverable, so you never send on a guess dressed up as a confirmation.

03Scale

One address, or a thousand

Check a single address inline at a signup form, or hand off a list of up to a thousand as one background job and collect the results as they stream in. The verdict shape is identical either way.

04Billing

You pay only for real work

Validation errors, authentication failures, rate-limit rejections, and repeat lookups served from cache are never charged. Credits move only when a call does real work and returns a result.

//In practice

From your editor, in two lines.

One typed client, the same key across all three APIs. No SDK? It is one authenticated HTTPS call and one JSON envelope.

python · pip install renidlyready
# verify one address
v = renidly.emails.verify("[email protected]")
deliverable=True reason=mailbox_accepts
# find a work email from a name and company
renidly.emails.find(first_name="Ada",
last_name="Meyer", domain="vercel.com")
found=True confidence=high
$
// Bulk
1,000
Addresses or people resolved in a single job.
// Verdicts
8
Distinct deliverability outcomes, each with a stated reason.
// Billing
0 credits
Charged on failed, invalid, or cached calls.
//Why Renidly

Deliverability you can put your name on.

Honest results

A catch-all comes back as risky, not a false deliverable. You get the truth, including the cases where certainty is simply not possible.

One key, one envelope

The same X-renidly-apikey header and the same JSON envelope as the Data and Live APIs. Mix all three in a single integration.

Typed SDKs in Python and Node

Method names, parameters, and returns autocomplete in your editor, with retries, pagination, and batch jobs already handled.

Compliant by design

GDPR and CCPA aligned handling on every lookup, with an audit trail behind it.

//What changes for you

Every address in your sequences becomes one that is mailbox confirmed before it ships, the bounce rate that was throttling your domain falls off a cliff, and deliverability stops being a fire drill.

Get started in minutes

Ship your first resolution today.

Get your API key on signup. Pay only for what you call.

Start
Free

100 credits on signup

Scale
From $50

Pay-as-you-go top-ups

Volume
Custom

Negotiated + SLA

  • No credit card
  • No subscription
  • Credits never expire
  • 24/7 support