API — Enrichment

Enrich a Single Profile

Reveal the email address and/or mobile number for one profile.

  • Endpoint:
    POST /v1/contact/enrich
  • Mode: Asynchronous — the call returns a request id with status pending, not the data.
  • Cost: 1–6 credits, deducted only for what is actually delivered.
  • A LinkedIn URL is mandatory here — unlike /details, a contactId is not accepted. Companies are not supported. And even though this endpoint takes a single profile, it is still asynchronous: it never returns data inline.
Authorization

A valid API key is required in the request header.

  • Authorization: Bearer
    < your_api_key >
  • Content-Type:
    application/json
Request Body
  • profile.linkedinUrl (string) [Required]
    Mandatory on this endpoint.
    Example: linkedin.com/in/qwerty
  • profile.enrichFields (object) [Required]
    At least one of email or mobile must be true.
    Example: { "email": true, "mobile": true }
  • name (string) [Optional]
    A filter for better enrichment of a profile
    Example: "John Doe"
  • industry (string) [Optional]
    A filter for better enrichment of a profile
    Example: "software"
  • companyName (string) [Optional]
    A filter for better enrichment of a profile
    Example: "Deepenrich"
  • companyIndustry (string) [Optional]
    A filter for better enrichment of a profile
    Example: "it services"
  • webhookUrl (string) [Optional]
    The result is delivered here on completion.
    Example: "https://your-app.example.com/hooks/deepenrich"
  • custom (object) [Optional]
    Opaque passthrough, stored and returned unchanged when polling.
    Example: { "crmId": "A-1024" }

custom is the intended mechanism for correlating a request with a record in your own system — use it rather than tracking request ids separately.

Example Request:

{
  "params": {
    "profile": {
      "linkedinUrl": "linkedin.com/in/qwerty",
      "enrichFields": { "email": true, "mobile": true }
    },
    "name": "John Doe",
    "industry": "software",
    "companyName": "Deepenrich",
    "companyIndustry": "it services",
    "webhookUrl": "https://your-app.example.com/hooks/deepenrich",
    "custom": { "crmId": "A-1024" }
  }
}
Response

200 OK – Request Accepted

  • id (string)
    – Retain it and poll GET /v1/contact/enrich?id= for the result.
  • name (string)
    – The label you supplied, echoed back.
  • status (string)
    pending until the worker fulfils the request.

Example Response:

{
  "message": "success",
  "id": "8f10c2aa-5d4e-4c39-9a71-2b6d0c4f7e15",
  "name": "John Doe",
  "status": "pending"
}
What It Costs
  • An email address costs 1 credit, charged when an address is delivered.
  • A mobile number costs 5 credits, charged when a number is delivered.
  • Requesting both for one profile is checked at 6 credits on submission, but the final charge reflects only what was delivered.
  • A profile that yields nothing comes back not_found and costs nothing.
Errors
  • 422 Unprocessable
    "'profile' is required" — params.profile is missing.
  • 422 Unprocessable
    "'linkedinUrl' is required" — no URL in the profile object.
  • 422 Unprocessable
    "invalid linkedinUrl" — the URL could not be parsed.
  • 422 Unprocessable
    "enrichFields.email or enrichFields.mobile must be true"
  • 422 Unprocessable
    "company requests are only supported on /search and /details"
  • 402 Payment Required
    "Insufficient Credits" — balance below the request cost.
  • 402 Payment Required
    "Api daily limit have been exhausted" — daily request allowance reached.

 

 

 

curl --request POST \
  --url 'https://app.deepenrich.com/api/v1/contact/enrich' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "params": {
    "profile": {
      "linkedinUrl": "linkedin.com/in/qwerty",
      "enrichFields": {
        "email": true,
        "mobile": true
      },
      "name": "John Doe",
      "industry": "software",
      "companyName": "Deepenrich",
      "companyIndustry": "it services",
      "webhookUrl": "https://your-app.example.com/hooks/deepenrich",
      "custom": {
        "crmId": "A-1024"
      }
    }
  }
}'
import requests

url = "https://app.deepenrich.com/api/v1/contact/enrich"

payload = {
  "params": {
    "profile": {
      "linkedinUrl": "linkedin.com/in/qwerty",
      "enrichFields": {
        "email": True,
        "mobile": True
      },
      "name": "John Doe",
      "industry": "software",
      "companyName": "Deepenrich",
      "companyIndustry": "it services",
      "webhookUrl": "https://your-app.example.com/hooks/deepenrich",
      "custom": {
        "crmId": "A-1024"
      }
    }
  }
}

headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json'},
  body: '{"params":{"profile":{"linkedinUrl":"linkedin.com/in/qwerty","enrichFields":{"email":true,"mobile":true},"name":"John Doe","industry":"software","companyName":"Deepenrich","companyIndustry":"it services","webhookUrl":"https://your-app.example.com/hooks/deepenrich","custom":{"crmId":"A-1024"}}}}'
};

fetch('https://app.deepenrich.com/api/v1/contact/enrich', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://app.deepenrich.com/api/v1/contact/enrich",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\n  \"params\": {\n    \"profile\": {\n      \"linkedinUrl\": \"linkedin.com/in/qwerty\",\n      \"enrichFields\": {\n        \"email\": true,\n        \"mobile\": true\n      },\n      \"name\": \"John Doe\",\n      \"industry\": \"software\",\n      \"companyName\": \"Deepenrich\",\n      \"companyIndustry\": \"it services\",\n      \"webhookUrl\": \"https://your-app.example.com/hooks/deepenrich\",\n      \"custom\": {\n        \"crmId\": \"A-1024\"\n      }\n    }\n  }\n}",
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer YOUR_API_KEY",
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"strings"
)

func main() {

	url := "https://app.deepenrich.com/api/v1/contact/enrich"

	payload := strings.NewReader("{\n  \"params\": {\n    \"profile\": {\n      \"linkedinUrl\": \"linkedin.com/in/qwerty\",\n      \"enrichFields\": {\n        \"email\": true,\n        \"mobile\": true\n      },\n      \"name\": \"John Doe\",\n      \"industry\": \"software\",\n      \"companyName\": \"Deepenrich\",\n      \"companyIndustry\": \"it services\",\n      \"webhookUrl\": \"https://your-app.example.com/hooks/deepenrich\",\n      \"custom\": {\n        \"crmId\": \"A-1024\"\n      }\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer YOUR_API_KEY")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://app.deepenrich.com/api/v1/contact/enrich")
  .header("Authorization", "Bearer YOUR_API_KEY")
  .header("Content-Type", "application/json")
  .body("{\n  \"params\": {\n    \"profile\": {\n      \"linkedinUrl\": \"linkedin.com/in/qwerty\",\n      \"enrichFields\": {\n        \"email\": true,\n        \"mobile\": true\n      },\n      \"name\": \"John Doe\",\n      \"industry\": \"software\",\n      \"companyName\": \"Deepenrich\",\n      \"companyIndustry\": \"it services\",\n      \"webhookUrl\": \"https://your-app.example.com/hooks/deepenrich\",\n      \"custom\": {\n        \"crmId\": \"A-1024\"\n      }\n    }\n  }\n}")
  .asString();
{
  "message": "success",
  "id": "8f10c2aa-5d4e-4c39-9a71-2b6d0c4f7e15",
  "name": "John Doe",
  "status": "pending"
}
{
  "message": "success",
  "id": "8f10c2aa-5d4e-4c39-9a71-2b6d0c4f7e15",
  "name": "John Doe",
  "status": "completed",
  "custom": { "crmId": "A-1024" },
  "data": [
    {
      "linkedinUrl": "linkedin.com/in/qwerty",
      "status": "completed",
      "email": [ { "type": "work", "value": "johndoe@deepenrich.com" } ],
      "mobile": [ { "type": "personal", "value": "+1..." } ]
    }
  ]
}
{
  "message": "'profile' is required"
}
{
  "message": "'linkedinUrl' is required"
}
{
  "message": "invalid linkedinUrl"
}
{
  "message": "enrichFields.email or enrichFields.mobile must be true"
}
{
  "message": "company requests are only supported on /search and /details"
}
{
  "message": "Insufficient Credits"
}
{
  "message": "Api daily limit have been exhausted"
}
{
  "message": "Please provide valid api key"
}
{
  "message": "User not found"
}