BRANDJET / DEVELOPER SERVICES

Email 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 / pathPurpose
POST /v1/verifyEnqueue one email
POST /v1/jobsJSON or CSV batch
GET /v1/jobs/{id}Progress and retry counts
GET /v1/jobs/{id}/results?format=csvCSV export; omit format for paginated JSON
GET /v1/jobs/{id}/attemptsPer-attempt SMTP transcript evidence
POST /v1/jobs/{id}/cancelCancel pending work
GET /v1/statusProvider coverage, queue and circuit breakers
POST /v1/evidenceAttested owned exchange, hard DSN or independent pattern evidence
POST /v1/public-evidenceFetch up to five same-domain, robots-allowed HTTPS pages
POST /v1/labels · GET /v1/benchmarkIndependent outcome labels and evaluation breakdown

Read the verdict correctly

VerdictMeaning
likely_deliverableDiscriminating SMTP acceptance or a recent confirmed owned exchange; not a delivery guarantee.
undeliverableMalformed address, no mail route, explicit missing recipient, or qualifying owned hard DSN.
catch_allTarget and two independent random controls accepted. Individual mailbox remains unresolved.
riskyMailbox quota, disabled or restricted state.
unknownBlocked, 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.