Skip to content

List the calling partner's managed client accounts.

GET
/partner/accounts
curl --request GET \
--url https://api.siteqwality.com/partner/accounts \
--header 'Authorization: Bearer <token>'

Unpaged, deliberately. The partner SKU is sold per client and the largest tier discussed is 50, so a partner’s whole client list is one small page; adding a pager would be inventing a problem. If a partner ever holds hundreds of clients this becomes a paged endpoint, with total carried the way GET /monitors carries it.

Each row’s monitor counts come from the same three tables and the same state-aware predicates GET /monitors/totals uses, in one query for the whole list rather than one per client.

The partner’s live client accounts

Media type application/json

Response for GET /partner/accounts.

object
clients
required

Live clients only, newest first. A soft-deleted client is absent, which matches the X-SQ-Account switch refusing to open one.

Array<object>

One managed client account, as the console lists it and as create answers.

object
account_id
required

The client’s account id. This is the value the partner sends as X-SQ-Account to open the client in the ordinary dashboard.

string format: uuid
display_name
string | null
contact_email

Nullable because accounts.primary_user_id carries no foreign key; see DbPartnerChildAccount::contact_email.

string | null
created_at
required
string format: date-time
suspended
required

Convenience mirror of suspended_at.is_some(), so a client list can render the badge without parsing a timestamp.

boolean
suspended_at
string | null format: date-time
monitors
required

Monitor counts for one client, in the same state-aware sense GET /monitors/totals uses: a paused monitor counts in total and paused and in neither online nor down.

object
total
required
integer format: int32
online
required
integer format: int32
down
required
integer format: int32
paused
required
integer format: int32
Example generated
{
"clients": [
{
"account_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"display_name": "example",
"contact_email": "example",
"created_at": "2026-04-15T12:00:00Z",
"suspended": true,
"suspended_at": "2026-04-15T12:00:00Z",
"monitors": {
"total": 1,
"online": 1,
"down": 1,
"paused": 1
}
}
]
}

Missing or invalid authentication

Caller is not an admin, or the account is not in the partner program

Internal server error