List contacts
Lists the account’s contacts (your email audience) as a paginated envelope - sortable, with substring search, an exact-email lookup, and bounce or unsubscribe status filters. The envelope carries no total; use the /count companion.
/v2/ accounts/ {accountId}/ contactsPath parameters
accountIdstringrequired
The account the request is scoped to.
Query parameters
startintegeroptional
Zero-based offset of the first item to return. Default: 0.
limitintegeroptional
Maximum number of items to return. Clamped to 100. Default: 25.
sortByone of: createDate, email, messageCount, name, statusoptional
Default: name.
orderone of: -1, 1optional
1 ascending, -1 descending. Default: 1.
searchstringoptional
Case-insensitive email substring filter.
emailstring (email)optional
Exact email match (case-insensitive). Returns 0 or 1 contacts; takes precedence over search. Use this to resolve a contact id from an email (e.g. before DELETE /contacts/{contactId}).
statusone of: bounced, unsubscribedoptional
Response
A page of contacts.
Errors
401
Missing or invalid token, or the token is not authorized for this account/user.
See Errors and rate limits for what error responses look like.
curl --location --request GET 'https://api.sendstreak.com/v2/accounts/YOUR_ACCOUNT_ID/contacts' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
const res = await fetch('https://api.sendstreak.com/v2/accounts/YOUR_ACCOUNT_ID/contacts', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SENDSTREAK_TOKEN}`
}
});
import os, requests
res = requests.get(
'https://api.sendstreak.com/v2/accounts/YOUR_ACCOUNT_ID/contacts',
headers={'Authorization': f"Bearer {os.environ['SENDSTREAK_TOKEN']}"},
)
{
"start": 0,
"limit": 25,
"items": [
{
"_id": "665f0a2b1c9d440012ab34cd",
"email": "[email protected]",
"createDate": "2026-07-07T09:30:00.000Z",
"hardBounced": "2026-07-07T09:30:00.000Z",
"complaintDate": "2026-07-07T09:30:00.000Z",
"unsubscribeDate": "2026-07-07T09:30:00.000Z",
"topicUnsubscriptions": [
"6651dd2e4f9b110014ab90cd"
]
}
]
}