Query subscribers
curl -u 'username:password' 'https://listmonk.mysite.com/api/subscribers' \
-G \
-d 'page=1' \
-d 'per_page=100' \
-d 'list_id=1' \
-d 'subscription_status=confirmed'
Retrieves a paginated list of subscribers with optional filtering.
Authentication: Required
Permission: subscribers:get_all or subscribers:get
Query Parameters
Page number for pagination
Number of results per page (max 100)
SQL expression for advanced filtering (requires subscribers:sql_query permission)
Search term to filter subscribers by name or email
Filter by list ID (can be specified multiple times)
Filter by subscription status: unconfirmed, confirmed, or unsubscribed
Field to order by: id, email, name, created_at, updated_at
Response
Array of subscriber objects Unique UUID for the subscriber
Status: enabled, disabled, or blocklisted
Custom attributes as key-value pairs
Array of list subscriptions
The SQL query used for filtering
Total number of subscribers matching the query
Get subscriber
curl -u 'username:password' 'https://listmonk.mysite.com/api/subscribers/1'
Retrieves a single subscriber by ID.
Authentication: Required
Permission: subscribers:get_all or subscribers:get
Path Parameters
Response
Returns a single subscriber object with the same structure as the query endpoint.
Get subscriber activity
GET /api/subscribers/:id/activity
curl -u 'username:password' 'https://listmonk.mysite.com/api/subscribers/1/activity'
Retrieves a subscriber’s campaign views and link clicks.
Authentication: Required
Permission: subscribers:get_all or subscribers:get
Path Parameters
Response
Array of campaign view records
Array of link click records
Export subscriber data
GET /api/subscribers/:id/export
curl -u 'username:password' 'https://listmonk.mysite.com/api/subscribers/1/export' \
-o subscriber-data.json
Exports a subscriber’s complete data including profile, subscriptions, campaign views, and link clicks as JSON.
Authentication: Required
Permission: subscribers:get_all or subscribers:get
Path Parameters
Response
Returns a JSON file download containing the subscriber’s complete data.
Create subscriber
curl -u 'username:password' 'https://listmonk.mysite.com/api/subscribers' \
-H 'Content-Type: application/json' \
-d '{
"email": "john@example.com",
"name": "John Doe",
"status": "enabled",
"lists": [1, 2],
"attribs": {
"city": "Bangalore",
"projects": 3
},
"preconfirm_subscriptions": true
}'
Creates a new subscriber.
Authentication: Required
Permission: subscribers:manage
Request Body
Email address (must be valid and unique)
Subscriber name (max 2000 characters)
Subscriber status: enabled, disabled, or blocklisted
Array of list IDs to subscribe to
Custom attributes as key-value pairs (JSON object)
If true, subscriptions are marked as confirmed without sending opt-in email
Response
Returns the created subscriber object.
Update subscriber
curl -u 'username:password' -X PUT 'https://listmonk.mysite.com/api/subscribers/1' \
-H 'Content-Type: application/json' \
-d '{
"email": "john@example.com",
"name": "John Doe Updated",
"status": "enabled",
"lists": [1, 3],
"attribs": {
"city": "New York",
"projects": 5
},
"preconfirm_subscriptions": false
}'
Updates an existing subscriber.
Authentication: Required
Permission: subscribers:manage
Path Parameters
Request Body
Same parameters as create subscriber. All fields are optional - only provided fields will be updated.
Send opt-in email
POST /api/subscribers/:id/optin
curl -u 'username:password' -X POST 'https://listmonk.mysite.com/api/subscribers/1/optin'
Sends a double opt-in confirmation email to a subscriber.
Authentication: Required
Permission: subscribers:manage
Path Parameters
Blocklist subscriber
PUT /api/subscribers/:id/blocklist
curl -u 'username:password' -X PUT 'https://listmonk.mysite.com/api/subscribers/1/blocklist'
Blocklists a single subscriber.
Authentication: Required
Permission: subscribers:manage
Path Parameters
Blocklist subscribers (bulk)
PUT /api/subscribers/blocklist
curl -u 'username:password' -X PUT 'https://listmonk.mysite.com/api/subscribers/blocklist' \
-H 'Content-Type: application/json' \
-d '{"ids": [1, 2, 3]}'
Blocklists multiple subscribers.
Authentication: Required
Permission: subscribers:manage
Request Body
Array of subscriber IDs to blocklist
Manage subscriber lists
PUT /api/subscribers/lists/:id
curl -u 'username:password' -X PUT 'https://listmonk.mysite.com/api/subscribers/lists/1' \
-H 'Content-Type: application/json' \
-d '{
"ids": [1, 2, 3],
"action": "add",
"target_list_ids": [4, 5],
"status": "confirmed"
}'
Adds, removes, or unsubscribes subscribers from lists.
Authentication: Required
Permission: subscribers:manage
Path Parameters
List ID (optional when using request body ids)
Request Body
Action to perform: add, remove, or unsubscribe
Array of list IDs to perform action on
Subscription status when adding: unconfirmed, confirmed, or unsubscribed
Delete subscriber
DELETE /api/subscribers/:id
curl -u 'username:password' -X DELETE 'https://listmonk.mysite.com/api/subscribers/1'
Deletes a single subscriber permanently.
Authentication: Required
Permission: subscribers:manage
Path Parameters
Delete subscribers (bulk)
curl -u 'username:password' -X DELETE 'https://listmonk.mysite.com/api/subscribers?id=1&id=2&id=3'
Deletes multiple subscribers permanently.
Authentication: Required
Permission: subscribers:manage
Query Parameters
Subscriber ID (can be specified multiple times)
Delete subscribers by query
POST /api/subscribers/query/delete
curl -u 'username:password' -X POST 'https://listmonk.mysite.com/api/subscribers/query/delete' \
-H 'Content-Type: application/json' \
-d '{
"query": "subscribers.attribs->>\"city\" = \"Bangalore\"",
"list_ids": [1, 2],
"subscription_status": "unsubscribed"
}'
Deletes subscribers based on an arbitrary SQL query.
Authentication: Required
Permission: subscribers:manage and subscribers:sql_query
Request Body
SQL expression for filtering (requires subscribers:sql_query permission)
Search term to filter subscribers
Filter by subscription status
If true, deletes all subscribers (ignores other filters)
Blocklist subscribers by query
PUT /api/subscribers/query/blocklist
curl -u 'username:password' -X PUT 'https://listmonk.mysite.com/api/subscribers/query/blocklist' \
-H 'Content-Type: application/json' \
-d '{
"query": "subscribers.attribs->>\"bounced\" = \"true\""
}'
Blocklists subscribers based on an arbitrary SQL query.
Authentication: Required
Permission: subscribers:manage and subscribers:sql_query
Request Body
Same parameters as delete by query.
Manage subscriber lists by query
PUT /api/subscribers/query/lists
curl -u 'username:password' -X PUT 'https://listmonk.mysite.com/api/subscribers/query/lists' \
-H 'Content-Type: application/json' \
-d '{
"query": "subscribers.attribs->>\"city\" = \"Bangalore\"",
"action": "add",
"target_list_ids": [3],
"status": "confirmed"
}'
Manages list subscriptions for subscribers matching a query.
Authentication: Required
Permission: subscribers:manage and subscribers:sql_query
Request Body
SQL expression for filtering
Source list IDs to filter by
Target list IDs for the action
Action: add, remove, or unsubscribe
Subscription status when adding
Filter by current subscription status
Export subscribers (CSV)
GET /api/subscribers/export
curl -u 'username:password' 'https://listmonk.mysite.com/api/subscribers/export' \
-G \
-d 'list_id=1' \
-d 'subscription_status=confirmed' \
-o subscribers.csv
Exports subscribers as a CSV file.
Authentication: Required
Permission: subscribers:get_all or subscribers:get
Query Parameters
Export specific subscriber IDs (can be specified multiple times)
Filter by subscription status
SQL expression for filtering
Response
Returns a CSV file with columns: uuid, email, name, attributes, status, created_at, updated_at
Get subscriber bounces
GET /api/subscribers/:id/bounces
curl -u 'username:password' 'https://listmonk.mysite.com/api/subscribers/1/bounces'
Retrieves bounce records for a subscriber.
Authentication: Required
Permission: bounces:get
Path Parameters
Delete subscriber bounces
DELETE /api/subscribers/:id/bounces
curl -u 'username:password' -X DELETE 'https://listmonk.mysite.com/api/subscribers/1/bounces'
Deletes all bounce records for a subscriber.
Authentication: Required
Permission: bounces:manage
Path Parameters