Update a category
Change a category’s name, description, URL handle or translation link.
Send only the fields you are changing; a body with none of them is a 400, and a field sent as null is cleared. This is how a naming mistake gets fixed after the fact — including the slug, which is exactly why the category is addressed here by numeric id and not by slug.
locale is not writable. An article inherits the language of its category, so changing it would move the language of every article inside without touching one of them; move an article to a category of the other language with update an article instead. position and parent_category_id are not writable here either — ordering and nesting stay in the dashboard.
Requires being an administrator of the account or a member of the portal.
Authorizations
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
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.
1
Path Parameters
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.
1
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.
"acme-help"
The id returned when the category was created or listed. Numeric — never the category slug, and that is on purpose: updating a category can rewrite the slug, so a slug would be an address the endpoint itself can invalidate.
12
Body
The fields to change go under a category wrapper. At least one of them is required; locale is absent on purpose, since articles inherit the language of their category.
Response
The category as stored, after the change.
A category of one help center portal.
What goes in category_id when creating or updating an article.
12
"getting-started"
"Getting Started"
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.
"en"
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.
10
"2026-05-02T11:04:17.000Z"
"2026-08-10T14:32:05.123Z"
"First steps with the product."
Set when the category is nested under another.
null
Root category linking the translations of the same category across locales.
null