> ## Documentation Index
> Fetch the complete documentation index at: https://docs.closient.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage Brand Destination Pages

> List, create, change and delete a brand's video, story and link pages — the branded landing pages a resolution rule sends scans to — the programmatic equivalent of the brand's Destination pages in the dashboard.

Programmatic equivalent of the brand's Video pages, Story pages and Link pages
in the dashboard (each list, and its add and edit forms). The pages and the
API write through the same service and the same validation, so a page saved
on one reads back on the other, and a value one refuses the other refuses too.

A destination page is a branded landing page. A resolution rule sends a scan
of the brand's products to one; this skill builds the page, and
`manage-resolution-rules` points a rule at it.

* **Video page** — one YouTube video, a short text and up to three buttons.
* **Story page** — the brand's or a product's story in ordered blocks.
* **Link page** — a branded list of links, like a link-in-bio page.

## When to use

* The brand wants a scan to land on its own branded page rather than a
  product page.
* A page's content, colours or links have changed.
* A page is no longer used.

## Auth

`X-API-Key` header or OAuth token. Reading needs any member of the organization
that owns the brand (or any API key of it). Writing needs an OWNER, MANAGER or
EDITOR (or an API key with the EDITOR role or above): a read-only key gets
`403`. A brand of an organization the caller does not belong to is `404`.

## Flow

Each kind has its own collection: `video-pages`, `story-pages` or `link-pages`.

```
GET    /brands/api/v1/brands/{brand_id}/{kind}-pages
POST   /brands/api/v1/brands/{brand_id}/{kind}-pages
GET    /brands/api/v1/brands/{brand_id}/{kind}-pages/{id}
PATCH  /brands/api/v1/brands/{brand_id}/{kind}-pages/{id}
DELETE /brands/api/v1/brands/{brand_id}/{kind}-pages/{id}
```

Every page has `name` (unique among the brand's pages of that kind),
`brand_name_override`, `tagline`, `primary_color` and `accent_color` (6-digit
hex values such as `#0a84ff`). On top of those:

* **Video** — `youtube_url` (empty shows the first video attached to the
  product being resolved), `description`, and `cta_links`: up to three
  `{label, url}` buttons.
* **Story** — `blocks`, ordered `{type, data}` objects of type `hero_image`,
  `text_section`, `image_text`, `certification_badges`, `image_gallery` or
  `cta`.
* **Link** — `blocks`, ordered `{type, data}` objects of type `link`,
  `section_header`, `image_carousel` or `countdown_timer`, plus
  `button_style` (`filled` or `outlined`) and `button_shape` (`rounded` or
  `square`).

The service description (`/brands/api/v1/openapi.json`) gives every field and
an example body for each kind.

* **`POST`** — create a page. `name`, `primary_color` and `accent_color` are
  required. Returns `201`.
* **`PATCH .../{id}`** — send only the fields you are changing. `null` is
  `422`.
* **`DELETE .../{id}`** — delete the page (`204`).

A name already in use, a malformed colour, URL or block is `422` with the field
and the reason; correct it rather than retrying the same body.

## Verify

1. `GET .../{kind}-pages` again and confirm each page you created or changed
   reads back with the content you intended.
2. Confirm no page you did not mean to touch changed or disappeared: a live
   resolution rule may be sending scans to it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.