getting started

Quickstart

Make your first isBusinessEmail API call in 30 seconds with curl, JavaScript or Python, then switch from test addresses to a real key.

View as Markdown

1. Try it without a key

Addresses under test.isbusinessemail.com return fixed results, need no key and never count toward a quota:

curl -sG https://api.isbusinessemail.com/v1/check \
  --data-urlencode "email=workspace@test.isbusinessemail.com"

You get the full response shape, including category, recommendation, reasons and the workspace block. All test addresses are listed in Test addresses.

2. Get a free key

Sign up with Google, Microsoft or a magic link. Your first secret key (ibe_live_…) is created automatically and shown once, so copy it into your secret manager or .env:

export IBE_API_KEY="ibe_live_…"

3. Check a real address

Use POST so addresses don’t end up in URLs, proxy logs or browser history.

curl

curl -s https://api.isbusinessemail.com/v1/check \
  -H "Authorization: Bearer $IBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@acme.io"}'

JavaScript (Node 18+, Deno, Bun, Workers)

const res = await fetch('https://api.isbusinessemail.com/v1/check', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.IBE_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ email: 'jane@acme.io' }),
  signal: AbortSignal.timeout(2500),
});
const result = await res.json();
console.log(result.category, result.recommendation, result.reasons);

Python

import os
import requests

r = requests.post(
    "https://api.isbusinessemail.com/v1/check",
    json={"email": "jane@acme.io"},
    headers={"Authorization": f"Bearer {os.environ['IBE_API_KEY']}"},
    timeout=3,
)
r.raise_for_status()
result = r.json()
print(result["category"], result["recommendation"], result["reasons"])

4. Act on the result

The one field most integrations need is recommendation:

recommendation Typical action
allow Continue the signup
review Let them in, but flag the account (manual check, email verification, shorter trial)
block Ask for a work email; show did_you_mean if present

The default policy is b2b. Pass policy=strict or policy=lenient to change what gets blocked; see Categories and policies.

5. Ship it safely

  • Fail open. If the call times out or returns 5xx/429, let the signup through and re-check later. Never make our uptime your signup’s uptime.
  • Keep the key on the server. For browser-side hints, use a publishable key restricted to your domain.
  • Store the verdict, not the address. Save category, recommendation and reasons on the account for analytics and routing.

Next: Authentication · Response fields · Signup form guide · More languages