---
title: "API de consulta MX: ruta de correo y proveedor | Emvero"
description: "Obtenga MX, ruta, proveedor y registros SPF y DMARC publicados con una petición por dominio. Revise fechas, resultados parciales y reintentos seguros."
url: https://emvero.io/es/domain-intelligence-api/
language: es
updated: 2026-10-08
---

API de consulta MX

# Consulte MX y datos de correo del dominio con una API.

Consulte registros MX, ruta y proveedor de correo para un dominio. El perfil JSON también incluye SPF/DMARC, señales conocidas del dominio y direcciones IP con ASN. Añada variant=extended para obtener datos de registro.

La respuesta JSON conserva el estado, la fuente y la antigüedad de cada observación. Domain Intelligence no abre sesiones SMTP ni verifica buzones ni autentica mensajes.

Empezar gratis

Ver la documentación

GET para un dominio · JSON estructurado · Idempotency-Key obligatorio · Créditos compartidos

## Consulte un dominio desde su backend

El endpoint es `GET /v1/domain/{domain}`. Envíe el dominio en la ruta, la credencial en `Authorization: Bearer` y una `Idempotency-Key` obligatoria. Mantenga la credencial en el servidor. La petición no lleva cuerpo. El parámetro opcional `variant` acepta `standard` por defecto o `extended`.

```
curl -sS https://api.emvero.tech/v1/domain/example.com \
  -H "Authorization: Bearer emv_your_credential" \
  -H "Idempotency-Key: 3f0c9a52-6d1e-4b8e-a7f4-2c51d0e9b6aa"
```

`example.com` y los valores de la documentación son sintéticos. Use un dominio, no una dirección de correo, URL o IP. Cada petición consulta un dominio; un subdominio se comprueba como tal.

Para obtener datos de registro, añada `?variant=extended`. Use una clave nueva para esta operación independiente:

```
curl -sS "https://api.emvero.tech/v1/domain/example.com?variant=extended" \
  -H "Authorization: Bearer emv_your_credential" \
  -H "Idempotency-Key: 8c1d2e7a-4b9f-4f0e-9a3c-61e5d2b7c904"
```

**Ver una respuesta JSON completa · Ampliada**

Ejemplo sintético. La consulta estándar devuelve registration: null y billing.variant: standard. Este ejemplo incluye registro y cuesta 2 créditos como nueva consulta ampliada completa. 
```
{
  "schema_version": "1",
  "operation_id": "45eb36a9-b4e6-48ac-94a9-0ad145b6cf98",
  "domain": "example.com",
  "ascii_domain": "example.com",
  "status": "complete",
  "generated_at": "2026-10-02T10:00:00Z",
  "mail_routing": {
    "status": "routable",
    "method": "mx",
    "issues": [],
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "dns",
      "source_version": null,
      "observed_at": "2026-10-02T10:00:00Z",
      "expires_at": "2026-10-02T10:05:00Z",
      "stale": false
    }
  },
  "mx": {
    "records": [
      {
        "host": "mx.example.com",
        "priority": 10,
        "provider_id": null
      }
    ],
    "provider_id": null,
    "provider_match": "unknown",
    "truncated": false,
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "dns",
      "source_version": "catalog:17",
      "observed_at": "2026-10-02T10:00:00Z",
      "expires_at": "2026-10-02T10:05:00Z",
      "stale": false
    }
  },
  "email": {
    "classification": {
      "disposable": false,
      "public_provider": false,
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dataset",
        "source_version": "bundle:example-v1",
        "observed_at": null,
        "expires_at": null,
        "stale": false
      }
    },
    "catch_all": {
      "state": "unknown",
      "provider_id": null,
      "meta": {
        "status": "unknown",
        "reason": "not_observed",
        "source": null,
        "source_version": null,
        "observed_at": null,
        "expires_at": null,
        "stale": false
      }
    }
  },
  "email_authentication": {
    "spf": {
      "present": true,
      "syntax": "valid",
      "record": "v=spf1 -all",
      "all_qualifier": "fail",
      "includes": [],
      "redirect": null,
      "evaluation": "not_performed",
      "issues": [],
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dns",
        "source_version": "spf-syntax:1",
        "observed_at": "2026-10-02T10:00:00Z",
        "expires_at": "2026-10-02T10:05:00Z",
        "stale": false
      }
    },
    "dmarc": {
      "present": true,
      "syntax": "valid",
      "record": "v=DMARC1; p=reject",
      "policy_domain": "example.com",
      "inherited": false,
      "published_policy": "reject",
      "effective_policy": "reject",
      "testing": false,
      "adkim": "r",
      "aspf": "r",
      "evaluation": "not_performed",
      "issues": [],
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dns",
        "source_version": "dmarc-rfc9989:1",
        "observed_at": "2026-10-02T10:00:00Z",
        "expires_at": "2026-10-02T10:05:00Z",
        "stale": false
      }
    }
  },
  "network": {
    "mail": [
      {
        "host": "mx.example.com",
        "priority": 10,
        "addresses": [
          {
            "ip": "198.51.100.25",
            "asn": 64500
          },
          {
            "ip": "203.0.113.25",
            "asn": 64511
          },
          {
            "ip": "2001:db8::25",
            "asn": 64500
          }
        ]
      }
    ],
    "web": {
      "host": "example.com",
      "cname_chain": [],
      "addresses": [
        {
          "ip": "198.51.100.80",
          "asn": 64500
        },
        {
          "ip": "2001:db8::80",
          "asn": 64500
        }
      ],
      "truncated": false,
      "edge_provider": null,
      "meta": {
        "status": "ok",
        "reason": null,
        "source": "dns",
        "source_version": null,
        "observed_at": "2026-10-02T10:00:00Z",
        "expires_at": "2026-10-02T10:05:00Z",
        "stale": false
      }
    },
    "autonomous_systems": [
      {
        "asn": 64500,
        "handle": "EXAMPLE-ISP",
        "name": "Example Access",
        "country": "DE",
        "type": "isp"
      },
      {
        "asn": 64511,
        "handle": null,
        "name": null,
        "country": null,
        "type": "unknown"
      }
    ],
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "dataset",
      "source_version": "example-routing-dataset",
      "observed_at": "2026-10-02T00:35:16Z",
      "expires_at": null,
      "stale": false
    }
  },
  "registration": {
    "registered_domain": "example.com",
    "registered_at": "2020-10-02T10:00:00Z",
    "age_days": 2191,
    "expires_at": "2027-10-02T10:00:00Z",
    "registrar": "Example Registrar",
    "statuses": [
      "client transfer prohibited"
    ],
    "meta": {
      "status": "ok",
      "reason": null,
      "source": "registry",
      "source_version": "rdap.example.com",
      "observed_at": "2026-10-02T10:00:00Z",
      "expires_at": "2026-11-01T10:00:00Z",
      "stale": false
    }
  },
  "billing": {
    "product": "domain-intelligence",
    "variant": "extended",
    "operation_credits": 2
  }
}
```

## Lea la ruta, los MX y el proveedor

`mail_routing.status` describe la ruta del dominio. `mx.records` contiene los hosts receptores y sus prioridades. Una ruta no establece que se acepte un destinatario concreto. El [glosario de MX](https://emvero.io/es/glossary/mx-record/) explica el registro DNS.

`mx.provider_match` es `matched`, `mixed`, `unknown` o `not_applicable`. Si los hosts preferidos coinciden, la API identifica al operador entrante visible. Puede ser una pasarela de filtrado y no el servidor de los buzones. `mx.truncated` indica que la lista se ha recortado. Consulte [cómo encontrar el proveedor de correo](https://emvero.io/es/blog/how-to-find-email-provider/) para entender los límites de esa atribución.

`email.classification` contiene señales conocidas de correo desechable y proveedores públicos. Un resultado negativo significa que no hubo coincidencia en los datos de referencia, no prueba lo contrario. `email.catch_all.state` informa del estado guardado para el dominio; esta consulta no hace un sondeo SMTP nuevo para establecerlo.

`email_authentication` contiene los datos publicados de SPF y DMARC admitidos. Su `evaluation` es `not_performed`: la API no prueba mensajes ni remitentes, no descubre claves DKIM y no evalúa los includes de SPF de forma recursiva. La reputación de envío y la titularidad del dominio quedan fuera del perfil.

## Lea los campos de red y registro

`network.mail` agrupa las IP públicas y sus `asn` por servidor de correo. `network.web` contiene el host solicitado, `cname_chain`, direcciones, `truncated` y `edge_provider`. La consulta no añade `www.` ni comprueba disponibilidad HTTP. Un CDN o proxy puede ocultar el servidor de origen.

`network.autonomous_systems` describe cada ASN con `handle`, `name`, `country` y `type`. El país es el de registro de la red, no la geolocalización de la IP. Los datos desconocidos quedan como `null` o `unknown`. Los fallos de red no cambian el estado global ni el precio: revise `network.meta` y `network.web.meta` por separado.

Con `variant=extended`, `registration` contiene `registered_domain`, `registered_at`, `age_days`, `expires_at`, `registrar`, `statuses` y `meta`. Para un subdominio, los datos corresponden al dominio registrable superior. Sin fecha de registro, la consulta ampliada es parcial; `registration.meta.reason` explica los datos ausentes o no admitidos. En la modalidad estándar, `registration` es `null`. La antigüedad del registro no demuestra la de la empresa ni la titularidad.

## Combine el estado general con los metadatos

El perfil tiene estado `complete` o `partial`. Lea el `meta` de cada parte para conocer estado, motivo, fuente, fechas de observación y caducidad y si el valor está obsoleto. `meta.reason` explica por qué no se pudo establecer un dato. No sustituya la fecha de observación por la de recuperación.

Un perfil `partial` puede conservar una ruta útil mientras un campo secundario falta, está obsoleto o se ha recortado. Una coincidencia de proveedor `unknown` o un estado catch-all no observado no hacen parcial el perfil por sí solos. `complete` describe la cobertura de la consulta, no un veredicto positivo sobre el dominio.

Si falla la fuente de la ruta, el endpoint puede devolver `503 source_unavailable` en vez de suponer que no hay servicio de correo. Separe los errores de petición de las observaciones que usa su aplicación.

## Repita la operación con la misma clave

Durante las 24 horas posteriores a la finalización, la misma clave, dominio y modalidad devuelven la respuesta guardada sin cambios. La repetición no actualiza las observaciones. Usar la clave con otro dominio o modalidad devuelve `409 idempotency_conflict`. Si la primera petición sigue en curso, espere el intervalo indicado y repita la misma petición con la misma clave.

Una consulta `standard` completa cuesta 1 crédito; una `extended` completa, 2. Si la parte estándar está completa pero falta la fecha de registro, `extended` cuesta 1. Otros resultados parciales, respuestas guardadas y rechazos confirmados cuestan 0. Los datos de red no afectan al precio. Una repetición conserva `billing.operation_credits`; `X-Credits-Charged` describe la petición actual.

Con `commit_unknown` o `accounting_uncertain`, el cargo puede haberse realizado. La respuesta omite `X-Credits-Charged`; esa ausencia no confirma un cargo cero. Repita con la misma clave para llegar a la misma operación. Una clave nueva crea trabajo nuevo.

## Elija el proceso de dominio que necesita

La página de [Domain Intelligence en su cuenta](https://emvero.io/es/domain-intelligence/) explica la consulta sin código. Si solo necesita saber si el dominio puede recibir correo, el [comprobador de dominios de correo](https://emvero.io/es/email-domain-checker/) ofrece una respuesta más limitada, gratuita y sin cuenta.

La [guía de la API Domain Intelligence](https://docs.emvero.io/using/domain-intelligence/) documenta la validación de peticiones, el esquema completo y los errores. Ninguno de los dos procesos de dominio verifica un buzón concreto ni envía correo.

Preguntas

## Preguntas frecuentes.

**¿Qué campos del dominio devuelve la API?**

El perfil incluye ruta, hosts MX y prioridades, proveedor, señales de correo desechable y público, estado catch-all guardado, SPF/DMARC, IP de correo y web, CNAME, CDN o proxy reconocido y sistemas autónomos. La consulta ampliada añade datos de registro. Cada observación conserva fuente y estado.

**¿Una ruta válida demuestra que existe el buzón?**

No. La ruta describe el dominio. La consulta no hace sondeos SMTP ni demuestra un buzón concreto, su titularidad o la entrega futura en la bandeja de entrada.

**¿La consulta prueba si un remitente supera SPF o DMARC?**

Lee los registros publicados y los campos de sintaxis o política admitidos. `evaluation` es `not_performed`. No evalúa mensajes ni descubre claves DKIM ni sigue los includes de SPF de forma recursiva.

**¿Puedo usar un perfil parcial?**

Revise el estado y los metadatos de la parte que necesita. Una respuesta `partial` puede conservar una ruta conocida aunque otra observación falte o esté obsoleta. Un estado catch-all desconocido por sí solo no hace necesariamente parcial el perfil.

**¿Cuánto cuestan las consultas completas y las repeticiones?**

Una consulta `standard` completa cuesta 1 crédito; una `extended` completa, 2. Si la parte estándar está completa pero falta la fecha de registro, `extended` cuesta 1. Otros resultados parciales, respuestas guardadas y rechazos confirmados cuestan 0. Los datos de red no afectan al precio. Una repetición conserva `billing.operation_credits`; `X-Credits-Charged` describe la petición actual. Con `commit_unknown` o `accounting_uncertain`, el cargo es incierto y esa cabecera no aparece. Repita con la misma clave.

## En comparación directa

### Registro MX

Un registro DNS que indica a qué servidor dirigir el correo de un dominio.

Conectar la consulta de dominios

## Use el perfil en su backend o consúltelo desde su cuenta.

Confirme una cuenta nueva para recibir 1000 créditos compartidos, sin tarjeta. Una consulta estándar completa cuesta 1 crédito; una ampliada, 2, o 1 si solo se completa la parte estándar.

Empezar gratis

Ver la documentación
