arrobaMail
Módulo 0325 endpoints

Campaigns /campaigns

Admin sin restricción. Reseller ve campañas de sus sub-usuarios. Usuario solo sus propias campañas.

Endpoints

25 en total
GET/campaignsUsuario

Listar campañas con paginación

Query params

NombreTipoReq.DefaultDescripción
limitnumberNo25Items por página
offsetnumberNo0Desplazamiento
statusstringNo-active, completed, draft, paused, stopped
qstringNo-Búsqueda por nombre o asunto

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{
  "paging": { "total": 150, "limit": 25, "offset": 0, "pages": 6 },
  "list": [
    {
      "id": 12345,
      "encid": "1A2B3C",
      "camp_name": "Newsletter Mayo",
      "asunto": "Novedades de Mayo 2025",
      "status": 3,
      "from_name": "Empresa ABC",
      "from_mail": "info@Empresa ABC.com",
      "dateCreated": "2025-05-01 10:30:00",
      "suscribers": 5000,
      "sents": 4850,
      "stats": { "opens": 1200, "clicks": 340, "bounces": 45, "unsubscribes": 12 }
    }
  ]
}
POST/campaignsUsuario

Crear y encolar campaña para envío

from_mail debe ser remitente verificado. Verifica cuota de envío. Detecta duplicados (mismas listas + asunto en 24h). Anti-spam en from_name.

Request body · application/json

NombreTipoReq.Descripción
camp_namestringNombre interno de la campaña
asuntostringAsunto del email
htmlstringContenido HTML
from_namestringNombre del remitente
from_mailstringEmail remitente verificado
list_idstring[]Array de IDs codificados de listas
preheaderstringNoTexto de previsualización
textostringNoVersión texto plano
reply_tostringNoEmail para respuestas
seidnumberNoID de segmentación
track_linksnumberNo1 = habilitar tracking de links
track_readsnumberNo1 = habilitar tracking de aperturas
track_convnumberNo1 = habilitar tracking de conversiones
g_analyticsobjectNoConfig de Google Analytics
draftIdnumberNoID de borrador a convertir

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/campaigns" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "camp_name": "...",
  "asunto": "...",
  "html": "...",
  "from_name": "...",
  "from_mail": "...",
  "list_id": ["..."],
  "preheader": "...",
  "texto": "...",
  "reply_to": "...",
  "seid": 0,
  "track_links": 0,
  "track_reads": 0,
  "track_conv": 0,
  "g_analytics": {},
  "draftId": 0
}'

Respuesta 201

{
  "success": 1,
  "mid": 12345,
  "subscribers": 5000
}

Errores

StatusCodeDescripción
400invalid_senderRemitente no verificado
400subject_requiredAsunto requerido
400html_requiredHTML requerido
400lists_requiredAl menos una lista requerida
400duplicate_campaignCampaña duplicada en las últimas 24h
400quota_exceededCuota de envíos excedida
400spamlike_sender_nameNombre remitente similar a spam
POST/campaigns/testUsuario

Enviar email de prueba

Hash de contenido previene duplicados en 10 minutos.

Request body · application/json

NombreTipoReq.Descripción
emailstringEmail destino de la prueba
subjectstringAsunto
htmlstringContenido HTML
from_namestringNoNombre remitente
from_mailstringNoEmail remitente

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/campaigns/test" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "...",
  "subject": "...",
  "html": "...",
  "from_name": "...",
  "from_mail": "..."
}'

Respuesta 200

{ "success": true }
GET/campaigns/:encidUsuario

Detalle completo de campaña

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña (formato "1A2B3C" o numérico)

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{
  "id": 12345,
  "encid": "1A2B3C",
  "camp_name": "Newsletter Mayo",
  "asunto": "Novedades de Mayo 2025",
  "preheader": "Descubrí las novedades",
  "status": 3,
  "from_name": "Empresa ABC",
  "from_mail": "info@Empresa ABC.com",
  "reply_to": "r@Empresa ABC.com",
  "track_links": 1,
  "track_reads": 1,
  "dateCreated": "2025-05-01 10:30:00",
  "dateStart": "2025-05-01 10:35:00",
  "dateEnd": "2025-05-01 11:45:00",
  "suscribers": 5000,
  "sents": 4850,
  "stats": {
    "opens": 1200, "unique_opens": 980,
    "clicks": 340, "unique_clicks": 210,
    "bounces": 45, "hard_bounces": 12,
    "unsubscribes": 12, "complaints": 2
  }
}
GET/campaigns/:encid/bodyUsuario

Contenido HTML/texto de la campaña

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Query params

NombreTipoReq.DefaultDescripción
imagesFullPathbooleanNofalseConvertir paths relativos a URLs absolutas

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/body" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{
  "id": 12345,
  "html": "<html>...</html>",
  "texto": "Versión texto plano...",
  "asunto": "Novedades de Mayo 2025",
  "camp_name": "Newsletter Mayo"
}
GET/campaigns/:encid/stats/subscribersLogsUsuario

Exportar logs de suscriptores (Excel)

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/stats/subscribersLogs" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{
  "fileName": "CampaignSubscribersLog-12345.xlsx",
  "date": "2025-05-03 15:30:00"
}
GET/campaigns/:encid/stats/subscriber-actionsUsuario

Acciones de suscriptores paginadas

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Query params

NombreTipoReq.DefaultDescripción
pageintNo1Página
limitintNo50Items por página (25, 50, 100)
actionstringNo-open, click, bounce, complaint, unsubscribe, subscribe, blocked
emailstringNo-Búsqueda parcial de email
dateFromintNo-Timestamp Unix
dateTointNo-Timestamp Unix
bounceTypestringNo-hard, soft, spam, invalid, preblocked
sortstringNodate_descdate_desc, date_asc, email_asc, email_desc

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/stats/subscriber-actions" \
  -H "Authorization: Bearer $TOKEN"
GET/campaigns/:encid/stats/opens-subscribersUsuario

Suscriptores con aperturas paginados

Lista suscriptores que abrieron una campaña no archivada, con primera apertura y cantidad de lecturas.

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Query params

NombreTipoReq.DefaultDescripción
pageintNo1Página
limitintNo50Items por página (25, 50, 100)
emailstringNo-Búsqueda parcial de email
listIdintNo-Filtrar por lista
sortstringNoreads_descreads_desc, reads_asc, first_open_desc, first_open_asc, email_asc, email_desc

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/stats/opens-subscribers" \
  -H "Authorization: Bearer $TOKEN"
GET/campaigns/:encid/stats/opens-subscribers/exportUsuario

Exportar listado detallado de aperturas

Genera un Excel con todos los suscriptores que abrieron una campaña no archivada. Incluye email, lista, aperturas totales y primera apertura. El archivo se cachea 10 minutos por campaña.

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/stats/opens-subscribers/export" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{ "fileName": "CampaignOpenSubscribers-12345.xlsx", "date": "2026-05-27T14:00:00.000Z", "exported": 116 }

Errores

StatusCodeDescripción
400campaign_archivedLa campaña está archivada y el detalle ya no está disponible.
GET/campaigns/:encid/stats/click-qualityUsuario

Calidad de clicks de links

Separa clicks crudos, probablemente humanos, probablemente bot y sin clasificar por campaña y por link.

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/stats/click-quality" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{
  "campaign_id": 12345,
  "quality": {
    "raw_unique_clickers": 120,
    "trusted_unique_clickers": 96,
    "bot_likely_unique": 18,
    "unknown_unique": 6
  },
  "links": []
}
GET/campaigns/:encid/stats/subscriber-actions/urlsUsuario

URLs únicas de clicks

Retorna las URLs trackeadas únicas en la campaña con sus conteos de clicks.

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/stats/subscriber-actions/urls" \
  -H "Authorization: Bearer $TOKEN"
PATCH/campaigns/:encidUsuario

Actualizar campos de campaña

Solo los campos enviados se modifican. Campos editables: camp_name, asunto, preheader, html, texto, from_name, from_mail, reply_to, track_links, track_reads.

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Request body · application/json

NombreTipoReq.Descripción
camp_namestringNoNombre interno
asuntostringNoAsunto del email
preheaderstringNoTexto de previsualización
htmlstringNoContenido HTML
from_namestringNoNombre remitente
from_mailstringNoEmail remitente
track_linksnumberNo0 o 1
track_readsnumberNo0 o 1

Ejemplo

curl -X PATCH "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "camp_name": "...",
  "asunto": "...",
  "preheader": "...",
  "html": "...",
  "from_name": "...",
  "from_mail": "...",
  "track_links": 0,
  "track_reads": 0
}'

Respuesta 200

{ "success": true }
DELETE/campaigns/:encidUsuario

Eliminar campaña

Superadmin: eliminación física. Otros roles: soft delete (active=6).

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X DELETE "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{ "success": true }
PUT/campaigns/:encid/status/resumeUsuario

Reanudar campaña pausada

La campaña debe tener status 4 (pausada).

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/status/resume" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{ "success": true }

Errores

StatusCodeDescripción
400status_not_pausedLa campaña no está pausada
PUT/campaigns/:encid/status/stopUsuario

Pausar campaña activa

La campaña debe tener status 0, 1 o 3.

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/status/stop" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{ "success": true }

Errores

StatusCodeDescripción
400status_not_activeLa campaña no está activa
PUT/campaigns/:encid/status/approveReseller

Aprobar campaña en espera

La campaña debe tener on_hold=1. El usuario que aprueba debe ser padre/reseller del dueño.

Parámetros de ruta

NombreDescripción
encidID codificado de la campaña

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/campaigns/{ENCID}/status/approve" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{ "success": true }
POST/campaigns/countRecipientsUsuario

Contar destinatarios de listas/segmentación

Request body · application/json

NombreTipoReq.Descripción
lidsstring[]IDs codificados de listas
seidnumberNoID de segmentación
active_subs_onlybooleanNoSolo suscriptores activos

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/campaigns/countRecipients" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "lids": ["..."],
  "seid": 0,
  "active_subs_only": true
}'

Respuesta 200

{ "destinatarios": 5000 }
POST/campaigns/importFromUrlUsuario

Importar HTML desde URL

URL válida y accesible. Scripts removidos del HTML importado.

Request body · application/json

NombreTipoReq.Descripción
urlstringURL HTTP/HTTPS accesible

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/campaigns/importFromUrl" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "..."
}'

Respuesta 200

{ "html": "<html>...</html>" }

Errores

StatusCodeDescripción
400invalid_urlFormato de URL inválido
400cant_access_urlNo se pudo acceder a la URL
GET/campaigns/draft/:idUsuario

Obtener borrador

El borrador debe pertenecer al usuario autenticado.

Parámetros de ruta

NombreDescripción
idID numérico del borrador

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/campaigns/draft/{ID}" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{
  "id": 456,
  "camp_data": {
    "name": "Borrador Newsletter Mayo",
    "from_mail": "info@Empresa ABC.com",
    "from_name": "Empresa ABC",
    "subject": "Novedades de Mayo 2025",
    "html": "<html>...</html>",
    "list_id": [1, 3],
    "templateId": 10
  },
  "dateCreated": "2025-05-02 14:22:00",
  "dateModified": "2025-05-03 09:15:00"
}
POST/campaigns/draftUsuario

Guardar borrador

Request body · application/json

NombreTipoReq.Descripción
camp_data.namestringNombre del borrador
camp_data.from_mailstringNoEmail remitente
camp_data.from_namestringNoNombre remitente
camp_data.subjectstringNoAsunto
camp_data.htmlstringNoHTML
camp_data.list_idnumber[]NoIDs de listas
camp_data.templateIdnumberNoID de template

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/campaigns/draft" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "camp_data.name": "...",
  "camp_data.from_mail": "...",
  "camp_data.from_name": "...",
  "camp_data.subject": "...",
  "camp_data.html": "...",
  "camp_data.list_id": [0],
  "camp_data.templateId": 0
}'

Respuesta 201

{ "id": 456 }
PUT/campaigns/draft/:idUsuario

Actualizar borrador

Mismos campos que POST /campaigns/draft. Merge parcial.

Parámetros de ruta

NombreDescripción
idID numérico del borrador

Request body · application/json

NombreTipoReq.Descripción
camp_dataobjectCampos a actualizar (merge parcial)

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/campaigns/draft/{ID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "camp_data": {}
}'

Respuesta 200

{ "success": true }
POST/campaigns/spamlikeCheckUsuario

Verificar similitud con spam

Request body · application/json

NombreTipoReq.Descripción
subjectstringAsunto a evaluar
bodystringContenido HTML a evaluar

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/campaigns/spamlikeCheck" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "subject": "...",
  "body": "..."
}'

Respuesta 200

{
  "score": 3.5,
  "threshold": 5.0,
  "isSpam": false,
  "details": { "subject_score": 1.2, "body_score": 2.3 }
}
POST/campaigns/generateUsuario

Generar contenido con IA

Sujeto a límites diarios y mensuales. Rate limit: 2/min, 10/hora.

Request body · application/json

NombreTipoReq.Descripción
typestring"campaignContent" o "subjectandpreheader"
promptstringNoPrompt para tipo campaignContent
body_htmlstringNoHTML existente para tipo subjectandpreheader
imagesstring[]NoURLs de imágenes de referencia
useBrandKitbooleanNoDefault true. Si es false no usa el Kit de marca activo

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/campaigns/generate" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "...",
  "prompt": "...",
  "body_html": "...",
  "images": ["..."],
  "useBrandKit": true
}'

Errores

StatusCodeDescripción
429daily_limit_reachedLímite diario alcanzado
429monthly_limit_reachedLímite mensual alcanzado
429per_minute_limit_exceededDemasiadas peticiones por minuto
503ai_unavailableServicio de IA no disponible
PUT/campaigns/generationLogs/:generationId/feedbackUsuario

Enviar feedback sobre generación IA

Parámetros de ruta

NombreDescripción
generationIdID del log de generación IA

Request body · application/json

NombreTipoReq.Descripción
ratingintegerNoPuntuación del 1 al 5
userCommentsstringNoComentarios del usuario

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/campaigns/generationLogs/{GENERATIONID}/feedback" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "rating": 0,
  "userComments": "..."
}'

Respuesta 200

{ "success": true }

Empezá con arrobaMail
en menos de 5 minutos.

Plan Gratuito, generaciones de IA incluidas, sin tarjeta de crédito y soporte real en español.

Probar gratis ahora
WhatsAppTe responde el equipo