Submit a Single NPI for Email Enrichment via Dmand AI
curl --request POST \
--url https://ext-api.dmand.ai/api/v1/email \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"npi": "<string>",
"enrichment_email_type": "<string>",
"webhook": {},
"custom_data": {}
}
'import requests
url = "https://ext-api.dmand.ai/api/v1/email"
payload = {
"npi": "<string>",
"enrichment_email_type": "<string>",
"webhook": {},
"custom_data": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
npi: '<string>',
enrichment_email_type: '<string>',
webhook: {},
custom_data: {}
})
};
fetch('https://ext-api.dmand.ai/api/v1/email', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ext-api.dmand.ai/api/v1/email",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'npi' => '<string>',
'enrichment_email_type' => '<string>',
'webhook' => [
],
'custom_data' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ext-api.dmand.ai/api/v1/email"
payload := strings.NewReader("{\n \"npi\": \"<string>\",\n \"enrichment_email_type\": \"<string>\",\n \"webhook\": {},\n \"custom_data\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://ext-api.dmand.ai/api/v1/email")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"npi\": \"<string>\",\n \"enrichment_email_type\": \"<string>\",\n \"webhook\": {},\n \"custom_data\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ext-api.dmand.ai/api/v1/email")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"npi\": \"<string>\",\n \"enrichment_email_type\": \"<string>\",\n \"webhook\": {},\n \"custom_data\": {}\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "<string>",
"status": "<string>",
"requests": [
{
"npi": "<string>",
"request_id": "<string>",
"poll_url": "<string>"
}
]
}API Reference
Submit a Single NPI for Email Enrichment via Dmand AI
Submit one NPI and receive a 202 response with batch_id, status, and request references. Use Idempotency-Key for safe retries.
POST
/
api
/
v1
/
email
Submit a Single NPI for Email Enrichment via Dmand AI
curl --request POST \
--url https://ext-api.dmand.ai/api/v1/email \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"npi": "<string>",
"enrichment_email_type": "<string>",
"webhook": {},
"custom_data": {}
}
'import requests
url = "https://ext-api.dmand.ai/api/v1/email"
payload = {
"npi": "<string>",
"enrichment_email_type": "<string>",
"webhook": {},
"custom_data": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
npi: '<string>',
enrichment_email_type: '<string>',
webhook: {},
custom_data: {}
})
};
fetch('https://ext-api.dmand.ai/api/v1/email', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ext-api.dmand.ai/api/v1/email",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'npi' => '<string>',
'enrichment_email_type' => '<string>',
'webhook' => [
],
'custom_data' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ext-api.dmand.ai/api/v1/email"
payload := strings.NewReader("{\n \"npi\": \"<string>\",\n \"enrichment_email_type\": \"<string>\",\n \"webhook\": {},\n \"custom_data\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://ext-api.dmand.ai/api/v1/email")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"npi\": \"<string>\",\n \"enrichment_email_type\": \"<string>\",\n \"webhook\": {},\n \"custom_data\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://ext-api.dmand.ai/api/v1/email")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"npi\": \"<string>\",\n \"enrichment_email_type\": \"<string>\",\n \"webhook\": {},\n \"custom_data\": {}\n}"
response = http.request(request)
puts response.read_body{
"batch_id": "<string>",
"status": "<string>",
"requests": [
{
"npi": "<string>",
"request_id": "<string>",
"poll_url": "<string>"
}
]
}Submit a single NPI to start an email enrichment request. The call returns immediately with HTTP 202, a batch_id, and a request reference with a poll URL. Dmand AI resolves the email asynchronously. You can poll the request later or receive a webhook when it completes.
Header parameters
string
Optional. Send a unique value so retrying the same submit does not create a duplicate request. Use a UUID or a hash of the request body.
string
Optional alternative to the
Authorization: Bearer header.Body parameters
string
required
A 10-digit National Provider Identifier (NPI) for a healthcare provider (Type 1 individual). Example:
1003158791.string
default:"any"
Preferred email category. Options:
any (1 credit), professional (1 credit), personal (3 credits). Credits are charged only when an email is found. See Credits.object
Optional webhook configuration. When provided, Dmand AI POSTs the response envelope to the specified URL as results become available.
object
Optional JSON object that Dmand AI echoes back in poll responses and webhooks. Use it to attach your own IDs or metadata.
Request example
curl -X POST https://ext-api.dmand.ai/api/v1/email \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7f8a9b2c-3d4e-5f6a-7b8c-9d0e1f2a3b4c" \
-d '{
"npi": "1003158791",
"enrichment_email_type": "professional",
"webhook": {
"url": "https://example.com/webhooks/dmand",
"mode": "real-time"
},
"custom_data": { "lead_id": "lead-48291" }
}'
import requests
response = requests.post(
"https://ext-api.dmand.ai/api/v1/email",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Idempotency-Key": "7f8a9b2c-3d4e-5f6a-7b8c-9d0e1f2a3b4c"
},
json={
"npi": "1003158791",
"enrichment_email_type": "professional",
"webhook": {
"url": "https://example.com/webhooks/dmand",
"mode": "real-time"
},
"custom_data": {"lead_id": "lead-48291"}
}
)
print(response.json())
const response = await fetch("https://ext-api.dmand.ai/api/v1/email", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Idempotency-Key": "7f8a9b2c-3d4e-5f6a-7b8c-9d0e1f2a3b4c"
},
body: JSON.stringify({
npi: "1003158791",
enrichment_email_type: "professional",
webhook: {
url: "https://example.com/webhooks/dmand",
mode: "real-time"
},
custom_data: { lead_id: "lead-48291" }
})
});
const data = await response.json();
console.log(data);
Response
string
Unique identifier for the batch. Even single submits are treated as a batch of one.
string
Overall status of the submitted batch:
in-progress or completed.array
Array of request references containing the NPI, request_id, and a relative poll URL.
Example response (202 Accepted)
{
"batch_id": "b_123",
"status": "in-progress",
"requests": [
{
"npi": "1003158791",
"request_id": "r_456",
"poll_url": "/api/v1/email/r_456"
}
]
}
Errors
- Missing or invalid API keys are rejected.
403: Revoked or inactive API key.422: Validation error. The response body contains{"detail": [{"loc": [...], "msg": "...", "type": "..."}]}with the location, message, and error type for each invalid field.- Requests over the rate limit are rejected. Default limit is
100requests per minute. See Rate Limits.