Correo transaccional — para el programador
Usá esta API desde un formulario web u otro sistema. Pedí una API Key al administrador
(módulo Mail → Sistemas). La clave va en el encabezado X-API-Key, no en el HTML público del form
si el visitante no debe verla: lo ideal es que tu backend la envíe.
Base
https://ws.a3.com.py/centroservicios
Autenticación: encabezado X-API-Key: cuatro-palabras-en-español. CORS habilitado para llamadas desde el navegador.
1. Enviar un correo
POST https://ws.a3.com.py/centroservicios/api/mail/v1/send
JSON. Campos obligatorios: to, subject, html.
{
"to": "cliente@correo.com",
"to_name": "Juan Pérez",
"subject": "Consulta desde la web",
"html": "<p>Hola, este es el mensaje.</p>",
"text": "Hola, este es el mensaje.",
"notification_email": "copia@tuempresa.com"
}
Respuesta 202 (encolado) o 200 (ya salió):
{
"success": true,
"uuid": "mail_66d1a2b3c4d5e6",
"status": "queued",
"sent": false,
"message": "Correo aceptado. Consultá el estado con GET /api/mail/v1/status?uuid=…"
}
2. Consultar si se envió
Guardá el uuid del paso 1 y preguntá el estado.
GET https://ws.a3.com.py/centroservicios/api/mail/v1/status?uuid=mail_66d1a2b3c4d5e6
Varios a la vez: ?uuid=id1,id2,id3 (máximo 50). Solo ves los correos de tu sistema.
Estados: pending, queued, sent, failed, bounced. Si sent es true, ya salió.
{
"success": true,
"item": {
"uuid": "mail_66d1a2b3c4d5e6",
"status": "sent",
"sent": true,
"to": "cliente@correo.com",
"subject": "Consulta desde la web",
"attempts": 1,
"sent_at": "2026-08-27 15:04:11",
"created_at": "2026-08-27 15:04:10",
"last_error": null
}
}
3. Listado y totales de tu sistema
GET https://ws.a3.com.py/centroservicios/api/mail/v1/messages
Opcional: ?status=sent, ?limit=20 (máx. 50), ?since=2026-08-01 00:00:00.
{
"success": true,
"counts": { "pending": 0, "queued": 1, "sent": 12, "failed": 0, "bounced": 0 },
"items": [ ]
}
4. Probar la API Key
GET https://ws.a3.com.py/centroservicios/api/mail/v1/test
Códigos HTTP
200/202— OK400— Faltan campos o uuid401— Sin API Key o inválida403— Sistema suspendido o IP no autorizada404— Ese uuid no existe en tu sistema429— Superaste el límite de correos por hora (el sistema se suspende)
Ejemplo JavaScript (formulario web)
const API = "https://ws.a3.com.py/centroservicios";
const KEY = "tu-api-key";
async function enviarContacto(to, subject, html) {
const res = await fetch(API + "/api/mail/v1/send", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": KEY
},
body: JSON.stringify({ to, subject, html })
});
const data = await res.json();
if (!data.success) throw new Error(data.error || "No se pudo enviar");
return data.uuid;
}
async function seEnvio(uuid) {
const res = await fetch(API + "/api/mail/v1/status?uuid=" + encodeURIComponent(uuid), {
headers: { "X-API-Key": KEY }
});
const data = await res.json();
return data.item; // { status, sent, sent_at, last_error, ... }
}
Ejemplo curl
curl -X POST https://ws.a3.com.py/centroservicios/api/mail/v1/send \
-H "Content-Type: application/json" \
-H "X-API-Key: tu-api-key" \
-d '{"to":"cliente@correo.com","subject":"Hola","html":"<p>Hola</p>"}'
curl https://ws.a3.com.py/centroservicios/api/mail/v1/status?uuid=EL_UUID \
-H "X-API-Key: tu-api-key"