Skip to content

Email Realtime Check

POST/v1/realtime/check/email

Synchronously check one email address against one to ten realtime email products. The engine, the billing contract and the response shape are identical to the phone endpoint; only the series and the identifier format differ.

FieldTypeRequiredDescription
identifierstringYesOne email address, for example user@example.com.
countrystringNoMust be omitted for email. Sending a country code with an email product is rejected.
product_idsarray<int>YesAn array of 1 to 10 realtime email product IDs.

Email and phone products are different series and cannot be combined in one request. Read the id of an entry whose mode is realtime and whose series is email off Realtime products, which is backed by GET /v1/products. Passing a slug never works here, and a phone product ID in an email call is rejected as an unmatchable series.

{
"request_id": "b7d2a1c4-9f3e-4a1b-8c5d-2e6f7a8b9c0d",
"identifier": "user@example.com",
"series": "email",
"status": "succeeded",
"request_status": "completed",
"replayed": false,
"total_reserved": 0.004000,
"total_charged": 0.004000,
"total_refunded": 0.000000,
"charged_amount": 0.004000,
"refunded_amount": 0.000000,
"results": [
{
"product_id": 49,
"product": "insemailvalid-rt",
"result": "valid",
"cached": false,
"billing_status": "charged",
"charged_amount": 0.002000,
"refunded_amount": 0.000000,
"checked_at": "2026-09-13T10:00:00Z",
"error_code": null
}
]
}

The product_id values above are examples — confirm the current email product IDs on Realtime products before you send a real request. request_id is a UUID, and cached lives inside each result, not at the top level.

The only differences from a phone response are series: "email" and the identifier format. Every other field — including the billing and results entries — is documented field-by-field under Response fields.

Terminal window
curl -X POST "https://api.zelnum.com/api/v1/realtime/check/email" \
-H "X-API-Key: YOUR_KEY_HERE" \
-H "Idempotency-Key: UNIQUE_REQUEST_ID" \
-H "Content-Type: application/json" \
-d '{"identifier":"user@example.com","product_ids":[49]}'
HTTPcodeMeaning / action
400invalid_realtime_requestThe address is malformed, country was sent, the IDs belong to another series, or no ID was supplied. Nothing is submitted and nothing is charged.
400idempotency_key_requiredIdempotency-Key header missing.
402insufficient_balanceBalance does not cover the reservation; no item starts.
409request_in_progress / idempotency_conflictSame key, still running, or same key with a different payload.

The remaining status codes — 401, 403, 429, 503, 500 — behave exactly as documented on the phone endpoint.