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/verifyVerify 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-bulkVerify multiple contacts at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
| contactIds | string[] | Yes | Array 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_emailerror - risky / unknown — Enrollment proceeds (verify first for best results)
- Suppressed contacts — Enrollment is rejected with a
400 contact_suppressederror
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).