Verify Email Addresses with Twilio SendGrid Validation API
Validate email addresses before sending campaigns using SendGrid syntax, MX, SMTP, and catch-all checks with confidence scores.
05 May 2026, 21:13 UTC

Problem: Invalid Addresses Waste Campaign Budget
Sending to invalid email addresses consumes sending quota, increases bounce rates, and can damage sender reputation. Validate addresses with the Twilio SendGrid Email Validation API before importing a list or launching a campaign.
Prerequisites
- Twilio account with the SendGrid add-on enabled
- SendGrid API key with Mail Send permissions
- Email address or list to validate
- Confirm current SendGrid account access; validation entitlements vary by plan
Validate One Address
Send an HTTP POST to the validation endpoint. Replace SENDGRID_API_KEY with your actual key and [contact removed] with the target address.
curl -X POST "https://api.sendgrid.com/v3/validation" \
-H "Authorization: Bearer SENDGRID_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "[contact removed]"}'
Run this command in a terminal where curl is installed. The request requires network access to api.sendgrid.com. A 401 response usually means the API key is missing or lacks the required scope.
Interpret the Response
The API returns a JSON object describing whether the address is deliverable. Use the fields below to decide whether to keep, flag, or remove an address.
| Field | Meaning | Suggested action |
|---|---|---|
| valid | Boolean overall validity | Send if true; investigate if false |
| result | One of: valid, invalid, catch-all, unknown | Treat catch-all and unknown as uncertain |
| confidence_score | Certainty from 0 to 1 | Review scores below 0.7 manually |
| suggestions | Array of corrected address variants | Use for obvious typos, such as gmail.co |
| errors | Array of validation errors | Inspect if the request itself failed |
Example Response Shape
{
"email": "[contact removed]",
"valid": true,
"result": "valid",
"confidence_score": 0.95,
"suggestions": [],
"errors": []
}
This is an example shape, not a guarantee of live output. SMTP verification may return unknown if the recipient server blocks probe connections.
Rate Limits and Plan Tiers
- Free tier: 100 validations per day, 600 requests per hour
- Paid plans: higher limits, often 10,000+ validations per day
Check the SendGrid dashboard for current usage before processing large lists. Throttled requests return a 429 response.
Limitations
- Catch-all domains accept mail for any address, so validation cannot confirm a specific mailbox
- Some recipient servers block SMTP validation probes, producing unknown results
- Corporate firewalls may interfere with outbound validation connections
- Validation results can change as mailboxes are created or deleted
Verification and Recovery
- Run the curl command above with a known valid address and confirm the response includes valid and confidence_score.
- Check the SendGrid dashboard under Email Validation for usage metrics.
- If the API returns 401, verify the API key has Mail Send permissions and is active.
- If the API returns 429, pause requests and check hourly or daily limits.
- For catch-all or unknown results, consider sending a confirmation email instead of relying solely on validation.
This procedure queries the validation API and changes no state in Twilio or SendGrid. No rollback is required.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.