arrobaMail
Module 0426 endpoints

Lists /lists

Full management of lists, custom fields, import/export, and cleanup tools.

Endpoints

26 total
GET/listsUser

List lists with statistics

Example

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

Response 200

{
  "count": 12,
  "list": [
    {
      "id": 45, "encid": "xY7zW2", "nombre": "Clientes VIP",
      "dateCreated": "2025-01-15 08:30:00",
      "s_total": 3500, "s_active": 3200,
      "s_unsus": 150, "s_bkl": 100, "s_notconfirmed": 50
    }
  ]
}
GET/lists/dashboardUser

Lists analytics dashboard

Returns charts and aggregate metrics: daily growth, engagement per list, status distribution.

Example

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

Create new list

Name required. Checks the list limit for the plan.

Request body · application/json

NameTypeReq.Description
nombrestringYesList name
from_emailstringNoDefault sender email
from_namestringNoDefault sender name
descripcionstringNoList description

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "nombre": "...",
  "from_email": "...",
  "from_name": "...",
  "descripcion": "..."
}'

Response 201

{ "id": 45, "encid": "xY7zW2" }

Errors

StatusCodeDescription
400name_requiredName required
400max_lists_reachedList limit reached for your plan
GET/lists/:idUser

Full list detail with stats and custom fields

Path parameters

NameDescription
idNumeric list ID

Example

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

Update list properties

Editable fields: nombre, from_email, from_name, descripcion, image_logo.

Path parameters

NameDescription
idNumeric list ID

Request body · application/json

NameTypeReq.Description
nombrestringNoList name
from_emailstringNoDefault sender email
from_namestringNoDefault sender name
descripcionstringNoDescription
image_logostringNoLogo URL

Example

curl -X PUT "https://envios.arrobamail.com/v3/api/lists/{ID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "nombre": "...",
  "from_email": "...",
  "from_name": "...",
  "descripcion": "...",
  "image_logo": "..."
}'

Response 200

{ "success": true }
DELETE/lists/:idUser

Permanently delete list

Permanent, irreversible deletion. Subscribers and custom fields are deleted along with the list.

Path parameters

NameDescription
idNumeric list ID

Example

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

Response 200

{ "success": true }
POST/lists/:encid/exportUser

Export subscribers to CSV/XLSX

Path parameters

NameDescription
encidEncoded list ID

Request body · application/json

NameTypeReq.Description
statusstringNoBKL, UNSUS, NOT_CONFIRMED, ACTIVE, SUBSCRIBED

Example

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

Response 200

{ "fileName": "export-45.xlsx" }
GET/lists/:id/customFieldsUser

List the list's custom fields

Path parameters

NameDescription
idNumeric list ID

Example

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

Create custom field

Name unique within the list. Field limit not exceeded.

Path parameters

NameDescription
idNumeric list ID

Request body · application/json

NameTypeReq.Description
namestringYesField name
typestringYestext, dropdown, radio, date, multiline
requiredbooleanNoDefault: false
internalbooleanNoInternal field, not visible to the subscriber
defaultstringNoDefault value
optionsstring[]NoOptions for dropdown/radio

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/{ID}/customFields" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "...",
  "type": "...",
  "required": true,
  "internal": true,
  "default": "...",
  "options": ["..."]
}'
POST/lists/:id/customFields/copyUser

Copy custom fields from another list

Path parameters

NameDescription
idTarget list ID

Request body · application/json

NameTypeReq.Description
sourceListIdnumberYesSource list ID

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/{ID}/customFields/copy" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "sourceListId": 0
}'
GET/lists/:id/customField/:fidUser

Custom field detail

Path parameters

NameDescription
idNumeric list ID
fidCustom field ID

Example

curl -X GET "https://envios.arrobamail.com/v3/api/lists/{ID}/customField/{FID}" \
  -H "Authorization: Bearer $TOKEN"
PUT/lists/:id/customField/:fidUser

Update custom field

Path parameters

NameDescription
idNumeric list ID
fidCustom field ID

Request body · application/json

NameTypeReq.Description
namestringNoNew field name
requiredbooleanNoRequired
defaultstringNoDefault value
optionsstring[]NoOptions (dropdown/radio)

Example

curl -X PUT "https://envios.arrobamail.com/v3/api/lists/{ID}/customField/{FID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "...",
  "required": true,
  "default": "...",
  "options": ["..."]
}'

Response 200

{ "success": true }
DELETE/lists/:id/customField/:fidUser

Delete custom field

Path parameters

NameDescription
idNumeric list ID
fidCustom field ID

Example

curl -X DELETE "https://envios.arrobamail.com/v3/api/lists/{ID}/customField/{FID}" \
  -H "Authorization: Bearer $TOKEN"

Response 200

{ "success": true }
GET/lists/:id/subscribersUser

List subscribers with pagination

Path parameters

NameDescription
idNumeric list ID

Query params

NameTypeReq.DefaultDescription
limitnumberNo50Items per page (max 100)
offsetnumberNo0Offset
qstringNo-Search by email or name
statusstringNo-active, unsubscribed, blocked, pending
sortBystringNoemailemail, nombre, cdate, lastOpen
sortDirstringNoascasc or desc

Example

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

Response 200

{
  "paging": { "total": 3500, "limit": 50, "offset": 0, "pages": 70 },
  "list": [
    {
      "id": 5001, "sid": "sX9kL2",
      "email": "[email protected]",
      "nombre": "John Doe",
      "status": "active",
      "confirmado": true,
      "cdate": "2025-03-15 10:22:00"
    }
  ]
}
POST/lists/:id/subscribersUser

Create subscriber in the list

Path parameters

NameDescription
idNumeric list ID

Request body · application/json

NameTypeReq.Description
emailstringYesSubscriber email
nombrestringNoName
confirmadobooleanNoDefault: true
customFieldsobjectNo{ "fieldId": "value" }

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/{ID}/subscribers" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "...",
  "nombre": "...",
  "confirmado": true,
  "customFields": {}
}'

Errors

StatusCodeDescription
400email_requiredEmail required
400invalid_email_formatInvalid email format
409email_already_existsThe email already exists in the list
GET/lists/:id/subscribers/:sidUser

Subscriber detail with custom fields

Path parameters

NameDescription
idNumeric list ID
sidSubscriber ID

Example

curl -X GET "https://envios.arrobamail.com/v3/api/lists/{ID}/subscribers/{SID}" \
  -H "Authorization: Bearer $TOKEN"
GET/lists/:id/subscribers/:sid/historyUser

Subscriber activity history

Path parameters

NameDescription
idNumeric list ID
sidSubscriber ID

Example

curl -X GET "https://envios.arrobamail.com/v3/api/lists/{ID}/subscribers/{SID}/history" \
  -H "Authorization: Bearer $TOKEN"
GET/lists/:id/subscribers/:sid/campaignsUser

Campaigns received by the subscriber (last 90 days)

Path parameters

NameDescription
idNumeric list ID
sidSubscriber ID

Example

curl -X GET "https://envios.arrobamail.com/v3/api/lists/{ID}/subscribers/{SID}/campaigns" \
  -H "Authorization: Bearer $TOKEN"
PUT/lists/:id/subscribers/:sidUser

Update subscriber data

Path parameters

NameDescription
idNumeric list ID
sidSubscriber ID

Request body · application/json

NameTypeReq.Description
nombrestringNoName
customFieldsobjectNo{ "fieldId": "value" }

Example

curl -X PUT "https://envios.arrobamail.com/v3/api/lists/{ID}/subscribers/{SID}" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "nombre": "...",
  "customFields": {}
}'

Response 200

{ "success": true }
POST/lists/:id/tools/bulk-unsubscribeUser

Bulk unsubscribe/delete subscribers

Asynchronous operation. Real-time progress via Socket.io (event: bulkOperationProgress).

Path parameters

NameDescription
idNumeric list ID

Request body · application/json

NameTypeReq.Description
emailsstring[]YesArray of emails to process
actionstringYes"unsubscribe" or "delete"
scopestringYes"list" (this list only) or "global" (all lists)

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/{ID}/tools/bulk-unsubscribe" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "emails": ["..."],
  "action": "...",
  "scope": "..."
}'

Response 200

{ "started": true }
POST/lists/:id/tools/remove-inactiveUser

Delete inactive subscribers

Asynchronous operation with progress via Socket.io.

Path parameters

NameDescription
idNumeric list ID

Request body · application/json

NameTypeReq.Description
daysnumberYesDays of inactivity to consider inactive
actionstringYes"unsubscribe" or "delete"

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/{ID}/tools/remove-inactive" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "days": 0,
  "action": "..."
}'

Response 200

{ "started": true }
GET/lists/:id/tools/preview-inactiveUser

Preview of inactive subscribers

Path parameters

NameDescription
idNumeric list ID

Query params

NameTypeReq.DefaultDescription
daysnumberYes-Days of inactivity

Example

curl -X GET "https://envios.arrobamail.com/v3/api/lists/{ID}/tools/preview-inactive" \
  -H "Authorization: Bearer $TOKEN"

Response 200

{
  "totalSubscribers": 3500,
  "inactiveCount": 420,
  "activeCount": 3080,
  "inactivePercentage": 12.0
}
POST/lists/tools/inactive-cleanup/previewUser

Preview flexible cleanup of inactive contacts

Lets you preview inactive contacts in one or more lists before running the operation.

Request body · application/json

NameTypeReq.Description
listIdsarrayYesNumeric or encoded list IDs
daysnumberYes30, 60, 90, 120, 180, or 365
activitystringYesopens_or_clicks, opens or clicks

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/tools/inactive-cleanup/preview" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "listIds": [],
  "days": 0,
  "activity": "..."
}'

Response 200

{ "summary": { "totalAffected": 85, "totalEligible": 1200 }, "breakdown": [], "sample": [] }
POST/lists/tools/inactive-cleanup/executeUser

Run flexible cleanup of inactive contacts

Asynchronous operation with progress via Socket.io.

Request body · application/json

NameTypeReq.Description
listIdsarrayYesNumeric or encoded list IDs
daysnumberYes30, 60, 90, 120, 180, or 365
activitystringYesopens_or_clicks, opens or clicks
actionstringYesunsubscribe or delete

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/tools/inactive-cleanup/execute" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "listIds": [],
  "days": 0,
  "activity": "...",
  "action": "..."
}'

Response 200

{ "operationId": "abc123", "totalFound": 85, "message": "processing" }
POST/lists/:id/tools/import/analyzeUser

Analyze import file

Content-Type: multipart/form-data. Supports .xlsx, .xls, .csv, .txt (max 20MB) or plain text in the "text" field. Returns format, headers, preview, and fileId.

Path parameters

NameDescription
idNumeric list ID

Request body · multipart/form-data

NameTypeReq.Description
filefileNoFile .xlsx, .xls, .csv, or .txt (max 20MB)
textstringNoPlain text with emails (alternative to file)

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/{ID}/tools/import/analyze" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "file": "<archivo>",
  "text": "..."
}'

Errors

StatusCodeDescription
400no_inputNo file or text was sent
POST/lists/:id/tools/import/executeUser

Run subscriber import

Processes in the background with real-time progress via Socket.io (event: importProgress). Requires fileId (from the prior analysis) or text.

Path parameters

NameDescription
idNumeric list ID

Request body · application/json

NameTypeReq.Description
fileIdstringNoID of the previously analyzed file
textstringNoAlternative plain text
columnMappingobjectYesColumn mapping { columnIndex: fieldName }

Example

curl -X POST "https://envios.arrobamail.com/v3/api/lists/{ID}/tools/import/execute" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "fileId": "...",
  "text": "...",
  "columnMapping": {}
}'

Response 200

{ "started": true }

Errors

StatusCodeDescription
400no_inputNo data was sent
400no_email_columnEmail column not mapped
400file_not_foundFileId doesn't exist or expired

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