Delete emails from the blacklist
Remove specific emails from the blacklist. Removing an email from the list doesn't change the status of a prospects if it was previously set to BLACKLISTED
Request
Endpoint
DELETE https://api.woodpecker.co/rest/v2/blacklist/emails
Headers
x-api-key: {YOUR_API_KEY}
Content-type: application/json
For details on how to authenticate your requests, please see the authentication guide.
Body
You can remove up to 500 emails per request
{
"emails": [
"wrong@baddomain.com",
"worse@anotherone.com",
"john@finisheddeal.co.uk"
]
}
Field | Type | Description |
---|---|---|
emails | array[string] | List of emails to remove from blacklist |
Request sample
Remove a list of emails from blacklist
- cURL
- Python
- Java
- Node.js
curl --request DELETE \
--url "https://api.woodpecker.co/rest/v2/blacklist/emails" \
--header "x-api-key: {YOUR_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"emails": [
"wrong@baddomain.com",
"worse@anotherone.com",
"john@finisheddeal.co.uk"
]
}'
import requests
def delete_blacklist_emails():
url = "https://api.woodpecker.co/rest/v2/blacklist/emails"
headers = {
"x-api-key": "{YOUR_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"emails": [
"wrong@baddomain.com",
"worse@anotherone.com",
"john@finisheddeal.co.uk"
]
}
response = requests.delete(url, headers=headers, json=payload)
if response.status_code == 200:
return response.json()
else:
raise Exception(f"DELETE request failed: {response.status_code}, {response.text}")
if __name__ == "__main__":
try:
data = delete_blacklist_emails()
print("DELETE response:", data)
except Exception as e:
print("Error:", e)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class WoodpeckerApiClient {
private static final String API_KEY = "{YOUR_API_KEY}";
private static final String URL = "https://api.woodpecker.co/rest/v2/blacklist/emails";
public static void main(String[] args) {
try {
HttpClient client = HttpClient.newHttpClient();
String jsonPayload = "{\"emails\": [\"wrong@baddomain.com\", \"worse@anotherone.com\", \"john@finisheddeal.co.uk\"]}";
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(URL))
.header("Content-Type", "application/json")
.header("x-api-key", API_KEY)
.method("DELETE", HttpRequest.BodyPublishers.ofString(jsonPayload))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("DELETE response: " + response.body());
} else {
System.err.println("DELETE request failed: " + response.statusCode());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
const axios = require('axios');
async function deleteBlacklistEmails() {
const url = 'https://api.woodpecker.co/rest/v2/blacklist/emails';
const headers = {
'x-api-key': '{YOUR_API_KEY}',
'Content-Type': 'application/json'
};
const data = {
emails: [
'wrong@baddomain.com',
'worse@anotherone.com',
'john@finisheddeal.co.uk'
]
};
try {
const response = await axios.delete(url, { headers, data });
if (response.status === 200) {
console.log('DELETE response:', response.data);
} else {
console.error('DELETE request failed:', response.status);
}
} catch (error) {
console.error('DELETE request failed:', error.response ? error.response.status : error.message);
}
}
deleteBlacklistEmails();
Response
Response examples
- 200
- 400
- 401
- 404
- 500
Returns a list of successfully removed emails, including only those that were previously blacklisted; emails not found in the blacklist or with an invalid format are ignored and not included in the response. If none of the requested emails were blacklisted, the returned array will be empty.
{
"emails": [
"wrong@baddomain.com",
"worse@anotherone.com",
"john@finisheddeal.co.uk"
]
}
Body schema
Field | Type | Description |
---|---|---|
emails | array[string] | List of emails removed from the blacklist |
Invalid request or malformed request syntax.
{
"title": "Bad Request",
"status": 400,
"detail": "You can proceed with up to 500 elements in one request" | "Emails parameter can not be empty" | "Value of emails is incorrect.",
"timestamp": "2025-03-05 17:57:00"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |
An issue with authorization. Please review the authorization guide
{
"title": "Unauthorized",
"status": 401,
"detail": "Invalid api key",
"timestamp": "2025-03-05 17:57:00"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |
Please review the request URL.
{
"title": "Not Found",
"status": 404,
"detail": "Requested resource does not exist",
"timestamp": "2025-03-05 17:57:00"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |
Unknown error, please try again later
{
"title": "Internal server error",
"status": 500,
"detail": "An unexpected error has occurred. Please try again later.",
"timestamp": "2025-03-05 17:57:00"
}
Body schema
Field | Type | Description |
---|---|---|
title | string | A short title describing the error |
status | integer | The HTTP status code |
detail | string | A detailed message explaining the error |
timestamp | string | The timestamp when the error occurred, YYYY-MM-DD HH:MM:SS UTC |