Skip to main content
POST
Create a category

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

portalSlug
string
required

The portal's slug — the URL-safe handle you see in its public address (/hc/<slug>/...), not a numeric id. List portals returns every slug on the account. Note the asymmetry: portals are addressed by slug, articles by numeric id.

Example:

"acme-help"

Body

application/json

The category goes under a category wrapper. Only name is required.

category
object
required

Response

The category as stored.

A category of one help center portal.

id
integer
required

What goes in category_id when creating or updating an article.

Example:

12

slug
string
required
Example:

"getting-started"

name
string
required
Example:

"Getting Started"

locale
string
required

An article created in this category inherits this locale, and translate translates into it. Older categories can carry a locale that is no longer among the portal's allowed_locales: they are still listed and still render, but any write to them is refused until that locale is allowed again through updating the portal.

Example:

"en"

position
integer | null
required

The order the help center renders, ascending. Null on a category that never got one — which is most of them, because nothing assigns a position automatically. The listing puts those last.

Example:

10

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"

description
string | null
Example:

"First steps with the product."

parent_category_id
integer | null

Set when the category is nested under another.

Example:

null

associated_category_id
integer | null

Root category linking the translations of the same category across locales.

Example:

null