Skip to main content
The Reveal Email endpoint discloses the email address of a contact found within Clodura’s database. You supply one of three identifier combinations — a personId, a LinkedIn profile URL, or a full name plus company domain — and the API queues an enrichment job that delivers the result to your webhookUrl. This asynchronous design lets Clodura run real-time catch-all and deliverability checks in the background, so you always receive the most accurate email status rather than a raw, unverified guess. The response schema you receive depends on your Clodura plan:
  • Prospect & Prospect Pro plans — receive the Standard Webhook Response with a single verified email address directly from the Clodura database.
  • Free Forever, Max, and PAYG plans — receive the Multi-Provider Enrichment Response, which aggregates results from Clodura and integrated third-party providers (Prospeo, Hunter, RocketReach, Findymail, LeadMagic, and more) in a single call.
Credit cost: 1 unlock credit + 1 export credit when a verified email is found and shared. No credits are deducted when no email is found or for a guessed email on Prospect/Prospect Pro plans. On Free Forever, Max, and PAYG plans, 1–6 credits are consumed even for guessed emails retrieved from third-party providers.
LinkedIn Sales Navigator URLs are not supported. Always supply standard linkedin.com/in/ profile URLs.

Endpoint

POST /api/v1/search/people/email/match

Request

Headers

HeaderValue
X-API-KEYYour Clodura API key
Content-Typeapplication/json

Body Parameters

You must supply one of the three identifier options below plus a webhookUrl.
personId
string
Clodura’s unique identifier for the person. Obtain this from the Search Prospect endpoint. Use this for the highest-confidence match.
linkedinUrl
string
Standard LinkedIn profile URL (e.g., https://www.linkedin.com/in/kapilkhangaonkar/). Cannot be a Sales Navigator URL.
firstName
string
First name of the person. Must be combined with lastName and companyDomain.
lastName
string
Last name of the person. Must be combined with firstName and companyDomain.
companyDomain
string
Domain name of the person’s employer (e.g., clodura.ai, google.com). Do not include www., @, or any path component.
webhookUrl
string
required
The URL where Clodura posts the JSON result once email verification is complete. Required for all plans. Use a service like webhook.site for testing.
Supply as much identifying information as possible. The more context you provide, the higher the match confidence.

Example Request

curl --request POST \
  --url https://api.clodura.ai/api/v1/search/people/email/match \
  --header 'X-API-KEY: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "linkedinUrl": "https://www.linkedin.com/in/kapilkhangaonkar/",
    "webhookUrl": "https://webhook.site/your-unique-id"
  }'

Response

Immediate API Response (200)

The API responds immediately with a trackingId you can use to poll for results.
trackingId
string
A unique identifier for this enrichment job. Use this with GET /api/v1/search/people/track/{trackingId} to poll for the result if your webhook does not receive the callback.
status
string
Confirmation message that the job has been queued (e.g., "Callback will be triggered once processing is complete.").
{
  "trackingId": "688a0c47e21f6bc2b089ee18",
  "status": "Callback will be triggered once processing is complete."
}

Webhook Payload — Standard (Prospect & Prospect Pro Plans)

personId
string
Clodura’s unique identifier for the matched contact.
firstName
string
The contact’s first name.
lastName
string
The contact’s last name.
email
object
companyDomain
string
The domain of the contact’s employer used for matching.
{
  "personId": "2431397674847567872",
  "firstName": "Kapil",
  "lastName": "Khangaonkar",
  "email": {
    "emailId": "kapil@clodura.ai",
    "emailStatus": "verified",
    "extrapolatedEmailConfidence": "High"
  },
  "companyDomain": "clodura.ai"
}

Webhook Payload — Multi-Provider (Free Forever, Max & PAYG Plans)

trackingId
string
The tracking ID for this job, matching the ID returned in the immediate API response.
people
array
status
string
Final status of the enrichment job: success.
{
  "trackingId": "69c2563778ded0e4ebfc476c",
  "people": [
    {
      "personId": "3730992042440917382",
      "firstName": "Kapil",
      "lastName": "Khangaonkar",
      "companyDomain": "clodura.ai",
      "email": {
        "Clodura": { "emailId": null, "emailStatus": "not found" },
        "Prospeo": { "emailId": "kapil@clodura.ai", "emailStatus": "not verified" },
        "LeadMagic": { "emailId": "k.khangaonkar@clodura.ai", "emailStatus": "not verified" },
        "Findymail": { "emailId": "kapilk@clodura.ai", "emailStatus": "not verified" },
        "Hunter": { "emailId": null, "emailStatus": "Insufficient Credits" },
        "RocketReach": { "emailId": null, "emailStatus": "Insufficient Credits" }
      }
    }
  ],
  "status": "success"
}

Provider Status Definitions

StatusDescription
not foundThe provider could not find an email for this contact.
not verifiedAn email was found but deliverability could not be confirmed.
Insufficient CreditsYour Clodura credits are exhausted; no further provider calls can be made.
Success / DeliverableThe email is valid, verified, and ready for outreach.
guessedThe email was pattern-predicted from the company domain and naming conventions.

Error Codes

StatusMeaning
400Bad request — check your request body (e.g., domain count exceeds limit)
401Unauthorized — your API key is missing or invalid
402Payment required — credits exhausted; upgrade your plan or add credits
403Forbidden — this endpoint requires a paid Clodura plan
404No match found — no email could be located for the given identifier
422Unprocessable entity — invalid or incomplete request body
429Rate limit exceeded — reduce request frequency or upgrade your plan