Skip to content

List Trust Center subscribers

GET
/trust-center/subscribers
curl --request GET \
--url 'https://api.vendorica.com/v1/trust-center/subscribers?page=1&limit=100&sortBy=createdAt&sortOrder=asc' \
--header 'Authorization: Bearer <token>'

The addresses that asked to hear about changes to this organization’s Trust Center, offset-paginated. Filter by status (pending | verified | unsubscribed) and by source (public — the visitor’s own double opt-in — or manual, typed in by an operator). The two are orthogonal, so “who did we add ourselves, and are they still on the list” is one request. This is a register of CONSENTS: an unsubscribed row is retained rather than deleted, because the withdrawal is the half of the record a controller has to be able to produce.

page
integer
default: 1 >= 1 <= 10000
limit
integer
default: 100 >= 1 <= 500
sortBy
string
Allowed values: createdAt email verifiedAt
sortOrder
string
default: desc
Allowed values: asc desc
search
string
>= 1 characters <= 255 characters
status
Array<string> | null
<= 100 items
Allowed values: pending verified unsubscribed
source
Array<string> | null
<= 100 items
Allowed values: public manual

Success

Media typeapplication/json
object
success
required
boolean
data
required
Array<object>
object
id
required
string format: uuid
email
required
string
status
required
string
source
required
string
scopes
required
Array<string>
verifiedAt
required
string | null format: date-time
createdAt
required
string format: date-time
timestamp
required
string format: date-time
requestId
string
message
string
pagination
object
page
required
integer
limit
required
integer
total
required
integer
totalPages
required
integer
Example
{
"success": true,
"data": [
{
"id": "c3c02acb-f083-4a6b-86c7-51b867c5aaf4",
"email": "string",
"status": "string",
"source": "string",
"scopes": [
"string"
],
"verifiedAt": "2026-08-19T09:41:12.004Z",
"createdAt": "2026-08-19T09:41:12.004Z"
}
],
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H",
"message": "string",
"pagination": {
"page": 1,
"limit": 1,
"total": 1,
"totalPages": 1
}
}

Validation error

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Bad request",
"code": "BAD_REQUEST",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Unauthorized

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Unauthorized",
"code": "UNAUTHORIZED",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Forbidden — missing scope

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Forbidden",
"code": "FORBIDDEN",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Not found

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Resource not found",
"code": "NOT_FOUND",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}

Rate limit exceeded

Media typeapplication/json
object
success
required
boolean
error
required
string
code
required
string
details
timestamp
required
string format: date-time
requestId
string
Example
{
"success": false,
"error": "Too many requests",
"code": "TOO_MANY_REQUESTS",
"timestamp": "2026-08-19T09:41:12.004Z",
"requestId": "req_01J5X8ZC3K4T7Q9M2W6B0N1V4H"
}