Batch, rates y errores.
Más allá del envío unitario: ingesta masiva con éxito parcial, métricas del tenant y el envelope de error uniforme.
- 01POST /v1/messages/batch
Ingesta batch (≤100)
Un solo request JSON con hasta 100 mensajes. Cada ítem lleva su propio idempotency_key. La respuesta lista resultados por índice y contadores created / failed / replayed.
max 100partial successempty_batchbatch_too_largePOST /v1/messages/batch curl -s -X POST "$MAILACK_API_URL/v1/messages/batch" \ -H "Authorization: Bearer $MAILACK_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "idempotency_key": "order-1", "from": "noreply@acme.mx", "to": "a@ejemplo.com", "subject": "Pedido 1", "text": "Gracias" }, { "idempotency_key": "order-2", "from": "noreply@acme.mx", "to": "b@ejemplo.com", "subject": "Pedido 2", "text": "Gracias" } ] }' | jq . - 02GET /v1/rates
Rates de entregabilidad
Agregados del tenant en una ventana de días (query days, default 14): ingested, sent, deferred, bounced, complained, sealed, tasas y serie diaria. Misma forma en el portal (pantalla Rates).
Son métricas operativas del tenant, no un claim de entregabilidad pública del producto.
GET /v1/rates?days=14 curl -s "$MAILACK_API_URL/v1/rates?days=14" \ -H "Authorization: Bearer $MAILACK_API_KEY" | jq . - 03auth
Scopes de API key
La key Bearer resuelve el tenant. Scopes habituales:
messages:sendenvío, batch, dominios, webhooks, templatesevidence:readlectura, listados, rates, proof-bundlesuppressions:writesupresionesapi_keys:writegestión de keys del tenant - 04errores
Envelope y códigos
Formato uniforme: {"error":{"code":"snake_case","message":"…"}}. Códigos frecuentes de producto:
quota_exceededcuota mensual del tenantrecipient_suppresseddestinatario en supresióndomain_not_verifiedFrom no autorizadotemplate_not_foundplantilla inexistentetemplate_render_errorfallo al renderizar variables - 05superficies
Machine, portal y admin
Machine API (/v1/* con API key) es la de SDKs y MCP. Portal (/v1/portal/*) usa sesión del usuario del cliente. Admin (/v1/admin/*) es la consola de operadores JAAK.
API keyportal sessionadmin session