Contact lists
Named, hand-picked groups of contacts, for example beta testers. Target them from a broadcast with audience_filter: { lists: [id] }.
Being on a list is not consent: broadcasts still skip unsubscribed contacts and topic opt-outs.
type ContactList = {
id: string; // lst_…
name: string; description: string | null;
contact_count: number; // all members
active_count: number; // members with status "active"
created_at: string; updated_at: string;
};curl https://api.mailpark.io/v1/lists \
-H "Authorization: Bearer $MAILPARK_API_KEY"{
"data": [
{
"id": "lst_beta",
"name": "Beta testers",
"description": "People who asked to try features early.",
"contact_count": 42,
"active_count": 40,
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-22T10:02:11Z"
}
],
"next_cursor": null
}Create a list
/v1/listsA new, empty list. Names are unique per account.
contacts:writeBody
namestringrequiredShown in the web app.
descriptionstringWhat the list is for.
Errors
curl -X POST https://api.mailpark.io/v1/lists \
-H "Authorization: Bearer $MAILPARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Beta testers",
"description": "People who asked to try features early."
}'{
"id": "lst_beta",
"name": "Beta testers",
"description": "People who asked to try features early.",
"contact_count": 0,
"active_count": 0,
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-22T10:02:11Z"
}curl https://api.mailpark.io/v1/lists/lst_beta \
-H "Authorization: Bearer $MAILPARK_API_KEY"{
"id": "lst_beta",
"name": "Beta testers",
"description": "People who asked to try features early.",
"contact_count": 42,
"active_count": 40,
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-22T10:02:11Z"
}Rename a list
/v1/lists/{id}Changes the name or description.
contacts:writePath parameters
idstringrequiredlst_…
Body
namestringNew name.
descriptionstringNew description.
curl -X PATCH https://api.mailpark.io/v1/lists/lst_beta \
-H "Authorization: Bearer $MAILPARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Early access"
}'{
"id": "lst_beta",
"name": "Early access",
"description": "People who asked to try features early.",
"contact_count": 42,
"active_count": 40,
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-22T10:02:11Z"
}Delete a list
/v1/lists/{id}Deletes the list. Its contacts stay. Refused while an unfinished broadcast targets it.
contacts:writePath parameters
idstringrequiredlst_…
Errors
curl -X DELETE https://api.mailpark.io/v1/lists/lst_beta \
-H "Authorization: Bearer $MAILPARK_API_KEY"{
"deleted": true,
"id": "lst_beta",
"members_removed": 42
}List members
/v1/lists/{id}/contactsThe contacts on a list.
logs:readPath parameters
idstringrequiredlst_…
Query parameters
statusstringactive,unsubscribed,bouncedorcomplained.limitintegerHow many to return, 1–100. Default 50.
cursorstringThe
next_cursorfrom the previous page.
curl https://api.mailpark.io/v1/lists/lst_beta/contacts \
-H "Authorization: Bearer $MAILPARK_API_KEY"{
"data": [
{
"id": "con_7Yt1",
"email": "jane@example.com",
"external_id": "user_123",
"fields": {
"first_name": "Jane",
"plan": "trial"
},
"topics": {
"product-updates": true,
"onboarding": true
},
"lists": [
"lst_beta"
],
"status": "active",
"flags": [],
"ev": {
"signed_up": {
"first": "2026-10-20T09:00:00Z",
"last": "2026-10-20T09:00:00Z",
"count": 1
}
},
"created_at": "2026-10-20T09:00:00Z",
"updated_at": "2026-10-22T10:02:11Z"
}
],
"next_cursor": null
}Add members
/v1/lists/{id}/contactsAdds contacts by email or id, up to 1,000 of each per request. Unknown emails become new contacts.
contacts:writePath parameters
idstringrequiredlst_…
Body
emailsstring[]Email addresses.
contact_idsstring[]Contact ids.
curl -X POST https://api.mailpark.io/v1/lists/lst_beta/contacts \
-H "Authorization: Bearer $MAILPARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"jane@example.com",
"sam@example.com"
]
}'{
"id": "lst_beta",
"name": "Beta testers",
"description": "People who asked to try features early.",
"contact_count": 44,
"active_count": 42,
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-22T10:02:11Z",
"added": 2,
"already_members": 0,
"created": 1,
"not_found": []
}Remove members
/v1/lists/{id}/contacts/removeTakes contacts off the list. The contacts themselves stay.
contacts:writePath parameters
idstringrequiredlst_…
Body
emailsstring[]Email addresses.
contact_idsstring[]Contact ids.
curl -X POST https://api.mailpark.io/v1/lists/lst_beta/contacts/remove \
-H "Authorization: Bearer $MAILPARK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"sam@example.com"
]
}'{
"id": "lst_beta",
"name": "Beta testers",
"description": "People who asked to try features early.",
"contact_count": 41,
"active_count": 39,
"created_at": "2026-10-01T12:00:00Z",
"updated_at": "2026-10-22T10:02:11Z",
"removed": 1,
"not_found": []
}