List Sites
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
The organization's Sites in Marketing, Learning and Awards, most recently changed first (up to 200). Each carries its revision (send it back on your next write) and whether it has unpublished changes. Also at GET /v1/sites.
Request example
curl --request GET \ --url 'https://public-api.sessionboard.com/v1/organization/{orgId}/sites' \ --header 'x-access-token: <api-token>'const response = await fetch('https://public-api.sessionboard.com/v1/organization/{orgId}/sites', { method: 'GET', headers: { "x-access-token": "<api-token>" },});
const data = await response.json();console.log(data);import requests
response = requests.request( "GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/sites", headers={ "x-access-token": "<api-token>" },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/organization/{orgId}/sites", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http")
func main() { req, _ := http.NewRequest("GET", "https://public-api.sessionboard.com/v1/organization/{orgId}/sites", nil) req.Header.Add("x-access-token", "<api-token>")
res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://public-api.sessionboard.com/v1/organization/{orgId}/sites")) .header("x-access-token", "<api-token>") .method("GET", HttpRequest.BodyPublishers.noBody()) .build();
HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Try it
Response headers
Authorizations
x-access-tokenstringheaderOrganization API token. Generate from Organization Settings → API Tokens.
AuthorizationBearer <token>headerorOAuth 2.1 access token. Obtained via the OAuth PKCE flow at
/oauth/token.
Send one of these. See Authentication.
Path parameters
orgIdstringpathrequiredYour organization ID. Any other organization returns
404.
Query parameters
productstringqueryOnly this product's Sites.
- Allowed values
"marketing", "learning", "awards"
eventIdstringqueryOnly this event's Sites (Marketing event pages).
- Pattern
^\d+$
Responses
200application/json
OK
payloadobjectShow child attributes
sitesSiteSummary[]Show child attributes
idstring<uuid>typestringevent_page(Marketing),learning, orawards/event_portal/internal(Awards).productstring- Allowed values
"marketing", "learning", "awards"
namestringslugstringevent_idinteger | nullurlstring | nullThe live address.
revisionstringSend back as
baseRevisionon your next write.has_unpublished_changesbooleanpublished_atstring<date-time> | null
403
SCOPE_REQUIRED— the token lacksread:sites(orread:marketing,read:learning,read:awards) for reads, or the matchingwrite:scope for writes.FORBIDDEN— the token's user cannot edit this Site.
Response examples
{ "payload": { "sites": [ { "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a", "type": "<string>", "product": "marketing", "name": "<string>", "slug": "<string>", "event_id": 123, "url": "<string>", "revision": "<string>", "has_unpublished_changes": true, "published_at": "2026-01-15T09:30:00Z" } ] }}