Bulk import DNC list
Bulk import up to 10,000 DNC entries at once. Existing entries (by email) are
automatically skipped. Emails are lowercased. Uses insertMany for efficient bulk insert.
Default reason is import.
curl -X POST "https://api.sendkit.ai/v1/dnc/import" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"entries": [
{
"email": "bounce1@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "bounce2@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "badcompany.com",
"type": "domain",
"reason": "manual"
}
]
}'
import requests
import json
url = "https://api.sendkit.ai/v1/dnc/import"
headers = {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
}
data = {
"entries": [
{
"email": "bounce1@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "bounce2@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "badcompany.com",
"type": "domain",
"reason": "manual"
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.sendkit.ai/v1/dnc/import", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": "YOUR_API_KEY"
},
body: JSON.stringify({
"entries": [
{
"email": "bounce1@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "bounce2@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "badcompany.com",
"type": "domain",
"reason": "manual"
}
]
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"entries": [
{
"email": "bounce1@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "bounce2@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "badcompany.com",
"type": "domain",
"reason": "manual"
}
]
}`)
req, err := http.NewRequest("POST", "https://api.sendkit.ai/v1/dnc/import", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.sendkit.ai/v1/dnc/import')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-Api-Key'] = 'YOUR_API_KEY'
request.body = '{
"entries": [
{
"email": "bounce1@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "bounce2@example.com",
"type": "email",
"reason": "bounce"
},
{
"email": "badcompany.com",
"type": "domain",
"reason": "manual"
}
]
}'
response = http.request(request)
puts response.body
{
"success": true,
"data": {
"imported": 245,
"skipped": 12
}
}
POST
/v1/dnc/import
POST
API Key (header: X-Api-Key)
X-Api-Keystring
RequiredPlatform API key (sk_user_...) or Workspace API key (sk_...)
Platform API key (sk_user_...) or Workspace API key (sk_...)
Content-Typestring
RequiredThe media type of the request body
Options: application/json
entriesarray
RequiredList of DNC entries to import (max 10,000)
Request Preview
Response
Response will appear here after sending the request
Authentication
header
X-Api-Keystring
RequiredAPI Key for authentication. Platform API key (sk_user_...) or Workspace API key (sk_...)
Body
application/json
entriesarray
RequiredList of DNC entries to import (max 10,000)
emailstring
RequiredEmail address or domain to block
reasonstring
Reason for adding (default "import")
Allowed values:
unsubscribe_linkmanualbouncecomplaintResponses
successboolean
dataobject
importedinteger
Number of new entries imported
skippedinteger
Number of entries skipped (already existed)
Was this page helpful?
Last updated 5 days ago
Built with Documentation.AI