arrobaMail
Módulo 0627 endpoints

Users /users

Endpoints marcados como Reseller requieren rol reseller o superior.

Endpoints

27 en total
GET/users/meUsuario

Datos del usuario autenticado

Ejemplo

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

Respuesta 200

{
  "id": 1234, "uname": "usuario", "email": "u@ejemplo.com",
  "nombre": "Juan", "apellido": "Pérez", "empresa": "Mi Empresa",
  "role": "user", "user_type": "pro", "parent_id": 100,
  "active": 1, "max_sends": 50000, "max_suscribers": 10000,
  "creditos": 45000, "reputation": 95, "lang": "es"
}
PUT/users/meUsuario

Actualizar perfil propio

Request body · application/json

NombreTipoReq.Descripción
nombrestringNoNombre
apellidostringNoApellido
emailstringNoEmail
empresastringNoEmpresa
telefonostringNoTeléfono
langstringNo"es" o "en"
timezonestringNoTimezone (e.g. "America/Buenos_Aires")

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/users/me" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "nombre": "...",
  "apellido": "...",
  "email": "...",
  "empresa": "...",
  "telefono": "...",
  "lang": "...",
  "timezone": "..."
}'

Respuesta 200

{ "success": true }
PUT/users/me/passwordUsuario

Cambiar contraseña

Invalida todas las sesiones activas en todos los dispositivos.

Request body · application/json

NombreTipoReq.Descripción
currentPasswordstringContraseña actual
newPasswordstringNueva contraseña

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/users/me/password" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "currentPassword": "...",
  "newPassword": "..."
}'

Respuesta 200

{ "success": true }
GET/users/me/aicreditsUsuario

Créditos de IA disponibles

Ejemplo

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

Respuesta 200

{
  "canGenerate": true,
  "monthlyAvailable": 45, "dailyAvailable": 8,
  "maxMonthlyGenerations": 50, "maxDailyGenerations": 10,
  "monthlyUsed": 5, "dailyUsed": 2
}
GET/users/me/public-configUsuario

Configuración pública global para la UI

Expone valores seguros para frontend combinando config.json y om_config. Incluye rate limits de eventos y límites de envíos de prueba.

Ejemplo

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

Respuesta 200

{
  "eventRateLimits": {
    "user": { "minute": 60, "hour": 1000, "day": 10000 },
    "global": { "minute": 600, "hour": 10000, "day": 100000 }
  },
  "testSendLimits": {
    "hourly": 10,
    "daily": 50
  }
}
GET/users/me/brand-kitsUsuario

Listar Kits de marca propios

Devuelve solo los Kits de marca del usuario autenticado.

Ejemplo

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

Respuesta 200

{
  "list": [
    { "id": 7, "status": "active", "isDefault": true, "revision": 2, "brandName": "Acme" }
  ]
}
POST/users/me/brand-kits/analyze-urlUsuario

Analizar URL para Kit de marca

Solo HTTPS. Bloquea URLs acortadas, privadas, internas y redirects cross-host.

Request body · application/json

NombreTipoReq.Descripción
urlstringURL HTTPS del sitio a analizar

Ejemplo

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

Respuesta 200

{
  "draft": { "brandName": "Acme", "primaryColor": "#112233", "toneOfVoice": "Directo" },
  "creditCost": 3,
  "poolBalanceAfter": 100
}

Errores

StatusCodeDescripción
400url_https_requiredLa URL debe usar HTTPS
400url_shortener_not_allowedHost en blacklist de shorteners
400url_private_host_not_allowedHost privado o interno
400url_private_ip_not_allowedIP privada, link-local o reservada
400url_cross_host_redirect_not_allowedRedirect a otro host
402insufficient_creditsCréditos IA insuficientes
429daily_limit_reachedLímite diario IA alcanzado
429monthly_limit_reachedLímite mensual IA alcanzado
429rate_limit_exceededDemasiados análisis seguidos
500internal_errorError interno no público
POST/users/me/brand-kits/analyze-campaignsUsuario

Analizar campañas anteriores para Kit de marca

Analiza hasta 5 campañas propias.

Request body · application/json

NombreTipoReq.Descripción
campaignIdsnumber[]IDs de campañas propias. Máximo 5.

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/users/me/brand-kits/analyze-campaigns" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "campaignIds": [0]
}'

Respuesta 200

{ "draft": { "brandName": "Acme", "ctaStyle": "Directo" } }

Errores

StatusCodeDescripción
400missing_campaignsLista vacía o inválida
400too_many_campaignsMás de 5 campañas
404campaign_not_foundCampaña inexistente o ajena al usuario
402insufficient_creditsCréditos IA insuficientes
429daily_limit_reachedLímite diario IA alcanzado
429monthly_limit_reachedLímite mensual IA alcanzado
429rate_limit_exceededDemasiados análisis seguidos
500internal_errorError interno no público
POST/users/me/brand-kitsUsuario

Crear Kit de marca

Crea un borrador editable.

Request body · application/json

NombreTipoReq.Descripción
namestringNoNombre interno del kit
brandNamestringNoNombre de marca
primaryColorstringNoColor hexadecimal #RRGGBB
toneOfVoicestringNoTono de voz

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/users/me/brand-kits" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "...",
  "brandName": "...",
  "primaryColor": "...",
  "toneOfVoice": "..."
}'

Respuesta 201

{ "kit": { "id": 7, "status": "draft", "revision": 1 } }

Errores

StatusCodeDescripción
400invalid_brand_kit_colorColor inválido
400invalid_text_densityDensidad de texto inválida
500brand_kit_create_failedNo se pudo crear el registro
500internal_errorError interno no público
503brand_kits_not_configuredFalta aplicar la migración de base de datos
PATCH/users/me/brand-kits/:idUsuario

Actualizar Kit de marca

Solo permite actualizar kits propios. Incrementa revision.

Parámetros de ruta

NombreDescripción
idID numérico del kit

Request body · application/json

NombreTipoReq.Descripción
brandNamestringNoNombre de marca
visualStylestringNoEstilo visual

Ejemplo

curl -X PATCH "https://envios.arrobamail.com/v3/api/users/me/brand-kits/{ID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "brandName": "...",
  "visualStyle": "..."
}'

Respuesta 200

{ "kit": { "id": 7, "revision": 2 } }

Errores

StatusCodeDescripción
400invalid_brand_kit_colorColor inválido
400invalid_text_densityDensidad de texto inválida
404brand_kit_not_foundNo existe o no pertenece al usuario
500internal_errorError interno no público
503brand_kits_not_configuredFalta aplicar la migración de base de datos
POST/users/me/brand-kits/:id/activateUsuario

Activar Kit de marca

Marca el kit como activo/default para futuras generaciones IA.

Parámetros de ruta

NombreDescripción
idID numérico del kit

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/users/me/brand-kits/{ID}/activate" \
  -H "Authorization: Bearer $TOKEN"

Respuesta 200

{ "kit": { "id": 7, "status": "active", "isDefault": true } }

Errores

StatusCodeDescripción
404brand_kit_not_foundNo existe o no pertenece al usuario
500internal_errorError interno no público
503brand_kits_not_configuredFalta aplicar la migración de base de datos
GET/users/:idReseller

Datos de un usuario específico

Parámetros de ruta

NombreDescripción
idID numérico del usuario

Ejemplo

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

Listar sub-usuarios

Parámetros de ruta

NombreDescripción
idID del reseller padre

Query params

NombreTipoReq.DefaultDescripción
offsetnumberNo0Desplazamiento
limitnumberNo25Items por página
userTypestringNo-Filtro por tipo de usuario
searchStringstringNo-Búsqueda por email/username
sortBystringNo-Campo de ordenamiento
sortDescbooleanNofalseOrden descendente

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/users/{ID}/list" \
  -H "Authorization: Bearer $TOKEN"
POST/users/:idReseller

Crear sub-usuario

Parámetros de ruta

NombreDescripción
idID del reseller padre

Request body · application/json

NombreTipoReq.Descripción
unamestringUsername
passstringContraseña
emailstringEmail
max_sendsnumberNoLímite de envíos por mes
max_suscribersnumberNoLímite de suscriptores
creditosnumberNoCréditos iniciales

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/users/{ID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "uname": "...",
  "pass": "...",
  "email": "...",
  "max_sends": 0,
  "max_suscribers": 0,
  "creditos": 0
}'
PUT/users/:idReseller

Actualizar sub-usuario

Parámetros de ruta

NombreDescripción
idID del usuario a actualizar

Request body · application/json

NombreTipoReq.Descripción
max_sendsnumberNoLímite de envíos
max_suscribersnumberNoLímite de suscriptores
activenumberNo1 = activo, 0 = inactivo

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/users/{ID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "max_sends": 0,
  "max_suscribers": 0,
  "active": 0
}'

Respuesta 200

{ "success": true }
PUT/users/:id/creditsReseller

Actualizar créditos de un usuario

Parámetros de ruta

NombreDescripción
idID del usuario

Request body · application/json

NombreTipoReq.Descripción
amountnumberCantidad de créditos a asignar

Ejemplo

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

Respuesta 200

{ "success": true }
GET/users/me/filesUsuario

Listar archivos y carpetas

Query params

NombreTipoReq.DefaultDescripción
folderstringNo/Ruta de carpeta a listar

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/users/me/files" \
  -H "Authorization: Bearer $TOKEN"
POST/users/me/filesUsuario

Subir archivo

Content-Type: multipart/form-data. Validación de imagen con Sharp.

Request body · multipart/form-data

NombreTipoReq.Descripción
filefileArchivo de imagen
folderstringNoCarpeta destino (default: "/")

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/users/me/files" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "file": "<archivo>",
  "folder": "..."
}'
DELETE/users/me/filesUsuario

Eliminar archivo o carpeta

Request body · application/json

NombreTipoReq.Descripción
filePathstringRuta del archivo o carpeta

Ejemplo

curl -X DELETE "https://envios.arrobamail.com/v3/api/users/me/files" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "filePath": "..."
}'

Respuesta 200

{ "success": true }
POST/users/me/files/folderUsuario

Crear carpeta

Request body · application/json

NombreTipoReq.Descripción
folderNamestringNombre alfanumérico de la carpeta
folderstringNoRuta base (default: "/")

Ejemplo

curl -X POST "https://envios.arrobamail.com/v3/api/users/me/files/folder" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "folderName": "...",
  "folder": "..."
}'
PUT/users/me/files/renameUsuario

Renombrar archivo o carpeta

Request body · application/json

NombreTipoReq.Descripción
filePathstringRuta actual del archivo/carpeta
newNamestringNuevo nombre

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/users/me/files/rename" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "filePath": "...",
  "newName": "..."
}'

Respuesta 200

{ "success": true }
GET/users/me/ipsReseller

Listar IPs asignadas

Ejemplo

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

Estado y configuración de una IP

Parámetros de ruta

NombreDescripción
ipDirección IP (e.g. 192.168.1.1)

Ejemplo

curl -X GET "https://envios.arrobamail.com/v3/api/users/me/ips/{IP}" \
  -H "Authorization: Bearer $TOKEN"
PUT/users/me/ips/:ip/hostnameReseller

Actualizar hostname de IP

Parámetros de ruta

NombreDescripción
ipDirección IP

Request body · application/json

NombreTipoReq.Descripción
hostnamestringNuevo hostname

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/users/me/ips/{IP}/hostname" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "hostname": "..."
}'

Respuesta 200

{ "success": true }
PUT/users/me/smtps/:smtpId/ownerReseller

Cambiar propietario de SMTP

Parámetros de ruta

NombreDescripción
smtpIdID del servidor SMTP

Request body · application/json

NombreTipoReq.Descripción
userIdnumberID del nuevo propietario

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/users/me/smtps/{SMTPID}/owner" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "userId": 0
}'

Respuesta 200

{ "success": true }
PUT/users/me/smtps/:smtpId/activateReseller

Activar o desactivar SMTP

Parámetros de ruta

NombreDescripción
smtpIdID del servidor SMTP

Request body · application/json

NombreTipoReq.Descripción
activebooleantrue para activar, false para desactivar

Ejemplo

curl -X PUT "https://envios.arrobamail.com/v3/api/users/me/smtps/{SMTPID}/activate" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "active": true
}'

Respuesta 200

{ "success": true }
GET/users/:id/sendersReseller

Remitentes de un usuario

Parámetros de ruta

NombreDescripción
idID del usuario

Ejemplo

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

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