getting started

Test addresses

Reserved test.isbusinessemail.com addresses return fixed results with no key and never count toward quotas. Use them in docs, CI and smoke tests.

View as Markdown

Every address below returns a fixed, predictable result. They need no API key and are never counted toward any quota, so they’re safe in CI, smoke tests, demos and documentation.

Address category recommendation (b2b) What’s special
business@test.isbusinessemail.com business allow A plain company address
personal@test.isbusinessemail.com personal block Shared-domain provider, is_free_provider: true
disposable@test.isbusinessemail.com disposable block is_disposable: true
relay@test.isbusinessemail.com relay block is_relay: true
education@test.isbusinessemail.com education allow is_business: true
invalid@test.isbusinessemail.com invalid block Can’t receive mail
unknown@test.isbusinessemail.com unknown review Too little evidence to decide
m365@test.isbusinessemail.com business allow Microsoft 365 detected, auth: "federated" via Okta, with a placeholder tenant ID
workspace@test.isbusinessemail.com business allow Google Workspace detected
blocked@test.isbusinessemail.com any block is_blocked: true: blocked under every policy, whatever the category
role@test.isbusinessemail.com business review info@-style role account, is_role_account: true

Examples

# No key needed
curl -sG https://api.isbusinessemail.com/v1/check \
  --data-urlencode "email=m365@test.isbusinessemail.com"
# Same thing with POST, as you'd call it in production
curl -s https://api.isbusinessemail.com/v1/check \
  -H "Content-Type: application/json" \
  -d '{"email":"role@test.isbusinessemail.com"}'

Test addresses also work when you send a key, so your production code path can be tested end to end without spending quota.

A CI smoke test

#!/usr/bin/env bash
set -euo pipefail
api=https://api.isbusinessemail.com/v1/check

expect() {
  local email=$1 want=$2
  got=$(curl -sf "$api" -H "Content-Type: application/json" \
        -d "{\"email\":\"$email\"}" | jq -r .recommendation)
  [[ "$got" == "$want" ]] || { echo "FAIL $email: got $got, want $want"; exit 1; }
  echo "ok   $email → $got"
}

expect business@test.isbusinessemail.com   allow
expect personal@test.isbusinessemail.com   block
expect disposable@test.isbusinessemail.com block
expect unknown@test.isbusinessemail.com    review

Unit tests for your signup logic

Use the test addresses to cover every branch of your own code: allow, review, block, did_you_mean, Workspace vs Microsoft 365 connector pre-selection. For failure paths (timeouts, 429, 5xx), mock the HTTP client; test addresses always succeed.