Saltar al contenido principal

Validar el DNS de un dominio

POST/v1/domains/{id}/validate

Para 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​

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. null solo mientras no se haya ejecutado ninguna validación; después no vuelve a null.
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_cname para 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 null mientras 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). null si nunca se ejecutó.
created_atstring (date-time)siempre presente
—
updated_atstring (date-time)siempre presente
—
is_verifiedbooleansiempre presente
true únicamente cuando mx_status, spf_status, dkim_status y dmarc_status son verified simultáneamente.
is_ownership_verifiedbooleansiempre presente
true cuando ownership_verified_at tiene fecha. Es informativo: no condiciona la verificación ni el envío.
is_sandboxbooleansiempre presente
true en el dominio del entorno de pruebas provisionado con la cuenta. Siempre false en 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. priority siempre null.
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 priority no nulo (10).
spfobject
Autoriza a la plataforma a enviar en nombre de este dominio. priority siempre null.
dkimarray, exactamente 2 elementos
Los dos CNAME de firma DKIM, uno por selector: s1 y s2 (el prefijo del host, como en s1._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. priority siempre es null.
dmarcobject
Registro de política DMARC. Mínimo recomendado: p=none con un rua válido. priority siempre null.
Notas
  • Mismos campos que GET /v1/domains/{id}.
  • Los cuatro *_status, los cuatro *_verified_at y last_verification_at reflejan el resultado de esta verificación.

Errores​

CódigoCuándo
404No 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 verified vuelve a failed si 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
}
}
}