List your sites
Every site you can open: the ones in your workspace, plus sites other workspaces shared with you (shared: true, with your role). Without limit you get the whole list in one response, newest-updated first, and no nextCursor. With limit (1–1000) the list is ordered by slug instead, so a page boundary cannot move while you read, and nextCursor is the cursor for the next page (null on the last). Send the same limit, q and scope with every cursor. A page of up to 100 sites costs the same however many sites you have.
Each site carries its stable id; use it, or the slug, in the {slug} path of every site operation.
Request
- Base URL: https://api.dotsy.ai
- URL: https://api.dotsy.ai/api/v1/sites
- Auth: HTTP bearer
Query parameters
Page size (1–1000). Omit it to get the whole list in one response, without nextCursor.
Opaque cursor from the previous page's nextCursor. Send it with limit to get the next page.
Optional case-insensitive substring filter on slug and title, applied before paging. Use with limit for the dashboard site switcher search.
owned lists only the sites in your workspace, shared only the ones other workspaces shared with you. Anything else (or omitted) lists both.
Headers
Org id or slug to act as for this request (session/MCP user actors only — ignored for pga_ keys). Validated against the caller's own memberships (id match first, then slug); 403 if not a member. Takes precedence over session.activeOrganizationId and the auto-provisioned home-workspace fallback.
Response
The sites.
Example response
{
"sites": [
{
"id": "3f6c1d52-8a4b-4e0e-9c57-2f1b7a9d6e10",
"slug": "acme-studio",
"title": "Acme Studio",
"updatedAt": 1759401600000,
"publishedAt": 1759315200000,
"hasPendingChanges": true,
"shared": false,
"publicUrl": "https://acme-studio.dotsy.site/",
"liveUrl": "https://acme-studio.dotsy.site/",
"liveReady": true
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.