Knowing whether an email is safe to send is only part of the picture. Now you can also tell when it's the contact's main address — particularly helpful for executives and senior decision-makers who often have more than one valid email.

The validation response now includes a new subStatus field. When Allegrow has identified the email as the contact's primary address, subStatus returns "primary". Otherwise it's null.

We've also given the response a tidier shape. Validation results now live inside a dedicated result object instead of being stacked at the top level alongside everything else. That keeps the shape predictable as we add richer per-email information in future releases — think MX records, catch-all behavior, and mailbox details — without the top level turning into a sprawl.

Here's what a successful validation response looks like now:

{
  "requestId": "550e8400-e29b-41d4-a716-446655440000",
  "email": "[email protected]",
  "allegrowStatus": "safe",
  "result": {
    "status": "safe",
    "subStatus": "primary"
  }
}

What changed in detail:

result.status — the validation outcome. Same values you're used to (safe, do_not_mail_abuse, some_risk, block_bounce_risk, dead_email), now nested under result.

result.subStatus — "primary" when the email is the contact's main address, otherwise null.

allegrowStatus — still returned on every response, always mirrors result.status. Deprecated — will be removed in a future release. Please migrate to reading result.status when you're ready.

Timeouts now use HTTP 202 with a pollUrl and a retryAfter instead of returning a top-level more_time_required string. Branch on the HTTP status code (200 means done, 202 means try again later) rather than reading a status field.


Nothing breaks today. Both result.status and allegrowStatus carry the same value during the deprecation period, so existing integrations keep working while you migrate.

Read the updated schema in our docs →

Validating a handful of emails through the API is straightforward — but what about validating thousands at once? Now you can.

The new Bulk CSV Validation API lets you upload an entire CSV file of email addresses and get back validated results in one go. Upload your file, check back on progress, and download the results when it's done.

How it works:

Upload — POST /v1/email/validate-file to create a validation job with your CSV

Track — GET /v1/email/validate-file/{jobId} to monitor progress

Download — GET /v1/email/validate-file/{jobId}/download to grab your results

Files up to 100 MB are supported, with automatic delimiter and header detection so you don't need to worry about formatting. You can also provide a webhook URL to get notified the moment processing completes — no polling required.

Read the full walkthrough in our docs →