BRANDJET / DEVELOPER SERVICESEmail validation.
Evidence, not guesses.
Self-hosted batch verification with DNS, SMTP evidence, catch-all controls, durable retries and workspace-scoped results. No paid verification fallback. No email messages are sent.
OpenAPI specification · Service health
Live SMTP is gated on a dedicated, working outbound port-25 route and an owned checker identity. Check GET /v1/status for the actual deployment state. The API does not claim to outperform any commercial verifier.
Submit a batch
Use your server-held API key. X-Workspace is a logical namespace for this single-operator API, not a separate tenant authentication boundary.
curl https://verify.brandjet.dev/v1/jobs \
-H "Authorization: Bearer $VALIDATOR_API_KEY" \
-H "Content-Type: application/json" \
-H "X-Workspace: gettoscale" \
-H "Idempotency-Key: source-list-batch-001" \
-d '{"name":"Batch 001","rows":[{"row_id":"1","email":"[email protected]"}]}'
Returns 202 with a job ID, status URL and CSV URL. CSV uploads use Content-Type: text/csv, an email column and optional row_id. Maximum 50,000 rows per job. No campaign is launched or modified.
Endpoints
| Method / path | Purpose |
|---|
| POST /v1/verify | Enqueue one email |
| POST /v1/jobs | JSON or CSV batch |
| GET /v1/jobs/{id} | Progress and retry counts |
| GET /v1/jobs/{id}/results?format=csv | CSV export; omit format for paginated JSON |
| GET /v1/jobs/{id}/attempts | Per-attempt SMTP transcript evidence |
| POST /v1/jobs/{id}/cancel | Cancel pending work |
| GET /v1/status | Provider coverage, queue and circuit breakers |
| POST /v1/evidence | Attested owned exchange, hard DSN or independent pattern evidence |
| POST /v1/public-evidence | Fetch up to five same-domain, robots-allowed HTTPS pages |
| POST /v1/labels · GET /v1/benchmark | Independent outcome labels and evaluation breakdown |
Read the verdict correctly
| Verdict | Meaning |
|---|
| likely_deliverable | Discriminating SMTP acceptance or a recent confirmed owned exchange; not a delivery guarantee. |
| undeliverable | Malformed address, no mail route, explicit missing recipient, or qualifying owned hard DSN. |
| catch_all | Target and two independent random controls accepted. Individual mailbox remains unresolved. |
| risky | Mailbox quota, disabled or restricted state. |
| unknown | Blocked, deferred, unsupported, conflicting, disabled SMTP, or other insufficient evidence. |
Role and configured disposable-domain flags are separate from deliverability. Public addresses and naming patterns never become verified by themselves. Retryable checks use delays of 30 minutes, 2 hours and 12 hours, with a maximum of four attempts.