Validación de emails en loteBETAcore beta
Validá sintaxis RFC, normalizá (lowercase, trim) y detectá typos de dominio. Hasta 1.000 emails por request.
Contrato estable; cambios breaking solo con deprecation previo.
Validate a batch of email addresses. Each item carries an `id` and a `value` — no country is needed. The API checks RFC syntax, normalizes the address (lowercase domain, trim) and detects common domain typos against a curated list of providers (gmial.com → gmail.com). Each result carries `valid`, the `normalized` address and an `error` message when invalid. Up to 1000 emails per request. Domain-level checks are part of email validation: there is no separate domain endpoint.
URL base: https://api.normadata.io
Header de autenticación: X-API-Key: nd-...
Cuerpo del request
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| items | array | sí | Array of items to validate (1–1000). Each item is the object described below. |
| items[].id | string | no | Client-provided correlation id, echoed back verbatim in the matching result. |
| items[].value | string | sí | Email address to validate. Whitespace is trimmed and the domain is lowercased. |
Ejemplo de request
cURLcurl -X POST https://api.normadata.io/v1/validate/emails \
-H "X-API-Key: nd_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{"items":[
{"id":"1","value":" ROGER@Normadata.IO "},
{"id":"2","value":"juan@gmial.com"}
]}'package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
type EmailItem struct {
ID string `json:"id"`
Value string `json:"value"`
}
type EmailResult struct {
ID string `json:"id"`
Value string `json:"value"`
Valid bool `json:"valid"`
Normalized string `json:"normalized"`
Error string `json:"error"`
}
type EmailResponse struct {
Results []EmailResult `json:"results"`
}
func main() {
body, _ := json.Marshal(map[string][]EmailItem{
"items": {
{ID: "1", Value: " ROGER@Normadata.IO "},
{ID: "2", Value: "juan@gmial.com"},
},
})
req, _ := http.NewRequest("POST", "https://api.normadata.io/v1/validate/emails", bytes.NewReader(body))
req.Header.Set("X-API-Key", os.Getenv("NORMADATA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
var out EmailResponse
json.NewDecoder(res.Body).Decode(&out)
for _, r := range out.Results {
fmt.Println(r.ID, r.Valid, r.Normalized)
}
}Ejemplo de respuesta 200
JSON{
"results": [
{
"id": "1",
"value": " ROGER@Normadata.IO ",
"valid": true,
"normalized": "roger@normadata.io"
},
{
"id": "2",
"value": "juan@gmial.com",
"valid": false,
"error": "typo in domain: did you mean gmail.com?"
}
]
}Errores comunes
Códigos de error que podés encontrar al llamar este endpoint. El envelope completo está documentado en la referencia principal.
| Código |
|---|
| INVALID_EMAIL |
| MISSING_VALUE |
| empty_batch |
| batch_too_large |
| quota_exceeded |
Notas
Validates that the address is well-formed and the domain looks right — it does not verify the inbox exists and runs no SMTP lookup. The envelope is shared by every endpoint: POST `{items:[…]}` (1–1000) → `{results:[…]}` correlated by `id`.
Endpoints relacionados
Usá este endpoint en acceso anticipado
El acceso a Normadata es por solicitud. Solicitá acceso con tu caso de uso y provisionamos la API key para tu cuenta.
Solicitar acceso →