Validar el DNS de un dominio
POST
/v1/domains/{id}/validatePara desarrolladores
Descripción
Consulta los registros DNS publicados y actualiza los estados de verificación MX, SPF, DKIM y DMARC. Ejecútela después de publicar los registros de dns_records y cada vez que los modifique, para que el estado refleje el DNS real.
Cada verificación es independiente, así que el éxito parcial es válido (por ejemplo, MX verificado y SPF fallido).
La plataforma no valida por su cuenta: no hay un proceso automático ni webhook. Un dominio permanece en pending hasta que se ejecuta esta llamada o se pulsa Validar en el panel. Ver Ciclo de vida de la verificación.
Guía relacionada
- Configurar su dominio de envío — Verifique MX, SPF, DKIM y DMARC en el DNS del dominio antes de enviar.
Autenticación
Authorizationbearer tokenheaderobligatorio- API key con scope
domains:write. Formato:Bearer <API_KEY>. X-Instance-Slugstringheaderobligatorio- Identificador de su instancia. Ver Autenticación.
Request
Path params:
idintegerobligatorio- Identificador del dominio.
Response
200 OKDevuelve un objeto con los campos que siguen.
idintegersiempre presente- Identificador del dominio.
domainstringsiempre presente- Nombre de dominio normalizado.
mx_statusstring, enum: `pending | verified | failed | revoked`siempre presente- Estado de verificación del registro MX.
mx_verified_atstring (date-time) | nullsiempre presente- Fecha de la última validación de este registro, exitosa o no.
nullsolo mientras no se haya ejecutado ninguna validación; después no vuelve anull. spf_statusstring, enum: `pending | verified | failed | revoked`siempre presente- Estado de verificación del registro SPF.
spf_verified_atstring (date-time) | nullsiempre presente- Análogo a
mx_verified_at, para SPF. dkim_statusstring, enum: `pending | verified | failed | revoked`siempre presente- Estado de verificación de los registros DKIM.
dkim_verified_atstring (date-time) | nullsiempre presente- Análogo a
mx_verified_at, para DKIM. dmarc_statusstring, enum: `pending | verified | failed | revoked`siempre presente- Estado de verificación del registro DMARC.
dmarc_verified_atstring (date-time) | nullsiempre presente- Análogo a
mx_verified_at, para DMARC. ownership_tokenstringsiempre presente- Token único usado en
dns_records.ownership_cnamepara probar la propiedad del dominio. ownership_verified_atstring (date-time) | nullsiempre presente- Se comporta distinto a los cuatro anteriores: se escribe una sola vez, cuando la propiedad se acredita, y permanece en
nullmientras no se haya acreditado. last_verification_atstring (date-time) | nullsiempre presente- Fecha de la última vez que se ejecutó la verificación DNS (exitosa o no).
nullsi nunca se ejecutó. created_atstring (date-time)siempre presente- —
updated_atstring (date-time)siempre presente- —
is_verifiedbooleansiempre presentetrueúnicamente cuandomx_status,spf_status,dkim_statusydmarc_statussonverifiedsimultáneamente.is_ownership_verifiedbooleansiempre presentetruecuandoownership_verified_attiene fecha. Es informativo: no condiciona la verificación ni el envío.is_sandboxbooleansiempre presentetrueen el dominio del entorno de pruebas provisionado con la cuenta. Siemprefalseen los dominios que registra usted. Ver El dominio del entorno de pruebas.dns_recordsobjectsiempre presente- Los registros exactos a publicar, cada uno un objeto
{type, host, value, priority}. Vienen completos en cada respuesta; no hace falta consultarlos aparte.
ownership_cnameobject- Acredita la propiedad del dominio. Es informativo: no condiciona la verificación ni el envío, y se comprueba una sola vez.
prioritysiemprenull. mxobject- Enruta los rebotes hacia la plataforma. La verificación exige que este sea el único MX del dominio (ver por qué el MX debe ser exclusivo). Único registro con
priorityno nulo (10). spfobject- Autoriza a la plataforma a enviar en nombre de este dominio.
prioritysiemprenull. dkimarray, exactamente 2 elementos- Los dos CNAME de firma DKIM, uno por selector:
s1ys2(el prefijo delhost, como ens1._domainkey.…). Publique los dos: uno firma y el otro queda listo para rotar la clave sin interrumpir los envíos. Publíquelos como CNAME y no copie el TXT al que apuntan: ese TXT quedaría fijo con la clave actual y la verificación fallaría en la próxima rotación.prioritysiempre esnull. dmarcobject- Registro de política DMARC. Mínimo recomendado:
p=nonecon unruaválido.prioritysiemprenull.
Notas
- Mismos campos que
GET /v1/domains/{id}. - Los cuatro
*_status, los cuatro*_verified_atylast_verification_atreflejan el resultado de esta verificación.
Errores
| Código | Cuándo |
|---|---|
| 404 | No existe un dominio con ese id en la instancia (domain_not_found). |
Detalle en Errores genéricos.
Notas
- La operación es reintentable: puede invocarla cuantas veces haga falta y, con el mismo estado del DNS, deja el dominio en el mismo resultado. No es libre de efectos: cada llamada actualiza las fechas de verificación (
*_verified_at,last_verification_at) y los estados del dominio. - Puede degradar un dominio ya verificado. El resultado refleja lo que el DNS responde en ese momento, así que un dominio con los cuatro registros en
verifiedvuelve afailedsi sus registros dejaron de resolver o cambiaron de valor. La degradación no ocurre sola: ocurre en la siguiente validación que se ejecute. - En el dominio del entorno de pruebas (
is_sandbox: true), la validación siempre da verificado, sin consultar el DNS.
Request
curl -X POST "https://$API_HOST/v1/domains/7/validate" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
Response
{
"id": 7,
"domain": "correos.micomercio.cl",
"mx_status": "verified",
"spf_status": "verified",
"dkim_status": "verified",
"dmarc_status": "verified",
"mx_verified_at": "2026-05-08T14:30:00Z",
"spf_verified_at": "2026-05-08T14:30:00Z",
"dkim_verified_at": "2026-05-08T14:30:00Z",
"dmarc_verified_at": "2026-05-08T14:30:00Z",
"ownership_token": "4ad93f2c49bd30afe3df3a88b401985e",
"ownership_verified_at": null,
"last_verification_at": "2026-05-08T14:30:00Z",
"is_verified": false,
"is_ownership_verified": false,
"is_sandbox": false,
"created_at": "2026-05-08T14:22:31Z",
"updated_at": "2026-05-08T14:22:31Z",
"dns_records": {
"ownership_cname": {
"type": "CNAME",
"host": "_fidelizador-verify.correos.micomercio.cl",
"value": "4ad93f2c49bd30afe3df3a88b401985e.fidelizador-verify.com",
"priority": null
},
"mx": {
"type": "MX",
"host": "correos.micomercio.cl",
"value": "<dominio MX de bounce de la plataforma>",
"priority": 10
},
"spf": {
"type": "TXT",
"host": "correos.micomercio.cl",
"value": "v=spf1 include:<dominio SPF de la plataforma> -all",
"priority": null
},
"dkim": [
{
"type": "CNAME",
"host": "s1._domainkey.correos.micomercio.cl",
"value": "s1._domainkey.<dominio de publicación de la plataforma>",
"priority": null
},
{
"type": "CNAME",
"host": "s2._domainkey.correos.micomercio.cl",
"value": "s2._domainkey.<dominio de publicación de la plataforma>",
"priority": null
}
],
"dmarc": {
"type": "TXT",
"host": "_dmarc.correos.micomercio.cl",
"value": "v=DMARC1;p=none;rua=<dirección de reporte DMARC>",
"priority": null
}
}
}