PATCH /api/v202604/company/categories/{id} (or the collection equivalent) with a Bearer token carrying the storefront.update scope. Updates use PATCH semantics: only the keys you send are changed, and everything else is left as-is.
Rename a category
Send a newtitle inside the category object:
What happens to the slug
The slug is the canonical public identifier, so renaming has a deliberate effect on it:- If the category uses an auto-generated slug (the default), the slug regenerates from the new
titleon every title change. Renaming “Summer Sale” to “End-of-Summer Sale” changes the slug — and therefore the public URL — accordingly. - If the category has a pinned slug (
custom_slug: true), the slug is permanent and a rename leaves it untouched.
slug together with custom_slug: true:
On the authenticated surface, the response includes
custom_slug so you can tell whether a row’s slug is pinned or auto-generated. This field is omitted from the public catalog.Understand visibility
Two fields together decide whether a row is publicly visible:activeis a merchant on/off toggle. Whenfalse, the row is hidden from every public surface regardless of itsstatus.statusis the lifecycle state:draft,scheduled,published, orarchived.
active is true and its resolved status is published. There is no separate publish endpoint; you change visibility by updating these two fields.
Publish a row
To publish, setstatus to published (and make sure active is true):
Unpublish a row
To take a row off the public catalog, either flipactive to false (a quick on/off that preserves the lifecycle state) or move status back to draft or on to archived:
Schedule a row to go live
Scheduling is publish-in-the-future. Setstatus to scheduled and publish_at to the target timestamp:
status stays scheduled until the time arrives. The go-live is applied at read time: once publish_at has passed, a stored scheduled row resolves to published in API responses automatically — you don’t make a second call to flip it. Combined with active: true, that makes the row live exactly at publish_at.
A scheduled category does not appear in the public catalog or resolve on its public slug until
publish_at passes. A scheduled collection is not in the public catalog either, but it does resolve on its public slug beforehand (as noindex), which is useful for previewing a pre-launch page.publish_at timestamp and no corresponding “unpublish at” field. To take a row down on a schedule, make an update at that time setting active: false or status: "archived".
Collections
Renaming, publishing, unpublishing, and scheduling work identically for collections viaPATCH /api/v202604/company/collections/{id}, using a collection object instead of category. The active/status/publish_at fields and the auto-go-live behavior are the same. The only differences are the ones noted above: collection public slugs stay resolvable for non-archived rows, and collections have no hierarchy fields.
Next steps
- Find and create categories and collections — locate rows and create new ones.
- Control country availability — limit a live row to specific countries.