Skip to content

Make a Site

POST/v1/organization/{orgId}/sites/make

US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com

Makes a product's first Site with no setup, from the organization's own data and Brand Kit: a Learning Site from its courses, an Awards Site with its home in the draft, or a Marketing page for an event (eventId). Pass url to rebuild an existing page: its text, menu and images come back as source_page for you to turn into edits. Nothing is published. Also at POST /v1/sites/make.

Request example

Terminal window
curl --request POST \
--url 'https://public-api.sessionboard.com/v1/organization/{orgId}/sites/make' \
--header 'x-access-token: <api-token>' \
--header 'Content-Type: application/json' \
--data '{
"product": "marketing",
"name": "<string>",
"brief": "<string>",
"url": "https://example.com",
"eventId": "<string>"
}'

Try it

Authorization

Your token stays in this page. It is sent only to the region above and is never saved; it is gone when you leave or reload the page.

Path parameters
Body application/json
POST

Authorizations

  • x-access-tokenstringheader

    Organization API token. Generate from Organization Settings → API Tokens.

  • AuthorizationBearer <token>headeror

    OAuth 2.1 access token. Obtained via the OAuth PKCE flow at /oauth/token.

Send one of these. See Authentication.

Path parameters

  • orgIdstringpathrequired

    Your organization ID. Any other organization returns 404.

Request body

application/jsonrequired

  • productstringrequired
    Allowed values
    "marketing", "learning", "awards"
  • namestring
    Max length
    200
  • briefstring

    What the Site is for, in the person's words.

    Max length
    2000
  • urlstring<uri>

    An https page to rebuild.

    Max length
    2048
  • eventIdstring

    Marketing only; the event the page is for.

    Pattern
    ^\d+$
{
"product": "marketing",
"name": "<string>",
"brief": "<string>",
"url": "https://example.com",
"eventId": "<string>"
}

Responses

200application/json

The new Site, read as in Get a Site, plus source_page when you sent url.

  • payloadobject
    Show child attributes
    • siteobject
      Show child attributes
      • idstring<uuid>
      • typestring

        event_page (Marketing), learning, or awards / event_portal / internal (Awards).

      • productstring
        Allowed values
        "marketing", "learning", "awards"
      • namestring
      • slugstring
      • event_idinteger | null
      • urlstring | null

        The live address.

      • revisionstring

        Send back as baseRevision on your next write.

      • has_unpublished_changesboolean
      • published_atstring<date-time> | null
      • draft_updated_atstring<date-time> | null
      • brand_kit_idstring | null
      • last_writeobject | null

        Who wrote the draft last (a person, Ask, or an MCP client) and when.

    • pagesSitePage[]
      Show child attributes
      • refstring

        home, or how to refer to the page in an edit.

      • idstring | null

        null for a page that is new in the draft.

      • titlestring
      • slugstring
      • pathstring
      • urlstring | null
      • is_homeboolean
      • hiddenboolean
      • visibilitystring
        Allowed values
        "public", "reviewers", "submitters"
      • is_newboolean
      • blocksSiteBlock[]
        Show child attributes
        • idstring
        • kindstring

          A kind from the Site's block_catalog.

        • hiddenboolean
        • configobject

          The block's settings, as its schema in block_catalog describes.

    • navobject | null

      The menu; null follows the pages.

    • themeobject
      Show child attributes
      • modestring
        Allowed values
        "light", "dark", "auto"
      • primarystring | null
      • accentstring | null
      • textstring | null
      • gradientstring | null[]
      • fontstring | null
      • logo_urlstring | null
      • follow_brand_kitboolean
    • rolesobject[]

      Who you can preview the Site as.

      Show child attributes
      • idstring
      • labelstring
      • hintstring
    • devicesstring[]
    • has_pagesboolean

      false for a one-page Site (the Marketing event page): use page home.

    • block_catalogobject[]

      Every block kind this Site takes, with a label, a JSON Schema for config and an example.

    • diffSiteDiff
      Show child attributes
      • changedboolean
      • pagesobject[]
      • blocksobject[]
      • settingsobject[]
        Show child attributes
        • keystring
        • labelstring
      • summarystring[]

        One plain sentence per change, for the person to read.

    • rulesstring[]

      How to edit this Site, in plain sentences.

    • source_pageobject

      The page at url, read for you to rebuild (title, headings, text, links, images).

400

A missing eventId for Marketing, or a url that could not be read.

403

  • SCOPE_REQUIRED — the token lacks read:sites (or read:marketing, read:learning, read:awards) for reads, or the matching write: scope for writes.
  • FORBIDDEN — the token's user cannot edit this Site.

Response examples

{
"payload": {
"site": {
"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",
"draft_updated_at": "2026-01-15T09:30:00Z",
"brand_kit_id": "<string>",
"last_write": {}
},
"pages": [
{
"ref": "<string>",
"id": "<string>",
"title": "<string>",
"slug": "<string>",
"path": "<string>",
"url": "<string>",
"is_home": true,
"hidden": true,
"visibility": "public",
"is_new": true,
"blocks": [
{
"id": "<string>",
"kind": "<string>",
"hidden": true,
"config": {}
}
]
}
],
"nav": {},
"theme": {
"mode": "light",
"primary": "<string>",
"accent": "<string>",
"text": "<string>",
"gradient": [
"<string>"
],
"font": "<string>",
"logo_url": "<string>",
"follow_brand_kit": true
},
"roles": [
{
"id": "<string>",
"label": "<string>",
"hint": "<string>"
}
],
"devices": [
"<string>"
],
"has_pages": true,
"block_catalog": [
{}
],
"diff": {
"changed": true,
"pages": [
{}
],
"blocks": [
{}
],
"settings": [
{
"key": "<string>",
"label": "<string>"
}
],
"summary": [
"<string>"
]
},
"rules": [
"<string>"
],
"source_page": {}
}
}