Skip to main content
POST
Create a portal

Authorizations

Authorization
string
header
required

The id_token from POST /auth/v1/signin, sent as Authorization: Bearer <id_token>. Not the access_token — that one does not carry the identity Cloud Chat authorizes on.

Headers

cloudchat-instance
integer
required

Your Cloud Chat instance ID — an integer, fixed for your company, told at onboarding. The API overview explains how instances work, how to find yours, and the errors a wrong or missing value produces.

Example:

1

Path Parameters

accountId
integer
required

Your Cloud Chat account. It has to be an account your token grants membership on, and it has to live on the instance in the cloudchat-instance header — the two travel together. Account numbers are only unique within an instance, so the same number is a different company on another instance. Usually a mismatched pair fails closed with a 401, because your user does not exist on the other instance — but if your identity happens to exist on both, the call succeeds against the other company's data, silently. Read it and you are looking at the wrong help center; write it and you have stored into the wrong account. Send the two values that were given to you together, and never try a number to see what answers.

Example:

1

Body

application/json

The portal goes under a portal wrapper. The contract is deliberately small — a logo, more locales and a custom domain are set afterwards, the first two by updating the portal and the last one only in the dashboard.

portal
object
required

Response

The portal as stored.

A help center site of the account.

id
integer
required

Numeric id, informational only — every help center endpoint addresses the portal by slug.

Example:

3

slug
string
required

What goes in the portalSlug path segment of the other help center endpoints.

Example:

"acme-help"

name
string
required

Display name of the help center.

Example:

"Acme Help Center"

default_locale
string
required

Locale used when nothing more specific applies — including as the translation target for an article without a category.

Example:

"en"

allowed_locales
string[]
required

Locales the portal can hold content in. A category (and through it, an article) must live in one of these.

Example:
archived
boolean
required

An archived portal is no longer served to visitors.

Example:

false

created_at
string<date-time>
required
Example:

"2026-05-02T11:04:17.000Z"

updated_at
string<date-time>
required
Example:

"2026-08-10T14:32:05.123Z"