RQE Docs
API Reference

Dominios

Registro, verificación y gestión de dominios con DKIM/SPF.

Endpoints para la gestion completa de dominios de envio: registro, verificacion DNS, consulta de estado y configuracion de perfil de remitente.

Base URL: https://api.reallyquickemails.com


Autenticacion

Todos los endpoints de dominios requieren autenticacion mediante Secret Key:

HeaderTipoRequeridoDescripcion
AuthorizationstringSiBearer sk_proj_...
Content-TypestringSi*application/json (en POST/PUT).

POST /domains/register

Registra un nuevo dominio de envio. Crea la identidad en AWS SES, genera los registros DNS necesarios y almacena la configuracion en la base de datos.

Request Body

CampoTipoRequeridoDescripcion
domainstringSiDominio a registrar (ej. mitienda.com).
sender_namestringSiNombre del remitente (ej. Mi Tienda).
sender_emailstringSiDireccion de correo del remitente (ej. ventas@mitienda.com).
external_keystringNoClave externa para integraciones de terceros.

Ejemplo

curl -X POST https://api.reallyquickemails.com/domains/register \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_proj_tu_secret_key" \
  -d '{
    "domain": "mitienda.com",
    "sender_name": "Mi Tienda",
    "sender_email": "ventas@mitienda.com"
  }'

Respuesta exitosa (201 Created)

{
  "success": true,
  "domain": "mitienda.com",
  "dns_records": [
    {
      "type": "TXT",
      "name": "_amazonses",
      "value": "abcdef1234567890abcdef1234567890",
      "purpose": "ses_verification"
    },
    {
      "type": "CNAME",
      "name": "abc123._domainkey",
      "value": "abc123.dkim.amazonses.com",
      "purpose": "dkim"
    },
    {
      "type": "CNAME",
      "name": "def456._domainkey",
      "value": "def456.dkim.amazonses.com",
      "purpose": "dkim"
    },
    {
      "type": "CNAME",
      "name": "ghi789._domainkey",
      "value": "ghi789.dkim.amazonses.com",
      "purpose": "dkim"
    },
    {
      "type": "TXT",
      "name": "@",
      "value": "v=spf1 include:amazonses.com ~all",
      "purpose": "spf"
    },
    {
      "type": "TXT",
      "name": "_dmarc",
      "value": "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@mitienda.com",
      "purpose": "dmarc"
    },
    {
      "type": "CNAME",
      "name": "bounce",
      "value": "feedback-smtp.us-east-1.amazonses.com",
      "purpose": "return_path"
    }
  ],
  "message": "Domain registered. Configure the DNS records shown above, then call POST /domains/mitienda.com/verify to validate."
}

Registros DNS generados

#TipoNombrePropositoNotas
1TXT_amazonsesVerificacion SESValor generado por AWS SES
2-4CNAME{token}._domainkeyDKIM3 registros, tokens generados por AWS SES
5TXT@ (raiz del dominio)SPFv=spf1 include:amazonses.com ~all
6TXT_dmarcDMARCv=DMARC1; p=quarantine; rua=mailto:dmarc-reports@{domain}
7CNAMEbounceReturn-PathApunta a feedback-smtp.us-east-1.amazonses.com

Nota: Los nombres de los registros son relativos al dominio. Por ejemplo, si tu dominio es mitienda.com, el registro _amazonses se configura como _amazonses.mitienda.com en tu proveedor DNS. Algunos proveedores agregan el dominio automaticamente, por lo que solo necesitas ingresar _amazonses.

Codigos de Error

CodigoDescripcion
400Campos requeridos faltantes o dominio con formato invalido.
401API Key invalida.
409El dominio ya esta registrado en este proyecto.
500Error interno al comunicarse con AWS SES.

GET /domains/:domain/dns-records

Retorna los registros DNS almacenados para un dominio. No realiza consultas a AWS -- devuelve los datos guardados en la base de datos al momento del registro.

Parametros de Ruta

ParametroTipoDescripcion
domainstringDominio registrado (ej. mitienda.com).

Ejemplo

curl -X GET https://api.reallyquickemails.com/domains/mitienda.com/dns-records \
  -H "Authorization: Bearer sk_proj_tu_secret_key"

Respuesta exitosa (200 OK)

{
  "success": true,
  "domain": "mitienda.com",
  "dns_records": [
    {
      "type": "TXT",
      "name": "_amazonses",
      "value": "abcdef1234567890abcdef1234567890",
      "purpose": "ses_verification",
      "verified": false
    },
    {
      "type": "CNAME",
      "name": "abc123._domainkey",
      "value": "abc123.dkim.amazonses.com",
      "purpose": "dkim",
      "verified": false
    },
    {
      "type": "CNAME",
      "name": "def456._domainkey",
      "value": "def456.dkim.amazonses.com",
      "purpose": "dkim",
      "verified": false
    },
    {
      "type": "CNAME",
      "name": "ghi789._domainkey",
      "value": "ghi789.dkim.amazonses.com",
      "purpose": "dkim",
      "verified": false
    },
    {
      "type": "TXT",
      "name": "@",
      "value": "v=spf1 include:amazonses.com ~all",
      "purpose": "spf",
      "verified": null
    },
    {
      "type": "TXT",
      "name": "_dmarc",
      "value": "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@mitienda.com",
      "purpose": "dmarc",
      "verified": null
    },
    {
      "type": "CNAME",
      "name": "bounce",
      "value": "feedback-smtp.us-east-1.amazonses.com",
      "purpose": "return_path",
      "verified": null
    }
  ]
}

Codigos de Error

CodigoDescripcion
401API Key invalida.
404Dominio no encontrado en el proyecto.

POST /domains/:domain/verify

Verifica el estado DNS del dominio consultando directamente a AWS SES. Comprueba tres aspectos:

  1. Verificacion de dominio -- El registro TXT de verificacion SES esta configurado.
  2. DKIM -- Los 3 registros CNAME de DKIM estan configurados y propagados.
  3. MAIL FROM -- El registro CNAME de Return-Path (bounce) esta configurado.

Actualiza el estado en la base de datos y retorna si el dominio puede enviar correos.

Parametros de Ruta

ParametroTipoDescripcion
domainstringDominio registrado (ej. mitienda.com).

Ejemplo

curl -X POST https://api.reallyquickemails.com/domains/mitienda.com/verify \
  -H "Authorization: Bearer sk_proj_tu_secret_key"

Respuesta exitosa (200 OK)

{
  "success": true,
  "domain": "mitienda.com",
  "verification": {
    "domain_verified": true,
    "dkim_verified": true,
    "mail_from_verified": false
  },
  "can_send": true,
  "message": "Domain and DKIM verified. MAIL FROM pending -- emails will send but Return-Path may not match."
}

El campo can_send es true cuando tanto domain_verified como dkim_verified son true. La verificacion de mail_from no es obligatoria para enviar pero se recomienda para mejorar la entregabilidad.

Codigos de Error

CodigoDescripcion
401API Key invalida.
404Dominio no encontrado en el proyecto.
502Error al comunicarse con AWS SES.

GET /domains/:domain/status

Retorna el estado de verificacion almacenado en la base de datos. No consulta AWS SES, por lo que es un endpoint rapido ideal para polling desde la interfaz.

Parametros de Ruta

ParametroTipoDescripcion
domainstringDominio registrado (ej. mitienda.com).

Ejemplo

curl -X GET https://api.reallyquickemails.com/domains/mitienda.com/status \
  -H "Authorization: Bearer sk_proj_tu_secret_key"

Respuesta exitosa (200 OK)

{
  "success": true,
  "domain": "mitienda.com",
  "status": "verified",
  "can_send": true,
  "dns_records_summary": {
    "total": 7,
    "verified": 5,
    "pending": 2,
    "failed": 0
  },
  "sender": {
    "sender_name": "Mi Tienda",
    "sender_email": "ventas@mitienda.com"
  },
  "last_verified_at": "2025-03-10T18:45:00.000Z"
}

Codigos de Error

CodigoDescripcion
401API Key invalida.
404Dominio no encontrado en el proyecto.

GET /domains

Busca un dominio especifico por nombre. Retorna informacion basica del dominio y su perfil de remitente.

Query Parameters

ParametroTipoRequeridoDescripcion
domainstringSiNombre del dominio a buscar.

Ejemplo

curl -X GET "https://api.reallyquickemails.com/domains?domain=mitienda.com" \
  -H "Authorization: Bearer sk_proj_tu_secret_key"

Respuesta exitosa (200 OK)

{
  "success": true,
  "domain": {
    "domain": "mitienda.com",
    "status": "verified",
    "can_send": true,
    "created_at": "2025-03-01T12:00:00.000Z",
    "sender": {
      "sender_name": "Mi Tienda",
      "sender_email": "ventas@mitienda.com",
      "reply_email": "soporte@mitienda.com"
    }
  }
}

Codigos de Error

CodigoDescripcion
400Parametro domain no proporcionado.
401API Key invalida.
404Dominio no encontrado en el proyecto.

DELETE /domains/:domain

Elimina un dominio. El dominio se elimina inmediatamente de AWS SES y se marca como eliminado (soft-delete) en la base de datos. El perfil de remitente asociado se desactiva.

Parametros de Ruta

ParametroTipoDescripcion
domainstringDominio a eliminar (ej. mitienda.com).

Ejemplo

curl -X DELETE https://api.reallyquickemails.com/domains/mitienda.com \
  -H "Authorization: Bearer sk_proj_tu_secret_key"

Respuesta exitosa (200 OK)

{
  "success": true,
  "domain": "mitienda.com",
  "message": "Domain and associated sender profile removed"
}

Advertencia: Esta operacion es irreversible en AWS SES. Una vez eliminado, deberas volver a registrar el dominio y configurar los registros DNS nuevamente.

Codigos de Error

CodigoDescripcion
401API Key invalida.
404Dominio no encontrado en el proyecto.

PUT /domains/:domain/sender

Actualiza el perfil de remitente asociado a un dominio. Los campos sender_name y sender_email son obligatorios.

Parametros de Ruta

ParametroTipoDescripcion
domainstringDominio asociado (ej. mitienda.com).

Request Body

CampoTipoRequeridoDescripcion
sender_namestringSiNombre visible del remitente.
sender_emailstringSiDireccion de correo del remitente. Debe terminar en @{domain}.
reply_emailstringNoDireccion de correo para respuestas (Reply-To).

Ejemplo

curl -X PUT https://api.reallyquickemails.com/domains/mitienda.com/sender \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_proj_tu_secret_key" \
  -d '{
    "sender_name": "Equipo Mi Tienda",
    "sender_email": "ventas@mitienda.com",
    "reply_email": "soporte@mitienda.com"
  }'

Respuesta exitosa (200 OK)

{
  "success": true,
  "domain": "mitienda.com",
  "sender": {
    "sender_name": "Equipo Mi Tienda",
    "sender_email": "ventas@mitienda.com",
    "reply_email": "soporte@mitienda.com"
  }
}

Codigos de Error

CodigoDescripcion
400Falta sender_name o sender_email, o sender_email no coincide con el dominio.
401API Key invalida.
404Dominio no encontrado en el proyecto.

Alternativa a la verificacion de dominio completo. Permite verificar un email individual como remitente sin necesidad de configurar DNS. AWS SES envia un email de verificacion al remitente — al hacer clic en el enlace, el email queda verificado para enviar.

Nota: La verificacion por email es mas rapida pero no incluye DKIM/SPF. Para mejor deliverability, se recomienda verificar el dominio completo.


POST /domains/verify-email

Inicia la verificacion de un email como remitente. AWS SES envia un enlace de verificacion al email proporcionado.

Request Body

CampoTipoRequeridoDescripcion
sender_emailstringSiEmail a verificar como remitente.
sender_namestringSiNombre visible del remitente.
external_keystringNoClave externa para integraciones.

Ejemplo

curl -X POST https://api.reallyquickemails.com/domains/verify-email \
  -H "Authorization: Bearer sk_proj_tu_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "sender_email": "ventas@gmail.com",
    "sender_name": "Mi Empresa"
  }'

Respuesta exitosa (201)

{
  "success": true,
  "identity_id": "550e8400-e29b-41d4-a716-446655440000",
  "sender_email": "ventas@gmail.com",
  "verification_status": "pending",
  "sender_profile_id": "123e4567-e89b-12d3-a456-426614174000",
  "sender": {
    "from_name": "Mi Empresa",
    "from_email": "ventas@gmail.com",
    "email_verified": false,
    "domain_authenticated": false
  },
  "message": "Verification email sent. The sender must click the link in the email to verify."
}

El remitente recibira un email de AWS con un enlace. Al hacer clic, su email queda verificado.

Errores

CodigoDescripcion
400sender_email and sender_name are required
401API Key invalida
409Email ya registrado en este proyecto

GET /domains/verify-email/status

Consulta el estado de verificacion de un email. Verifica contra AWS SES en tiempo real.

Query Parameters

ParametroTipoRequeridoDescripcion
emailstringSiEmail a consultar.

Ejemplo

curl "https://api.reallyquickemails.com/domains/verify-email/status?email=ventas@gmail.com" \
  -H "Authorization: Bearer sk_proj_tu_secret_key"

Respuesta exitosa (200)

{
  "success": true,
  "identity_id": "550e8400-e29b-41d4-a716-446655440000",
  "sender_email": "ventas@gmail.com",
  "verification_status": "verified",
  "sender_profile": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "from_name": "Mi Empresa",
    "from_email": "ventas@gmail.com",
    "email_verified": true,
    "domain_authenticated": false
  },
  "can_send": true
}

Estados de verificacion

EstadoDescripcion
pendingEmail de verificacion enviado, esperando clic del remitente
verifiedRemitente verificado, listo para enviar
failedVerificacion fallida

Errores

CodigoDescripcion
400email query parameter is required
401API Key invalida
404Email no encontrado en el proyecto

POST /domains/verify-email/resend

Reenvia el email de verificacion al remitente.

Request Body

CampoTipoRequeridoDescripcion
sender_emailstringSiEmail al que reenviar.

Ejemplo

curl -X POST https://api.reallyquickemails.com/domains/verify-email/resend \
  -H "Authorization: Bearer sk_proj_tu_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "sender_email": "ventas@gmail.com"
  }'

Respuesta exitosa (200)

{
  "success": true,
  "message": "Verification email resent",
  "sender_email": "ventas@gmail.com"
}

DELETE /domains/verify-email

Elimina un email verificado como remitente.

Query Parameters

ParametroTipoRequeridoDescripcion
emailstringSiEmail a eliminar.

Ejemplo

curl -X DELETE "https://api.reallyquickemails.com/domains/verify-email?email=ventas@gmail.com" \
  -H "Authorization: Bearer sk_proj_tu_secret_key"

Respuesta exitosa (200)

{
  "success": true,
  "sender_email": "ventas@gmail.com",
  "message": "Email identity and associated sender profile removed"
}

Errores

CodigoDescripcion
400email query parameter is required
401API Key invalida
404Email no encontrado en el proyecto

On this page