---
title: "Update a brand"
description: "Change a brand's text, links, colors, access and tracking IDs with PATCH, and what each field accepts."
---

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

# Update a brand

`PATCH /brands/{brand}` changes one brand. It needs the `brands:write` scope and the token's creator must be an owner or admin of the workspace named in `X-Workspace-Key`.

Send a JSON object with at least one field. Fields you leave out stay as they are. A body with no valid field answers `400 invalid_request` ("Nothing to update"). Keys the API does not know are ignored.

```bash
curl -X PATCH -H "Authorization: Bearer $TARKLE_TOKEN" -H "X-Workspace-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{"summary": "Business banking for small firms", "download_approval": true}' \
  https://tarkle.com/api/v1/brands/acme
```

A successful call answers `200` with the whole brand after the change. Every change is recorded in the workspace Activity as `brand.updated`, with the token's name and the fields it changed.

## Fields you can change

| Field | What it accepts |
| --- | --- |
| `name` | Up to 120 characters. It cannot be empty. |
| `summary` | Up to 500 characters. |
| `story` | Up to 6,000 characters. |
| `industry`, `size`, `company_type` | Up to 80 characters each. |
| `year_founded` | A four-digit year, such as `2015`. |
| `url` | A public web address. |
| `twitter`, `facebook`, `instagram`, `linkedin`, `youtube`, `github` | Up to 200 characters each. |
| `primary_color` | A hex color such as `#714CB6`. |
| `access` | `public` or `restricted`. |
| `confirm_public` | `true`. Needed to make a brand public. |
| `download_approval` | `true` or `false`. |
| `is_draft` | `true` or `false`. |
| `tracking` | An object with `ga4`, `gtm`, `search_console` and `adobe_kit`. |
| `meta_title` | The title for search results, up to 160 characters. |
| `meta_description` | The description for search results, up to 320 characters. |
| `team_title` | The heading above the team, up to 40 characters. |

Text longer than its limit is cut to the limit, not rejected. Send `""` to clear any text field except `name`.

## Rules for some fields

**`url`** takes a domain such as `example.com`; Tarkle adds `https://`. IP addresses, `localhost`, names ending in `.local` or `.internal`, addresses with a username or password, and ports other than 80 and 443 are rejected. The brand returns it as `website`.

**`primary_color`** must be six hex digits with a hash. `#FFF` is rejected. Tarkle stores it in uppercase.

**`access`** takes `public` or `restricted`.

- Making a brand **public** lets anyone open it and removes its password, so when the brand is not public yet the call needs `"confirm_public": true`. Without it the call answers `400 confirmation_required` and changes nothing. It is not a separate scope: `brands:write` plus the flag is enough. A brand that is already public needs no flag.
- Making a brand **restricted** keeps its password but needs a contact or an organization assigned to the brand first, otherwise `400 invalid_request`.

**`is_draft`** `false` publishes the brand. The brand editor asks for a summary, story, website, icon, main logo, primary color, fonts and a banner before it publishes. The API does not check this, so make sure the brand is complete first.

**`download_approval`** `true` means you approve each download request yourself. **`is_draft`** `true` marks the brand as a draft, and `indexable` becomes `false`.

**`tracking`** only changes the keys you send. An empty string clears a key.

- `ga4` is `G-` followed by 4 to 16 letters or digits.
- `gtm` is `GTM-` followed by 4 to 12 letters or digits.
- `search_console` is a token of 16 to 128 characters, or the whole verification tag.
- `adobe_kit` is the seven-character ID of your Adobe Fonts web project, or the stylesheet link that contains it. Changing it to another project clears the Adobe fonts saved for the brand.

## What you cannot change

- The slug and the id.
- Files such as logos, banners and collection files.
- Passwords. The API never sets one.
- Domains.
- The Adobe headline and body fonts. Choose them in the brand editor.

## Errors

- [`invalid_request`](/docs/api/errors/invalid_request) (400): a value the API does not accept, a body that is not a JSON object, or a brand reference that is neither an id nor a slug.
- [`confirmation_required`](/docs/api/errors/confirmation_required) (400): making a brand public without `confirm_public: true`.
- [`unauthorized`](/docs/api/errors/unauthorized) (401): the token is missing, invalid or revoked.
- [`forbidden`](/docs/api/errors/forbidden) (403): the token lacks `brands:write`, or its creator is not an owner or admin of the workspace.
- [`not_found`](/docs/api/errors/not_found) (404): no brand with that id or slug in the workspace.
- [`rate_limited`](/docs/api/errors/rate_limited) (429): wait `Retry-After` seconds.

## Related

- [Quick start](/docs/api/brands/quick-start)
- [Endpoints](/docs/api/brands/endpoints)

Source: https://tarkle.com/docs/api/brands/update-a-brand/index.mdx
