LGJ Exclusive Skill
Lead Gen Jay
Back to Skills Marketplace

Email Verification

LGJ Exclusive
Skillv1.0

Verify emails via the Consulti API before adding to cold email campaigns. Single-endpoint verification with server-side cache, catch-all / disposable / role-account detection, and a verdict-to-safe/risky/invalid bucketing table for campaign-ready lists.

Tagscold-emailemail-verificationconsultideliverabilitybounce-ratevalidationsmtp

Email Verification is a Claude Code skill. Verify emails via the Consulti API before adding to cold email campaigns. It includes 3 files and works well with consulti-scrape, cold-email-campaign-deploy, cold-email-quickstart, cold-email-strategy, cold-email-copywriting, cold-email-ab-testing.

Documentation

---
name: email-verification
description: "Verify email addresses before adding to cold email campaigns via the Consulti API. Use when validating lead lists, checking email deliverability, or filtering invalid contacts."
---

# Email Verification via Consulti

Single-email verification through the s
ame Consulti account that powers `/consulti-scrape`. One API key, one credit pool, one source of truth.

## API reference

- **Endpoint:** `POST https://app.consulti.ai/api/v1/verify`
- **Auth:** `Authorization: Bearer $CONSULTI_API_KEY`
- **Body:** `{"email": "name@example.com"}` — single email per call
- **Cost:** 1 verification credit on a fresh lookup, 0 on cache hit (server-side cache)

## Single email verification

```bash
source .env
curl -s -X POST "https://app.consulti.ai/api/v1/verify" \
  -H "Authorization: Bearer $CONSULTI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"name@example.com"}'
```

### Response shape

```json
{
  "success": true,
  "data": {
    "email": "name@example.com",
    "status": "good",
    "is_deliverable": true,
    "is_disposable": false,
    "is_role_account": false,
    "is_catch_all": false,
    "credits_used": 1,
    "cached": false
  }
}
```

### `data.status` verdicts

- `good` — Mailbox exists and accepts mail **(USE FOR CAMPAIGNS)**
- `risky` — Catch-all, disposable, or role account — possible but uncertain
- `bad` — Address does not exist or rejected at SMTP **(DO NOT SEND)**
- `unknown` — SMTP probe inconclusive — retry once, exclude on second `unknown`

### Error responses

| HTTP | Meaning | Action |
|------|---------|--------|
| 400 | Invalid email format | Drop the row, don't retry |
| 401 | Bad / missing API key | Verify `$CONSULTI_API_KEY` in `.env` |
| 402 | Out of verification credits | Top up at app.consulti.ai → Billing |
| 500 | Verification service down | Sleep 5s, retry up to 3× |

## Quality classification rules

| Condition | Status | Action |
|-----------|--------|--------|
| `status: "good"` | **good** | Add to campaign |
| `status: "good"` + `is_disposable: true` | **risky** | Exclude |
| `status: "good"` + `is_role_account: true` | **risky** | Exclude (info@, admin@, support@) |
| `status: "good"` + `is_catch_all: true` | **risky** | Include with caution — domain accepts everything |
| `status: "risky"` | **risky** | Include catch-all only, exclude disposable + role |
| `status: "bad"` | **bad** | Never send |
| `status: "unknown"` | **unknown** | Retry once, then exclude |

### Downgrade logic (post-call)

Even on `good`, downgrade to `risky` if **any** of these are true:
1. `is_disposable: true` — temp-mail, mailinator, etc.
2. `is_role_account: true` — info@, admin@, support@, sales@
3. `is_catch_all: true` — domain accepts every address (no actual mailbox confirmation)

## Bulk verification (loop pattern)

The API is single-email only on the public surface, so loop with conservative pacing.

```bash
source .env
INPUT="$1"   # JSON array of {email,...} rows or CSV with email column
OUT_DIR="${INPUT%/*}/verified"
mkdir -p "$OUT_DIR"

jq -r '.[].email' "$INPUT" | while read -r EMAIL; do
  RESP=$(curl -s -X POST "https://app.consulti.ai/api/v1/verify" \
    -H "Authorization: Bearer $CONSULTI_API_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"email\":\"$EMAIL\"}")
  echo "$RESP" >> "$OUT_DIR/results.jsonl"
  sleep 1   # 60 req/min ceiling
done

# Bucket by classification
jq -s '
  map(.data) |
  {
    safe:    map(select(.status == "good"   and (.is_disposable|not) and (.is_role_account|not) and (.is_catch_all|not))),
    risky:   map(select(.status == "risky"  or  .is_disposable or .is_role_account or .is_catch_all)),
    invalid: map(select(.status == "bad")),
    unknown: map(select(.status == "unknown"))
  }' "$OUT_DIR/results.jsonl" > "$OUT_DIR/buckets.json"
```

### Rate limits & pacing

- 60 requests/minute is a safe ceiling — add `sleep 1` between sequential calls
- For large lists, parallelize with `xargs -P 4` (240 req/min) — back off on 429
- Cache hits are **free** — re-running `/email-verification` on the same list within the cache window costs nothing

## Verification workflow for cold email

### Before campaign launch

1. Verify **every** lead in the list — even `emailStatus: "verified"` from `/consulti-scrape`
2. Add only `safe` (good + non-disposable + non-role + non-catch-all) to the campaign
3. **Never** send to `bad` or `unknown`
4. Re-verify any list older than 30 days

### Bounce rate target

- < 3% — healthy
- 3–5% — investigate; pause if rising
- \> 5% — **STOP sending immediately**, re-verify, replace mailboxes if needed

## Quick CLI check

```bash
source .env
EMAIL="name@example.com"
curl -s -X POST "https://app.consulti.ai/api/v1/verify" \
  -H "Authorization: Bearer $CONSULTI_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"email\":\"$EMAIL\"}" \
  | jq -r '.data.status'
```

## Environment variables

All credentials in `.env`:
- `CONSULTI_API_KEY` — same key used by `/consulti-scrape` (format `ctai_...`)

That's it. No CF-Access, no SMTP proxy, no second verifier — Consulti handles SMTP probing and catch-all detection in one call.

Unlock This Skill

Enter your AI Automation Insiders email to get full access to documentation and the install command.

Full documentationInstall commandPriority updates

Works Well With

Consulti Scrape

Skill

Scrape leads from Consulti.ai's three databases (500M+ B2B contacts, Google Maps local businesses, podcast/YouTube creators) via the Consulti REST API. Tracks every pull in a named audience list so repeat scrapes never return the same lead twice — native excludeListId on B2B, client-side dedup on local + creator. Imports straight into the lead-tracking DB for the rest of the cold-email chain.

Cold Email Campaign Deploy

Skill

Deploy cold email campaigns to Email Bison or Instantly. Campaign brief generation, 9-gate pre-launch checklist, API deployment in PAUSED state, post-generation validation, and error recovery.

Cold Email Quickstart

Skill

First-run wizard from zero to a launched cold email campaign. Chains 8 specialist skills with confirmation gates and resumable state via .metadata.json. Phase 0.5 bootstraps shared infrastructure (Turso DB + Anthropic + Perplexity keys, one-time across campaigns). Strategy precedes scraping so its ICP feeds both the scrape filters AND the list-optimize qualification rules. Phase 6 includes an optional Y/n gate for list-optimize (qualify + personalize, default = run); skipping cascades cleanly to copywriting via the {personalization|fallback} token. Thin orchestrator — delegates without duplicating logic.

Cold Email Strategy

Skill

Discovery interview, ICP profiling, offer positioning, and messaging angles for cold email campaigns. Ingests transcripts, docs, recordings, and competitor research to build complete strategy foundations.

Cold Email Copywriting

Skill

Write cold email sequences with copy constraints, spintax, and deliverability rules. Platform-aware formatting for Email Bison and Instantly with 4-email sequence architecture.

Cold Email A/B Testing

Skill

Full lifecycle A/B testing for cold email. Pre-launch variant generation with minimum thresholds (3/2/2/2). Post-launch z-test winner analysis and optimization recommendations.

More Exclusive Skills

Unlock This Skill + 50 More

AI Automation Insiders members get unlimited access to all exclusive skills, commands, and agents — plus weekly updates.

Join AI Automation Insiders

Already a member? Scroll up to enter your email.