NAV -image
bash php javascript python

Introduction

This documentation aims to provide all the information you need to work with our API.

Base URL

https://debounce.nl/api/

Authenticating requests

To authenticate requests, include a api_key header with the value "{YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token.

Email Checks

Check email for bounces, disposability, and spam risk.

requires authentication

Validates an email address and returns information about recent bounces, whether the email is disposable, and its spam risk score.

Example request:

curl -X GET \
    -G "https://debounce.nl/api/api/check-all" \
    -H "api_key: {YOUR_AUTH_KEY}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"email":"user@example.com"}'

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://debounce.nl/api/api/check-all',
    [
        'headers' => [
            'api_key' => '{YOUR_AUTH_KEY}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'user@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://debounce.nl/api/api/check-all"
);

let headers = {
    "api_key": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "user@example.com"
}

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://debounce.nl/api/api/check-all'
payload = {
    "email": "user@example.com"
}
headers = {
  'api_key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload)
response.json()

Example response (200):

{
    "bounce_found": true,
    "bounce_type": "hard",
    "bounce_last_report": "2025-07-10T12:34:56Z",
    "is_disposable": false,
    "spam_score": 3,
    "spam_risk_level": "medium",
    "spam_risk_reasons": [
        "Suspicious domain",
        "Common spam pattern"
    ]
}

Request      

GET api/check-all

Body Parameters

email  string  
The email address to check.

Check if an email address has bounced recently.

requires authentication

Checks for recent bounces for the given email address within the last 96 hours.

Example request:

curl -X GET \
    -G "https://debounce.nl/api/api/check-bounce" \
    -H "api_key: {YOUR_AUTH_KEY}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"email":"user@example.com"}'

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://debounce.nl/api/api/check-bounce',
    [
        'headers' => [
            'api_key' => '{YOUR_AUTH_KEY}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'user@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://debounce.nl/api/api/check-bounce"
);

let headers = {
    "api_key": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "user@example.com"
}

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://debounce.nl/api/api/check-bounce'
payload = {
    "email": "user@example.com"
}
headers = {
  'api_key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload)
response.json()

Example response (200):

{
    "bounce_found": true,
    "bounce_type": "hard",
    "bounce_reason": "Mailbox does not exist",
    "bounce_last_report": "2025-07-10T12:34:56Z"
}

Example response (200):

{
    "bounce_found": false,
    "bounce_type": null,
    "bounce_reason": null,
    "bounce_last_report": null
}

Request      

GET api/check-bounce

Body Parameters

email  string  
The email address to check.

Check if an email address is disposable.

requires authentication

Determines if the provided email address uses a disposable email provider.

Example request:

curl -X GET \
    -G "https://debounce.nl/api/api/check-disposable" \
    -H "api_key: {YOUR_AUTH_KEY}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"email":"user@example.com"}'

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://debounce.nl/api/api/check-disposable',
    [
        'headers' => [
            'api_key' => '{YOUR_AUTH_KEY}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'user@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://debounce.nl/api/api/check-disposable"
);

let headers = {
    "api_key": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "user@example.com"
}

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://debounce.nl/api/api/check-disposable'
payload = {
    "email": "user@example.com"
}
headers = {
  'api_key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload)
response.json()

Example response (200):

{
    "is_disposable": true
}

Example response (200):

{
    "is_disposable": false
}

Request      

GET api/check-disposable

Body Parameters

email  string  
The email address to check.

Check if an email's domain is valid.

requires authentication

Validates the domain of the provided email address, checking for existence and MX records.

Example request:

curl -X GET \
    -G "https://debounce.nl/api/api/check-domain" \
    -H "api_key: {YOUR_AUTH_KEY}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"email":"user@example.com"}'

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://debounce.nl/api/api/check-domain',
    [
        'headers' => [
            'api_key' => '{YOUR_AUTH_KEY}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'user@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://debounce.nl/api/api/check-domain"
);

let headers = {
    "api_key": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "user@example.com"
}

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://debounce.nl/api/api/check-domain'
payload = {
    "email": "user@example.com"
}
headers = {
  'api_key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload)
response.json()

Example response (200):

{
    "email_is_valid": true,
    "domain_is_valid": false,
    "domain_is_valid_reason": "Domain lookup failed"
}

Example response (200):

{
    "email_is_valid": true,
    "domain_is_valid": false,
    "domain_is_valid_reason": "MX-record lookup failed"
}

Example response (200):

{
    "email_is_valid": true,
    "domain_is_valid": true
}

Request      

GET api/check-domain

Body Parameters

email  string  
The email address to check.

Check the spam risk of an email address.

requires authentication

Calculates a spam score and risk level for the provided email address.

Example request:

curl -X GET \
    -G "https://debounce.nl/api/api/check-spam" \
    -H "api_key: {YOUR_AUTH_KEY}" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"email":"user@example.com"}'

$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://debounce.nl/api/api/check-spam',
    [
        'headers' => [
            'api_key' => '{YOUR_AUTH_KEY}',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'user@example.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
const url = new URL(
    "https://debounce.nl/api/api/check-spam"
);

let headers = {
    "api_key": "{YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "user@example.com"
}

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json

url = 'https://debounce.nl/api/api/check-spam'
payload = {
    "email": "user@example.com"
}
headers = {
  'api_key': '{YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, json=payload)
response.json()

Example response (200):

{
    "spam_score": 3,
    "spam_risk_level": "medium",
    "spam_risk_reasons": [
        "Suspicious domain",
        "Common spam pattern"
    ]
}

Request      

GET api/check-spam

Body Parameters

email  string  
The email address to check.