Dominios
Añade dominios de envío, consulta sus registros DNS y su estado de verificación, y verifícalos.
Crear un dominio
Añade un dominio de envío y devuelve los registros DNS que debes publicar para él.
/domainsRequiere una clave de API full. Emailit genera una clave DKIM de 2048 bits para el dominio. Publica los registros de dns_records en tu proveedor de DNS y, después, llama a Verificar un dominio. Puedes enviar desde el dominio en cuanto esté verificado. Consulta Añadir un dominio y Registros DNS.
El número de dominios depende de tu plan: 3 en Pay as you go (25 después de tu primera compra de créditos), 100 en Pro y 1000 en Business. Dispara un evento domain.created.
Parámetros del cuerpo
namestringobligatorioEl dominio desde el que envías, como acme.com o mail.acme.com, sin http://, https:// ni www.. Se guarda en minúsculas. Tus direcciones from deben usar exactamente este dominio.
tracking_keystringLa etiqueta de subdominio del CNAME de seguimiento de aperturas y clics. Por defecto, go, que da go.acme.com. Letras, dígitos y guiones.
inbound_keystringLa etiqueta de subdominio para recibir emails. Por defecto, inbound, que da inbound.acme.com. Letras, dígitos y guiones.
dmarc_reportsbooleanpor defecto: falseActiva la recopilación de informes DMARC del dominio. Emailit crea una dirección de informes y la añade al registro DMARC sugerido. Disponible en los planes Pro, Business y Custom. Consulta DMARC.
track_loadsbooleanpor defecto: falsefalse al crear un dominio. Activa el seguimiento con Actualizar un dominio cuando el CNAME de seguimiento esté verificado.track_clicksbooleanpor defecto: falsetrack_loads, para el seguimiento de clics.Los indicadores antiguos outgoing, incoming y use_for_any se aceptan por compatibilidad y no tienen ningún efecto.
Devuelve
Devuelve 201 con el objeto de dominio, incluido dns_records. Un dominio nuevo tiene el estado pending, o pending_review en Pay as you go hasta su primera comprobación de DNS.
curl https://api.emailit.com/v2/domains \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "acme.com",
"tracking_key": "links",
"inbound_key": "reply",
"dmarc_reports": true
}'{
"object": "domain",
"id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
"name": "acme.com",
"verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
"verification_method": "dns",
"verified_at": null,
"manually_verified_at": null,
"manual_review_required": false,
"verification_status": "pending",
"dkim_identifier_string": "emailit",
"dns_checked_at": null,
"spf_status": "pending",
"spf_error": null,
"dkim_status": "pending",
"dkim_error": null,
"mx_status": "pending",
"mx_error": null,
"return_path_status": "pending",
"return_path_error": null,
"dmarc_status": "pending",
"dmarc_error": null,
"tracking_status": "pending",
"tracking_error": null,
"tracking_key": null,
"inbound_status": "pending",
"inbound_error": null,
"inbound_key": null,
"track_loads": 0,
"track_clicks": 0,
"dmarc_reports": false,
"dmarc_address": null,
"created_at": "2026-10-01T09:12:03.551208Z",
"updated_at": "2026-10-01T09:12:03.551208Z",
"dns_records": [
{
"required": true,
"type": "MX",
"name": "emailit.acme.com",
"value": "feedback-smtp.ffdc-1.emailit.com",
"priority": 10,
"ttl": "auto",
"status": "pending",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit.acme.com",
"value": "v=spf1 include:_spf.emailit.com ~all",
"priority": null,
"ttl": "auto",
"status": "pending",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit._domainkey.acme.com",
"value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
"priority": null,
"ttl": "auto",
"status": "pending",
"error": null
},
{
"required": false,
"type": "TXT",
"name": "_dmarc.acme.com",
"value": "v=DMARC1; p=none;",
"priority": null,
"ttl": "auto",
"status": "pending",
"error": null
},
{
"required": false,
"type": "CNAME",
"name": "go.acme.com",
"value": "go.emailitmail.com",
"priority": null,
"ttl": "auto",
"status": "pending",
"error": null
},
{
"required": false,
"type": "MX",
"name": "inbound.acme.com",
"value": "inbound.emailitmail.com",
"priority": 10,
"ttl": "auto",
"status": "pending",
"error": null
}
]
}{
"error": "The domain must be in apex format (e.g., domain.com) without http://, https://, or www."
}{
"error": "plan_required",
"required_plan": "pro"
}{
"error": "Domain with this name already exists",
"existing": {
"object": "domain",
"id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
"name": "acme.com"
}
}{
"error": "Pay as you go includes 3 domain(s)."
}{
"error": "Tracking requires a verified custom CNAME. New messages are not rewritten to a shared tracking URL."
}Obtener un dominio
Obtiene un dominio de envío con su estado de verificación y sus registros DNS.
/domains/{id}Requiere una clave de API full. Los estados de los registros reflejan la última comprobación de DNS, que se ejecuta cuando llamas a Verificar un dominio y, automáticamente, una vez al día.
Parámetros de ruta
idstringobligatoriodom_…, o sd_… y sed_… en dominios más antiguos) o su nombre, como acme.com.Devuelve
Devuelve el objeto de dominio.
objectstringdomain.idstringnamestringverification_statusstringverified si el dominio puede enviar. pending mientras SPF, DKIM o el return-path todavía no sean correctos. pending_review en Pay as you go si Emailit tiene que revisar el dominio manualmente antes de poder verificarlo, por ejemplo porque se registró hace menos de 30 días.
verified_atstring | nullnull si el dominio no está verificado. Una comprobación fallida lo borra.manual_review_requiredbooleanmanually_verified_atstring | nullnull.dns_checked_atstring | nullspf_status, dkim_status, return_path_statusstringEl estado de los tres registros obligatorios: pending (aún sin comprobar), ok, missing o invalid. Los tres deben estar en ok para que el dominio se verifique.
mx_statusstringreturn_path_status.dmarc_statusstringpending, ok, missing, invalid o error. Opcional para la verificación.tracking_statusstringok para poder activar el seguimiento.inbound_statusstringspf_error, dkim_error, mx_error, return_path_error, dmarc_error, tracking_error, inbound_errorstring | nullnull.tracking_keystring | nullnull para el valor por defecto, go.inbound_keystring | nullnull para el valor por defecto, inbound.track_loadsinteger1 si el seguimiento de aperturas está activado por defecto en los emails de este dominio; 0 si no.track_clicksinteger1 si el seguimiento de clics está activado por defecto; 0 si no.dmarc_reportsbooleandmarc_addressstring | nullnull si dmarc_reports está desactivado.verification_token, verification_method, dkim_identifier_stringstringverification_method es dns y dkim_identifier_string es el selector DKIM, emailit.created_at, updated_atstringdns_recordsobject[]Los registros que debes publicar. Cada uno tiene type (MX, TXT o CNAME), name, value, priority (en los registros MX), ttl (auto), required (si es necesario para la verificación) y sus valores actuales de status y error.
| Registro | Tipo | Nombre | Valor | Obligatorio |
|---|---|---|---|---|
| Return-path | MX | emailit.acme.com |
feedback-smtp.ffdc-1.emailit.com, prioridad 10 |
Sí |
| SPF | TXT | emailit.acme.com |
v=spf1 include:_spf.emailit.com ~all |
Sí |
| DKIM | TXT | emailit._domainkey.acme.com |
v=DKIM1; t=s; h=sha256; p=… |
Sí |
| DMARC | TXT | _dmarc.acme.com |
v=DMARC1; p=none;, más las direcciones de informes si dmarc_reports está activado |
No |
| Seguimiento | CNAME | go.acme.com |
go.emailitmail.com |
No |
| Entrada | MX | inbound.acme.com |
inbound.emailitmail.com, prioridad 10 |
No |
{
"object": "domain",
"id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
"name": "acme.com",
"verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
"verification_method": "dns",
"verified_at": "2026-10-01T03:00:12.000000Z",
"manually_verified_at": null,
"manual_review_required": false,
"verification_status": "verified",
"dkim_identifier_string": "emailit",
"dns_checked_at": "2026-10-01T03:00:12.000000Z",
"spf_status": "ok",
"spf_error": null,
"dkim_status": "ok",
"dkim_error": null,
"mx_status": "ok",
"mx_error": null,
"return_path_status": "ok",
"return_path_error": null,
"dmarc_status": "ok",
"dmarc_error": null,
"tracking_status": "ok",
"tracking_error": null,
"tracking_key": null,
"inbound_status": "invalid",
"inbound_error": "queryMx ENOTFOUND inbound.acme.com",
"inbound_key": null,
"track_loads": 1,
"track_clicks": 1,
"dmarc_reports": true,
"dmarc_address": "4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com",
"created_at": "2026-09-14T08:02:51.000000Z",
"updated_at": "2026-10-01T03:00:12.000000Z",
"dns_records": [
{
"required": true,
"type": "MX",
"name": "emailit.acme.com",
"value": "feedback-smtp.ffdc-1.emailit.com",
"priority": 10,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit.acme.com",
"value": "v=spf1 include:_spf.emailit.com ~all",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit._domainkey.acme.com",
"value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": false,
"type": "TXT",
"name": "_dmarc.acme.com",
"value": "v=DMARC1; p=none; rua=mailto:4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com; ruf=mailto:4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com;",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": false,
"type": "CNAME",
"name": "go.acme.com",
"value": "go.emailitmail.com",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": false,
"type": "MX",
"name": "inbound.acme.com",
"value": "inbound.emailitmail.com",
"priority": 10,
"ttl": "auto",
"status": "invalid",
"error": "queryMx ENOTFOUND inbound.acme.com"
}
]
}{
"error": "Domain not found"
}Verificar un dominio
Consulta en ese momento los registros DNS del dominio, guarda el resultado y devuelve el dominio con sus nuevos estados.
/domains/{id}/verifyRequiere una clave de API full. Llámalo después de publicar los registros de Crear un dominio y de nuevo cada vez que los cambies. Los cambios de DNS pueden tardar en propagarse, así que, si un registro aparece como missing, espera unos minutos y vuelve a intentarlo.
El dominio pasa a verified cuando los tres registros obligatorios están en ok:
- SPF: un registro TXT en
emailit.<domain>que incluya_spf.emailit.com. - DKIM: un registro TXT en
emailit._domainkey.<domain>con la clave pública del dominio. - Return-path: un único registro MX en
emailit.<domain>que apunte afeedback-smtp.ffdc-1.emailit.com.
En Pay as you go, un dominio registrado hace menos de 30 días recibe en su lugar pending_review, y Emailit lo revisa manualmente. Los registros DMARC, de seguimiento y de entrada también se comprueban, pero no afectan a la verificación.
Emailit también vuelve a comprobar cada dominio una vez al día. Si un registro obligatorio deja de superar la comprobación, el dominio deja de estar verificado, los envíos desde él fallan y el propietario del espacio de trabajo recibe un email. Consulta Verificación del dominio.
Parámetros de ruta
idstringobligatorioDevuelve
Devuelve el objeto de dominio con el resultado de esta comprobación en verification_status, en cada campo *_status y *_error y en dns_records. Esta respuesta no incluye dmarc_reports ni dmarc_address; consúltalos con Obtener un dominio.
{
"object": "domain",
"id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
"name": "acme.com",
"verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
"verification_method": "dns",
"verified_at": null,
"manually_verified_at": null,
"manual_review_required": false,
"dkim_identifier_string": "emailit",
"dns_checked_at": "2026-10-01T09:20:41.000000Z",
"spf_status": "ok",
"spf_error": null,
"dkim_status": "missing",
"dkim_error": "queryTxt ENOTFOUND emailit._domainkey.acme.com",
"mx_status": "ok",
"mx_error": null,
"return_path_status": "ok",
"return_path_error": null,
"dmarc_status": "error",
"dmarc_error": "queryTxt ENOTFOUND _dmarc.acme.com",
"tracking_status": "invalid",
"tracking_error": "queryCname ENOTFOUND go.acme.com",
"tracking_key": null,
"inbound_status": "invalid",
"inbound_error": "queryMx ENOTFOUND inbound.acme.com",
"inbound_key": null,
"track_loads": 0,
"track_clicks": 0,
"created_at": "2026-10-01T09:12:03.000000Z",
"updated_at": "2026-10-01T09:20:41.000000Z",
"dns_records": [
{
"required": true,
"type": "MX",
"name": "emailit.acme.com",
"value": "feedback-smtp.ffdc-1.emailit.com",
"priority": 10,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit.acme.com",
"value": "v=spf1 include:_spf.emailit.com ~all",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit._domainkey.acme.com",
"value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
"priority": null,
"ttl": "auto",
"status": "missing",
"error": "queryTxt ENOTFOUND emailit._domainkey.acme.com"
},
{
"required": false,
"type": "TXT",
"name": "_dmarc.acme.com",
"value": "v=DMARC1; p=none;",
"priority": null,
"ttl": "auto",
"status": "error",
"error": "queryTxt ENOTFOUND _dmarc.acme.com"
},
{
"required": false,
"type": "CNAME",
"name": "go.acme.com",
"value": "go.emailitmail.com",
"priority": null,
"ttl": "auto",
"status": "invalid",
"error": "queryCname ENOTFOUND go.acme.com"
},
{
"required": false,
"type": "MX",
"name": "inbound.acme.com",
"value": "inbound.emailitmail.com",
"priority": 10,
"ttl": "auto",
"status": "invalid",
"error": "queryMx ENOTFOUND inbound.acme.com"
}
],
"verification_status": "pending"
}{
"error": "Domain not found"
}Actualizar un dominio
Actualiza la configuración de un dominio de envío. Solo cambian los campos que envíes.
/domains/{id}Requiere una clave de API full. Dispara un evento domain.updated.
Parámetros de ruta
idstringobligatorioParámetros del cuerpo
track_loadsbooleanActiva o desactiva por defecto el seguimiento de aperturas en los emails de este dominio. Para activarlo, necesitas un CNAME de seguimiento verificado (tracking_status en ok). Consulta Dominio de seguimiento personalizado.
track_clicksbooleantrack_loads.tracking_keystring | nullUna nueva etiqueta de subdominio para el CNAME de seguimiento, o null para el valor por defecto, go. Al cambiarla, tracking_status vuelve a pending, así que publica el nuevo CNAME y verifica de nuevo.
inbound_keystring | nullnull para el valor por defecto, inbound. Al cambiarla, inbound_status vuelve a pending.dmarc_reportsbooleanActiva la recopilación de informes DMARC del dominio. Al activarla, se añade una dirección de informes al registro DMARC sugerido, así que actualiza después tu registro _dmarc. Solo en los planes Pro, Business y Custom. Al desactivarla, la dirección se conserva para más adelante.
namestringUn nuevo nombre de dominio. Los registros DNS pasan al nuevo nombre, así que publícalos allí y vuelve a verificar el dominio antes de enviar desde él.
Los indicadores antiguos outgoing, incoming y use_for_any se aceptan y no tienen ningún efecto. Los campos desconocidos se ignoran. Una petición sin ninguno de estos campos devuelve 400.
Devuelve
Devuelve el objeto de dominio actualizado, incluido dns_records.
curl -X POST https://api.emailit.com/v2/domains/acme.com \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"track_loads": true, "track_clicks": true}'{
"object": "domain",
"id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
"name": "acme.com",
"verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
"verification_method": "dns",
"verified_at": "2026-10-01T03:00:12.000000Z",
"manually_verified_at": null,
"manual_review_required": false,
"verification_status": "verified",
"dkim_identifier_string": "emailit",
"dns_checked_at": "2026-10-01T03:00:12.000000Z",
"spf_status": "ok",
"spf_error": null,
"dkim_status": "ok",
"dkim_error": null,
"mx_status": "ok",
"mx_error": null,
"return_path_status": "ok",
"return_path_error": null,
"dmarc_status": "ok",
"dmarc_error": null,
"tracking_status": "ok",
"tracking_error": null,
"tracking_key": null,
"inbound_status": "invalid",
"inbound_error": "queryMx ENOTFOUND inbound.acme.com",
"inbound_key": null,
"track_loads": 1,
"track_clicks": 0,
"dmarc_reports": false,
"dmarc_address": null,
"created_at": "2026-09-14T08:02:51.000000Z",
"updated_at": "2026-10-01T10:44:20.000000Z",
"dns_records": [
{
"required": true,
"type": "MX",
"name": "emailit.acme.com",
"value": "feedback-smtp.ffdc-1.emailit.com",
"priority": 10,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit.acme.com",
"value": "v=spf1 include:_spf.emailit.com ~all",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": true,
"type": "TXT",
"name": "emailit._domainkey.acme.com",
"value": "v=DKIM1; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3kQ...IDAQAB;",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": false,
"type": "TXT",
"name": "_dmarc.acme.com",
"value": "v=DMARC1; p=none;",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": false,
"type": "CNAME",
"name": "go.acme.com",
"value": "go.emailitmail.com",
"priority": null,
"ttl": "auto",
"status": "ok",
"error": null
},
{
"required": false,
"type": "MX",
"name": "inbound.acme.com",
"value": "inbound.emailitmail.com",
"priority": 10,
"ttl": "auto",
"status": "invalid",
"error": "queryMx ENOTFOUND inbound.acme.com"
}
]
}{
"error": "No valid fields provided for update. Provide at least one of: name, outgoing, incoming, use_for_any, track_loads, track_clicks, tracking_key, inbound_key, dmarc_reports"
}{
"error": "plan_required",
"required_plan": "pro"
}{
"error": "Domain not found"
}{
"error": "Another domain with this name already exists"
}{
"error": "Tracking requires a verified custom CNAME. New messages are not rewritten to a shared tracking URL."
}Listar dominios
Devuelve una página de dominios de envío, del más reciente al más antiguo, junto con el número de dominios que permite tu plan.
/domainsRequiere una clave de API full. Los elementos del listado no incluyen dns_records; para obtenerlos, usa Obtener un dominio.
Parámetros de consulta
pageintegerpor defecto: 1limitintegerpor defecto: 10searchstringmatchstringpor defecto: allall u or. Cómo se combinan los filtros de abajo.orderstringdirectionstringasc o desc.Filtros
Añade filtros con el formato key.condition=value, por ejemplo dkim_status.exact=ok. Consulta Filtrado.
| Clave | Tipo | Valores y notas |
|---|---|---|
name |
cadena | |
created_at |
fecha | |
spf_status |
enumeración | ok, missing, invalid |
dkim_status |
enumeración | ok, missing, invalid |
return_path_status |
enumeración | ok, missing, invalid |
Todas las claves sirven también para ordenar.
Devuelve
dataobject[]dns_records.next_page_urlstring | nullnull. Consulta Paginación.previous_page_urlstring | nullnull.domain_limitinteger | nullnull si no hay límite.domain_countintegerplan_namestring | nullPay as you go o Pro.curl -G https://api.emailit.com/v2/domains \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
-d dkim_status.not_exact=ok \
-d spf_status.not_exact=ok \
-d match=or{
"data": [
{
"object": "domain",
"id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
"name": "acme.com",
"verification_token": "vt_4KY8weirBN9sxnfbIt78tsFWteY",
"verification_method": "dns",
"verified_at": "2026-10-01T03:00:12.000000Z",
"manually_verified_at": null,
"manual_review_required": false,
"verification_status": "verified",
"dkim_identifier_string": "emailit",
"dns_checked_at": "2026-10-01T03:00:12.000000Z",
"spf_status": "ok",
"spf_error": null,
"dkim_status": "ok",
"dkim_error": null,
"mx_status": "ok",
"mx_error": null,
"return_path_status": "ok",
"return_path_error": null,
"dmarc_status": "ok",
"dmarc_error": null,
"tracking_status": "ok",
"tracking_error": null,
"tracking_key": null,
"inbound_status": "invalid",
"inbound_error": "queryMx ENOTFOUND inbound.acme.com",
"inbound_key": null,
"track_loads": 1,
"track_clicks": 1,
"dmarc_reports": true,
"dmarc_address": "4KXUJdXRVlVgbkWQm4GHLy8BleP@dmarc.emailitmail.com",
"created_at": "2026-09-14T08:02:51.000000Z",
"updated_at": "2026-10-01T03:00:12.000000Z"
}
],
"next_page_url": null,
"previous_page_url": null,
"domain_limit": 100,
"domain_count": 1,
"plan_name": "Pro"
}Eliminar un dominio
Elimina de forma permanente un dominio de envío.
/domains/{id}Requiere una clave de API full. Tras la eliminación, los envíos desde el dominio fallan con Domain not verified, y las claves de API limitadas al dominio ya no pueden enviar. También se eliminan la clave DKIM del dominio, su historial de salud de envío y la conexión con Cloudflare que hubiera guardada. Los emails ya enviados siguen en tus registros de emails. Dispara un evento domain.deleted.
Para volver a enviar desde el dominio, créalo de nuevo. Recibirá una nueva clave DKIM, así que tendrás que actualizar el registro DKIM.
Parámetros de ruta
idstringobligatorioDevuelve
objectstringdomain.idstringnamestringdeletedbooleantrue.{
"object": "domain",
"id": "dom_4K468YrjOkR1wwdhqiO0G9XEUey",
"name": "acme.com",
"deleted": true
}{
"error": "Domain not found"
}