Documentation

DocsAdvanced FeaturesEmail Verification

Email Verification

Verify email addresses before sending to protect your domain reputation. A single hard bounce on a new domain can tank your sender reputation for weeks.

Risk Levels

Email Risk Categories
valid     — Email address is verified and deliverable
risky     — Disposable domain or role address (noreply@, abuse@)
invalid   — Syntax error, domain doesn't exist, or mailbox not found
catch_all — Domain accepts all addresses (can't verify individual mailbox)
unknown   — Not yet verified

Verification Endpoints

POST/v1/contacts/:contactId/verify

Verify a single contact's email address. Updates the emailRisk field.

TypeScript
const result = await client.verifyContact("con_abc123");
console.log(result.emailRisk); // "valid"
curl
curl -X POST https://api.outreachagent.dev/v1/contacts/con_abc123/verify \
  -H "Authorization: Bearer $OUTREACHAGENT_API_KEY"
POST/v1/contacts/verify-bulk

Verify multiple contacts at once.

ParameterTypeRequiredDescription
contactIdsstring[]YesArray of contact IDs to verify
TypeScript
const result = await client.bulkVerifyContacts(["con_1", "con_2", "con_3"]);
// result.results = [
//   { contactId: "con_1", email: "jane@acme.com", emailRisk: "valid" },
//   { contactId: "con_2", email: "test@mailinator.com", emailRisk: "risky" },
//   ...
// ]
curl
curl -X POST https://api.outreachagent.dev/v1/contacts/verify-bulk \
  -H "Authorization: Bearer $OUTREACHAGENT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contactIds": ["con_1", "con_2", "con_3"]}'

Enrollment Guards

When enrolling a contact, OutreachAgent checks the emailRisk field:

  • invalid — Enrollment is rejected with a 400 invalid_email error
  • risky / unknown — Enrollment proceeds (verify first for best results)
  • Suppressed contacts — Enrollment is rejected with a 400 contact_suppressed error
For best results, verify all contacts before enrollment. Set EMAIL_VERIFICATION_API_KEY (ZeroBounce) for API-powered verification. Without it, a heuristic checker catches obvious issues (disposable domains, role addresses).