Documentación de Mailack.
Quickstart, API de producto y SDKs. Correo certificado con evidencia NOM-151, expuesto como API HTTP y MCP.
API key → send → status → proof-bundle → verify → MCP
Quickstart
API key, primer mensaje, estado, proof bundle, verify offline y MCP.
POST /v1/domainsDominios de envío
Registra tu dominio, publica el TXT de challenge y verifica el From.
email.*Webhooks
Eventos de lifecycle firmados con Mailack-Signature (HMAC-SHA256).
{{var}}Plantillas
Subject y cuerpo con {{variables}} y envío por template_id.
/v1/messages/batch · /v1/ratesAPI: batch, rates y errores
Ingesta masiva, dashboard de entregabilidad y códigos de error.
clientes oficialesSDKs
Go, Rust, JavaScript, Node/TS, Python, Java y C#.
guía de pantallasPortal del cliente
Dashboard, keys, mensajes, evidencia y facturación en la UI.
GmailExtensión de Chrome
Envía correo certificado NOM-151 desde el redactor de Gmail, con seguimiento y constancia.
- 01variables de entorno
Autenticación con API key
Exporta la clave del portal (prefijo mlk_). Todas las rutas machine /v1/* exigen Authorization: Bearer. El tenant se resuelve en el servidor a partir de la key.
variables de entorno export MAILACK_API_KEY="mlk_..." export MAILACK_API_URL="https://api.mailack.com" # Cada petición lleva la clave en Authorization. curl -s "$MAILACK_API_URL/v1/messages" \ -H "Authorization: Bearer $MAILACK_API_KEY" \ -H "Accept: application/json" - 02POST /v1/messages
Enviar el primer mensaje
POST /v1/messages con Idempotency-Key. Guarda el id de la respuesta; lo usas en los pasos siguientes. Reintentar con la misma key es seguro (replay).
POST /v1/messages MESSAGE_ID=$(curl -s -X POST "$MAILACK_API_URL/v1/messages" \ -H "Authorization: Bearer $MAILACK_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "from": "noreply@acme.mx", "to": "cliente@ejemplo.com", "subject": "Primer mensaje", "html": "<p>Hola desde mailack.</p>" }' | jq -r .id) echo "$MESSAGE_ID" - 03GET /v1/messages/{id}
Consultar su estado
GET /v1/messages/{id} devuelve el estado de entrega, eventos y metadatos del mensaje.
GET /v1/messages/{id} curl -s "$MAILACK_API_URL/v1/messages/$MESSAGE_ID" \ -H "Authorization: Bearer $MAILACK_API_KEY" | jq . - 04GET /v1/messages/{id}/proof-bundle
Descargar el proof bundle
GET /v1/messages/{id}/proof-bundle. Incluye hash canónico, prueba de inclusión Merkle y, cuando exista, la constancia del PSC Codex.
GET /v1/messages/{id}/proof-bundle curl -s "$MAILACK_API_URL/v1/messages/$MESSAGE_ID/proof-bundle" \ -H "Authorization: Bearer $MAILACK_API_KEY" \ -o bundle.json # Campos de la constancia del PSC Codex en el bundle: # certificate_id, serial_number, policy_oid, algorithm_oid, sealed_at jq '{certificate_id, serial_number, sealed_at}' bundle.json - 05POST /v1/verify
Verificarlo
POST /v1/verify recomputa la prueba de inclusión Merkle y responde valid: true|false. Y sin cuenta, cualquiera puede comprobar el bundle en mailack.com/verificar: la comprobación corre en su navegador, sin que el archivo salga del equipo.
POST /v1/verify curl -s -X POST "$MAILACK_API_URL/v1/verify" \ -H "Authorization: Bearer $MAILACK_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"message_id\": \"$MESSAGE_ID\"}" | jq . # → {"valid": true, "merkle_root": "…", "certificate_id": "…", "sealed_at": "…"} # Sin cuenta: bundle.json en mailack.com/verificar (todo en el navegador) - 06mcpServers.mailack
Conectar el servidor MCP
Registra mailack-mcp en tu cliente MCP. El agente puede enviar, consultar, verificar y operar dominios/webhooks con las tools expuestas.
mcpServers.mailack { "mcpServers": { "Mailack": { "command": "./bin/mailack-mcp", "env": { "MAILACK_API_KEY": "mlk_...", "MAILACK_API_URL": "https://api.mailack.com" } } } }
Referencia OpenAPI
El contrato formal vive en el repositorio de Mailack (docs/openapi.yaml). Estas páginas son la guía de producto y el camino mínimo hasta el primer proof bundle verificado.