uSpeedo BatchVerifyEmail API: A Complete Developer Guide

July 23, 2026

What Is BatchVerifyEmail?

BatchVerifyEmail is a synchronous REST API provided by uSpeedo for real-time email address validation. It performs a full chain of checks — from basic syntax validation to live SMTP mailbox probing — and returns a detailed verdict for each address.

Because the API runs synchronously (typically 5–30 seconds per request), it is best suited for server-side integrations such as sign-up flows, CRM data cleansing, and list hygiene before campaigns.

API Specification

Item Detail
Method POST
Endpoint https://api.uspeedo.com/api/v1/email/BatchVerifyEmail
Authentication HTTP Basic Auth — ACCESSKEY_ID:ACCESSKEY_SECRET
Content-Type application/json
Rate Limit 5 QPS (requests per second)
Batch Size Maximum 1 email per request

The Emails field accepts an array format, but only a single entry is supported per call. Sending more than one address triggers error 214405.

Supported Domains

The following domains return definitive results (ResultStatus: 0 or 1):

gmail.com · outlook.com · hotmail.com · qq.com · 163.com · gmx.de · alice.it

All other domains typically return ResultStatus: 2 (Uncertain). Your application logic should handle this case explicitly.

Making Your First Request

curl -X POST "https://api.uspeedo.com/api/v1/email/BatchVerifyEmail" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Basic $(echo -n 'ACCESSKEY_ID:ACCESSKEY_SECRET' | base64)" \
  -d '{
    "Emails": [
      "user@example.com"
    ]
  }'

Understanding the Response

A successful call returns:

{
  "RetCode": 0,
  "Message": "Success",
  "RequestUuid": "unique-request-id",
  "Action": "BatchVerifyEmail",
  "Data": {
    "SessionNo": "batch-uuid",
    "TotalCount": 1,
    "SuccessCount": 1,
    "FailCount": 0,
    "Results": [
      {
        "Email": "user@example.com",
        "ResultStatus": 0,
        "RiskTag": 0,
        "SyntaxStatus": 1,
        "DnsStatus": 1,
        "SmtpStatus": 1
      }
    ],
    "FailContent": []
  }
}

Status Field Reference

ResultStatus — Overall Verdict

Value Meaning
0 Valid — email is deliverable
1 Invalid — email is undeliverable
2 Uncertain — result cannot be determined
3 High-risk — flagged address
4 In progress — verification not yet complete

RiskTag — Risk Classification

Value Meaning
0 No risk detected
1 Disposable / temporary email
2 Garbled or randomly generated address
3 Spam trap address
4 Public free email provider

Sub-Check Status (SyntaxStatus / DnsStatus / SmtpStatus)

Value Meaning
0 Pending — check not yet executed
1 Passed
2 Failed
3 Skipped — check was bypassed
4 Unknown — result unavailable

Error Codes

Code Description
214403 Missing required Emails parameter
214405 Array contains more than 1 email (batch limit exceeded)
215209 Rate limit exceeded (over 5 QPS)
214406 Internal service error

Best Practices

1. Call from server-side only

This is a blocking synchronous API. Never invoke it directly from browser or mobile client code — use a backend proxy or queue worker instead.

2. One email per request

Despite the array parameter name, each request must contain exactly one email address. Batch multiple addresses by issuing sequential or parallel requests with your own rate limiting.

3. Respect the 5 QPS limit

Exceeding the rate limit returns error 215209 and may result in temporary IP blocking. Implement exponential backoff or a token bucket limiter in your integration.

4. Handle ResultStatus: 2 explicitly

For domains outside the officially supported list, the API returns an uncertain result. Treat these as "needs manual review" rather than valid or invalid.

5. Use all fields together

Rely only on ResultStatus and you'll miss important signal. For example, a ResultStatus: 0 with RiskTag: 1 (disposable email) may still warrant attention in a sign-up flow. Combine SyntaxStatus, DnsStatus, SmtpStatus, and RiskTag to build a complete quality score.

6. Cache results

Email addresses don't change status frequently. Cache verification results for 7–30 days to reduce redundant API calls and stay within rate limits.

email-verificationbatchverifyemailsmtp-checkemail-apideliverability