Submit Bulk NPIs for Email Enrichment via Dmand AI
curl --request POST \
--url https://ext-api.dmand.ai/api/v1/email/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"npis": [
"<string>"
],
"enrichment_email_type": "<string>",
"webhook": {},
"custom_data": {}
}
'import requests
url = "https://ext-api.dmand.ai/api/v1/email/bulk"
payload = {
"npis": ["<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({
npis: ['<string>'],
enrichment_email_type: '<string>',
webhook: {},
custom_data: {}
})
};
fetch('https://ext-api.dmand.ai/api/v1/email/bulk', 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/bulk",
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([
'npis' => [
'<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/bulk"
payload := strings.NewReader("{\n \"npis\": [\n \"<string>\"\n ],\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/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"npis\": [\n \"<string>\"\n ],\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/bulk")
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 \"npis\": [\n \"<string>\"\n ],\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 Bulk NPIs for Email Enrichment via Dmand AI
Submit multiple NPIs in a single batch request. Returns 202 with batch_id, status, and request references. Poll or use webhooks to receive results.
POST
/
api
/
v1
/
email
/
bulk
Submit Bulk NPIs for Email Enrichment via Dmand AI
curl --request POST \
--url https://ext-api.dmand.ai/api/v1/email/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"npis": [
"<string>"
],
"enrichment_email_type": "<string>",
"webhook": {},
"custom_data": {}
}
'import requests
url = "https://ext-api.dmand.ai/api/v1/email/bulk"
payload = {
"npis": ["<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({
npis: ['<string>'],
enrichment_email_type: '<string>',
webhook: {},
custom_data: {}
})
};
fetch('https://ext-api.dmand.ai/api/v1/email/bulk', 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/bulk",
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([
'npis' => [
'<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/bulk"
payload := strings.NewReader("{\n \"npis\": [\n \"<string>\"\n ],\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/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"npis\": [\n \"<string>\"\n ],\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/bulk")
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 \"npis\": [\n \"<string>\"\n ],\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 multiple NPIs in one call to enrich emails for several healthcare providers at once. The endpoint accepts up to
100 NPIs per request and returns a batch_id. Dmand AI processes the batch asynchronously and delivers results via polling or webhooks.
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
Array of 10-digit NPI strings. Minimum 1 item, maximum
100 items per request.string
default:"any"
Preferred email category. Options:
any (1 credit), professional (1 credit), personal (3 credits). Credits are charged per email 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/bulk \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7f8a9b2c-3d4e-5f6a-7b8c-9d0e1f2a3b4c" \
-d '{
"npis": [
"1003158791",
"1234567890",
"9876543210"
],
"enrichment_email_type": "any",
"webhook": {
"url": "https://example.com/webhooks/dmand",
"mode": "batch"
},
"custom_data": { "campaign": "q3-outreach" }
}'
import requests
response = requests.post(
"https://ext-api.dmand.ai/api/v1/email/bulk",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Idempotency-Key": "7f8a9b2c-3d4e-5f6a-7b8c-9d0e1f2a3b4c"
},
json={
"npis": ["1003158791", "1234567890", "9876543210"],
"enrichment_email_type": "any",
"webhook": {
"url": "https://example.com/webhooks/dmand",
"mode": "batch"
},
"custom_data": {"campaign": "q3-outreach"}
}
)
print(response.json())
const response = await fetch("https://ext-api.dmand.ai/api/v1/email/bulk", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Idempotency-Key": "7f8a9b2c-3d4e-5f6a-7b8c-9d0e1f2a3b4c"
},
body: JSON.stringify({
npis: ["1003158791", "1234567890", "9876543210"],
enrichment_email_type: "any",
webhook: {
url: "https://example.com/webhooks/dmand",
mode: "batch"
},
custom_data: { campaign: "q3-outreach" }
})
});
const data = await response.json();
console.log(data);
Response
string
Unique identifier for the submitted batch. Use it to poll batch status.
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_789",
"status": "in-progress",
"requests": [
{
"npi": "1003158791",
"request_id": "r_456",
"poll_url": "/api/v1/email/r_456"
},
{
"npi": "1234567890",
"request_id": "r_457",
"poll_url": "/api/v1/email/r_457"
},
{
"npi": "9876543210",
"request_id": "r_458",
"poll_url": "/api/v1/email/r_458"
}
]
}
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.