Sites
Read the sites tied to your account. Each site carries a domain, a display name, a status, and a snapshot of the latest scan.
List sites
GET
/api/v1/sitesscope: read:sitesReturns up to 100 sites owned by the authenticated user, ordered by most recently added.
Example request
Example response
Response fields
| Field | Type | Description |
|---|---|---|
id | string | The site's GroundScore ID. Opaque; do not parse it. |
domain | string | Normalized domain, without protocol, www, or trailing slash. |
name | string | null | Display name. Null when the account never set one. |
status | string | One of active, inactive, or prospect. |
createdAt | string | ISO 8601 timestamp for when the site was added. |
The list is capped at 100. If your account has more sites, call
GET /api/v1/sites/{siteId} for the specific ones you care about. There is no pagination cursor in v1.Get site detail
GET
/api/v1/sites/{siteId}scope: read:sitesReturns the same fields as the list endpoint, plus a compact summary of the latest completed scan (id, score, status, completed timestamp).
Path parameters
| Parameter | Type | Description |
|---|---|---|
siteId | string | The site's GroundScore ID, from GET /api/v1/sites. |
Example request
Example response
latestScan is the most recently completed scan for the site. It is null when no scan has completed yet, so a site whose first scan is still running also returns null here.
Errors
| Code | When |
|---|---|
not_found | The site does not exist or is not owned by the authenticated user. |
insufficient_scope | Key lacks read:sites. |