arrobaMail
Module 0627 endpoints

Users /users

Endpoints marked as Reseller require a reseller role or higher.

Endpoints

27 total
GET/users/meUser

Authenticated user data

Example

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

Response 200

{
  "id": 1234, "uname": "usuario", "email": "[email protected]",
  "nombre": "John", "apellido": "Doe", "empresa": "My Company",
  "role": "user", "user_type": "pro", "parent_id": 100,
  "active": 1, "max_sends": 50000, "max_suscribers": 10000,
  "creditos": 45000, "reputation": 95, "lang": "en"
}
PUT/users/meUser

Update own profile

Request body · application/json

NameTypeReq.Description
nombrestringNoName
apellidostringNoLast name
emailstringNoEmail
empresastringNoCompany
telefonostringNoPhone
langstringNo"es" or "en"
timezonestringNoTimezone (e.g. "America/Buenos_Aires")

Example

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": "..."
}'

Response 200

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

Change password

Invalidates all active sessions on all devices.

Request body · application/json

NameTypeReq.Description
currentPasswordstringYesCurrent password
newPasswordstringYesNew password

Example

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

Response 200

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

Available AI credits

Example

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

Response 200

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

Global public configuration for the UI

Exposes safe values for the frontend by combining config.json and om_config. Includes event rate limits and test-send limits.

Example

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

Response 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-kitsUser

List own brand kits

Returns only the authenticated user's brand kits.

Example

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

Response 200

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

Analyze URL for brand kit

HTTPS only. Blocks shortened, private, internal URLs, and cross-host redirects.

Request body · application/json

NameTypeReq.Description
urlstringYesHTTPS URL of the site to analyze

Example

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": "..."
}'

Response 200

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

Errors

StatusCodeDescription
400url_https_requiredThe URL must use HTTPS
400url_shortener_not_allowedHost is on the URL-shortener blacklist
400url_private_host_not_allowedPrivate or internal host
400url_private_ip_not_allowedPrivate, link-local, or reserved IP
400url_cross_host_redirect_not_allowedRedirect to another host
402insufficient_creditsInsufficient AI credits
429daily_limit_reachedDaily AI limit reached
429monthly_limit_reachedMonthly AI limit reached
429rate_limit_exceededToo many consecutive analyses
500internal_errorInternal, non-public error
POST/users/me/brand-kits/analyze-campaignsUser

Analyze past campaigns for brand kit

Analyzes up to 5 of your own campaigns.

Request body · application/json

NameTypeReq.Description
campaignIdsnumber[]YesOwn campaign IDs. Maximum 5.

Example

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]
}'

Response 200

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

Errors

StatusCodeDescription
400missing_campaignsEmpty or invalid list
400too_many_campaignsMore than 5 campaigns
404campaign_not_foundCampaign doesn't exist or doesn't belong to the user
402insufficient_creditsInsufficient AI credits
429daily_limit_reachedDaily AI limit reached
429monthly_limit_reachedMonthly AI limit reached
429rate_limit_exceededToo many consecutive analyses
500internal_errorInternal, non-public error
POST/users/me/brand-kitsUser

Create brand kit

Creates an editable draft.

Request body · application/json

NameTypeReq.Description
namestringNoInternal kit name
brandNamestringNoBrand name
primaryColorstringNoHex color #RRGGBB
toneOfVoicestringNoTone of voice

Example

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": "..."
}'

Response 201

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

Errors

StatusCodeDescription
400invalid_brand_kit_colorInvalid color
400invalid_text_densityInvalid text density
500brand_kit_create_failedCould not create the record
500internal_errorInternal, non-public error
503brand_kits_not_configuredDatabase migration has not been applied yet
PATCH/users/me/brand-kits/:idUser

Update brand kit

Only allows updating your own kits. Increments revision.

Path parameters

NameDescription
idNumeric kit ID

Request body · application/json

NameTypeReq.Description
brandNamestringNoBrand name
visualStylestringNoVisual style

Example

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": "..."
}'

Response 200

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

Errors

StatusCodeDescription
400invalid_brand_kit_colorInvalid color
400invalid_text_densityInvalid text density
404brand_kit_not_foundDoesn't exist or doesn't belong to the user
500internal_errorInternal, non-public error
503brand_kits_not_configuredDatabase migration has not been applied yet
POST/users/me/brand-kits/:id/activateUser

Activate brand kit

Marks the kit as active/default for future AI generations.

Path parameters

NameDescription
idNumeric kit ID

Example

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

Response 200

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

Errors

StatusCodeDescription
404brand_kit_not_foundDoesn't exist or doesn't belong to the user
500internal_errorInternal, non-public error
503brand_kits_not_configuredDatabase migration has not been applied yet
GET/users/:idReseller

Data for a specific user

Path parameters

NameDescription
idNumeric user ID

Example

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

List sub-users

Path parameters

NameDescription
idParent reseller ID

Query params

NameTypeReq.DefaultDescription
offsetnumberNo0Offset
limitnumberNo25Items per page
userTypestringNo-Filter by user type
searchStringstringNo-Search by email/username
sortBystringNo-Sort field
sortDescbooleanNofalseDescending order

Example

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

Create sub-user

Path parameters

NameDescription
idParent reseller ID

Request body · application/json

NameTypeReq.Description
unamestringYesUsername
passstringYesPassword
emailstringYesEmail
max_sendsnumberNoMonthly send limit
max_suscribersnumberNoSubscriber limit
creditosnumberNoInitial credits

Example

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

Update sub-user

Path parameters

NameDescription
idID of the user to update

Request body · application/json

NameTypeReq.Description
max_sendsnumberNoSend limit
max_suscribersnumberNoSubscriber limit
activenumberNo1 = active, 0 = inactive

Example

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
}'

Response 200

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

Update a user's credits

Path parameters

NameDescription
idUser ID

Request body · application/json

NameTypeReq.Description
amountnumberYesNumber of credits to assign

Example

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

Response 200

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

List files and folders

Query params

NameTypeReq.DefaultDescription
folderstringNo/Folder path to list

Example

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

Upload file

Content-Type: multipart/form-data. Image validation with Sharp.

Request body · multipart/form-data

NameTypeReq.Description
filefileYesImage file
folderstringNoDestination folder (default: "/")

Example

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/filesUser

Delete file or folder

Request body · application/json

NameTypeReq.Description
filePathstringYesFile or folder path

Example

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

Response 200

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

Create folder

Request body · application/json

NameTypeReq.Description
folderNamestringYesAlphanumeric folder name
folderstringNoBase path (default: "/")

Example

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/renameUser

Rename file or folder

Request body · application/json

NameTypeReq.Description
filePathstringYesCurrent file/folder path
newNamestringYesNew name

Example

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": "..."
}'

Response 200

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

List assigned IPs

Example

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

Status and configuration of an IP

Path parameters

NameDescription
ipIP address (e.g. 192.168.1.1)

Example

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

Update IP hostname

Path parameters

NameDescription
ipIP address

Request body · application/json

NameTypeReq.Description
hostnamestringYesNew hostname

Example

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": "..."
}'

Response 200

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

Change SMTP owner

Path parameters

NameDescription
smtpIdSMTP server ID

Request body · application/json

NameTypeReq.Description
userIdnumberYesNew owner ID

Example

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
}'

Response 200

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

Activate or deactivate SMTP

Path parameters

NameDescription
smtpIdSMTP server ID

Request body · application/json

NameTypeReq.Description
activebooleanYestrue to activate, false to deactivate

Example

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
}'

Response 200

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

A user's senders

Path parameters

NameDescription
idUser ID

Example

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

Get started with arrobaMail
in under 5 minutes.

Free plan, AI generations included, no credit card required — and real support from a real team.

Try it free now
WhatsAppOur team replies