Skip to main content
POST
/
entities
/
{id}
/
report-export
/
email
Informe PDF de entidad por correo
curl --request POST \
  --url http://api.gu1.ai/entities/{id}/report-export/email \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --header 'X-Organization-ID: <x-organization-id>' \
  --data '
{
  "recipientEmails": [
    "<string>"
  ],
  "emailLocale": "<string>",
  "fromSenderId": {},
  "fromEmail": "<string>",
  "sections": {}
}
'

Resumen

Encola de forma asíncrona la generación del PDF de entidad en el servidor y su envío por correo. El PDF usa el mismo flujo jsPDF que la descarga “exportar informe” en la app. Tu integración llama al endpoint con API key; los destinatarios reciben el adjunto (asunto y cuerpo según emailLocale).
La respuesta HTTP es 202 Accepted en cuanto el trabajo queda encolado. La generación y el envío ocurren en segundo plano; si no llega el correo, revisá logs del servidor o contactá a soporte.

Endpoint

POST http://api.gu1.ai/entities/{id}/report-export/email

Autenticación y tenant

Authorization
string
required
Bearer TU_API_KEY — ver Autenticación.
X-Organization-ID
string
required
UUID de organización (producción o sandbox) — ver Entornos.

Permisos

Requiere el permiso granular entities:export en la API key (igual que POST /entities/{id}/export y GET /entities/{id}/export-data).

Marketplace y facturación

  • La organización debe tener activa la integración global_sender_email (Aplicaciones / Marketplace) y el servidor debe tener configurado MS Provider.
  • Cada dirección en recipientEmails (tras deduplicar en el servidor) consume una ejecución del pack de Email o, si no hay pack, tokens según base_price_cents de la integración.
  • El pre-flight valida saldo/ejecuciones para todos los destinatarios antes de encolar el trabajo.

Dominio y remitente (fromEmail)

Para usar un remitente de tu organización:
  1. Registrá el dominio en Ajustes → Email → Dominios y completá la verificación DNS.
  2. En el body, enviá fromEmail con cualquier dirección de ese dominio (ej. noreply@tu-dominio.com). No hace falta dar de alta esa dirección en “Remitentes” si el dominio ya está verificado.
  3. Alternativa: fromSenderId (UUID de una fila en organization_email_senders) si preferís referenciar un remitente ya guardado.
  4. Si omitís ambos, se usa el remitente por defecto de la plataforma (noreply@gueno.com).
No envíes fromSenderId y fromEmail en el mismo request.

Parámetros de ruta

id
string
required
UUID de la entidad (id devuelto por crear/listar/obtener).

Cuerpo JSON

recipientEmails
string[]
required
Una o más direcciones de correo (máx. 26 tras deduplicar). Solo se envía a estas direcciones; no se agrega automáticamente el email del usuario de la API key.
emailLocale
string
Idioma del correo: en, es o pt. Por defecto en si falta o no es válido.
fromSenderId
string (uuid)
UUID de un remitente en Ajustes → Email → Remitentes (organization_email_senders). Mutuamente excluyente con fromEmail.
fromEmail
string
Dirección completa de envío (ej. reportes@tu-dominio.com). El dominio debe estar verificado en la org. Si existe una fila en Remitentes con esa dirección, se usa su nombre; si no, basta el dominio verificado. Mutuamente excluyente con fromSenderId.
sections
object
required
Booleano por sección del informe (misma semántica que el modal de exportación en el panel). Claves opcionales; los valores por defecto coinciden con el validador de la API (generalInfo por defecto true, el resto false si se omiten).Claves: generalInfo, kyc, documents, checks, enrichments, alerts, aiAnalysis, relationships, timeline, riskAnalysis.

Ejemplo de cuerpo

{
  "recipientEmails": ["cumplimiento@ejemplo.com"],
  "emailLocale": "es",
  "fromEmail": "noreply@tu-dominio.com",
  "sections": {
    "generalInfo": true,
    "riskAnalysis": true,
    "enrichments": true,
    "alerts": true
  }
}

Ejemplo con curl

curl -X POST "http://api.gu1.ai/entities/550e8400-e29b-41d4-a716-446655440000/report-export/email" \
  -H "Authorization: Bearer TU_API_KEY" \
  -H "X-Organization-ID: UUID_DE_TU_ORG" \
  -H "Content-Type: application/json" \
  -d '{
    "recipientEmails": ["cumplimiento@ejemplo.com"],
    "emailLocale": "es",
    "fromEmail": "noreply@tu-dominio.com",
    "sections": {
      "generalInfo": true,
      "riskAnalysis": true,
      "enrichments": true
    }
  }'

Respuestas

202 Accepted — encolado

{
  "success": true,
  "status": "queued",
  "message": "…"
}
El message se localiza según emailLocale.

400 — validación / pre-flight

Código / casoDescripción
NO_RECIPIENTSrecipientEmails vacío tras deduplicar.
TOO_MANY_RECIPIENTSMás de 26 destinatarios.
EMAIL_INTEGRATION_INACTIVEglobal_sender_email inactiva o MS Provider no configurado.
DOMAIN_NOT_VERIFIEDDominio de fromEmail no registrado o sin verificar DNS.
SENDER_NOT_CONFIGUREDfromSenderId desconocido para la org.
INVALID_SENDERfromSenderId y fromEmail juntos, o formato inválido.
INSUFFICIENT_BALANCETokens o ejecuciones de pack insuficientes para todos los destinatarios.

404 — entidad inexistente u oculta

Mismo criterio que otros endpoints de entidad cuando el ID no pertenece a la org o la visibilidad lo impide.

500 — error de servidor

Poco frecuente; payload de error genérico.

Endpoints relacionados

  • POST /entities/{id}/export — descarga síncrona del PDF (cuerpo de la respuesta = archivo PDF).
  • GET /entities/{id}/export-data — JSON usado por la exportación en el panel; el PDF por correo arma los mismos datos en servidor.
  • Exportación masiva por correoPOST /entities/export/jobs (CSV/XLSX/JSON con filtros de listado).
  • Obtener entidadGET /entities/{id}.