---
title: "Create or Update a Brand"
method: POST
path: "/brands"
tags: ["Brands"]
---

# Create or Update a Brand

`POST /brands`

## Request

- Base URL: `https://api.pinnacle.sh`
- URL: `https://api.pinnacle.sh/brands`
- Auth: API key in header `PINNACLE-API-KEY`

Create a new brand or update an existing one.

<Note>
**To create a new brand:** Omit `id` — one will be generated automatically.

All fields are **required** except `description` and `dba`, and will be validated when [submitted](/api-reference/brands/submit).
</Note>

## Request body

- UpsertBrandSchema: Request to create or update a brand. Fields can be null or omitted to remove or skip updating them.
  - `address` string, nullable: Primary brand address where the company is located.
  - `contact` UpsertBrandSchemaContact: Contact information for the brand.
    - `email` string, nullable: Email address of the contact person.
    - `name` string, nullable: Full name of the contact person.
    - `phone` string, nullable: Phone number of the contact person in E.164 format.
    - `title` string, nullable: Job title of the contact person.
  - `dba` string, nullable: "Doing Business As" name - the public name the brand operates under.
  - `description` string, nullable: Brief description of what the brand does.
  - `ein` string, nullable: Brand's Employer Identification Number (EIN) assigned by the IRS.
  - `email` string, nullable: Main contact email address for the brand.
  - `id` string: The unique identifier of the brand you want to update. <br><br> This identifier is a string that always begins with the prefix `b_`, for example: `b_1234567890`.
  - `name` string, nullable: Legal name of the brand as registered.
  - `sector` 'AGRICULTURE' | 'COMMUNICATION' | 'CONSTRUCTION' | 'EDUCATION' | 'ENERGY' | 'ENTERTAINMENT' | 'FINANCIAL' | 'GAMBLING' | 'GOVERNMENT' | 'HEALTHCARE' | 'HOSPITALITY' | 'INSURANCE' | 'MANUFACTURING' | 'NGO' | 'REAL_ESTATE' | 'RETAIL' | 'TECHNOLOGY': Industry the brand operates in.
  - `type` 'GOVERNMENT' | 'NON_PROFIT' | 'PRIVATE_PROFIT' | 'PUBLIC_PROFIT' | 'SOLE_PROPRIETOR': Legal structure of the brand.
  - `entityType` 'LLC' | 'SOLE_PROPRIETORSHIP' | 'PARTNERSHIP' | 'CORP' | 'S_CORP': Legal entity type of the brand.
  - `website` string, url, nullable: Brand website URL.

## Response `200`

Successfully create/updated the brand.

- ExtendedBrand
  - `createdAt` string, required: ISO 8601 formatted timestamp of when this brand was added to our system.
  - `id` string, required: The brand's ID. This identifier is a string that always begins with the prefix `b_`, for example: `b_1234567890`.
  - `isArchived` boolean, required: Indicates if this brand is archived.
  - `status` 'PENDING' | 'UNVERIFIED' | 'VERIFIED' | 'VETTED' | 'FAILED' | 'INCOMPLETE', required: Current review status of the brand. `INCOMPLETE`: Has not been submitted. `PENDING`: Currently being reviewed. `VERIFIED`: Verified and good to go. `UNVERIFIED`: No longer verified due to an update in the brand details. `VETTED`: Brand has been vetted by an external provider and has received vetting scores.
  - `updatedAt` string, required: ISO 8601 formatted timestamp of when this brand was last updated.
  - `address` string: Primary brand address where this brand is located.
  - `contact` OptionalContactSchema: Contact information for the primary brand representative.
    - `email` string: Email address of the contact person.
    - `name` string: Full name of the contact person.
    - `phone` string: Phone number of the contact person in E.164 format.
    - `title` string: Job title or position oft he contact person.
  - `dba` string, nullable: "Doing Business As" name - the public name this brand operates under.
  - `description` string: Brief description of what this brand does.
  - `ein` string: Employer Identification Number (EIN) assigned by the IRS.
  - `email` string: Main contact email address for this brand.
  - `name` string: Legal name of the brand as registered.
  - `sector` 'AGRICULTURE' | 'COMMUNICATION' | 'CONSTRUCTION' | 'EDUCATION' | 'ENERGY' | 'ENTERTAINMENT' | 'FINANCIAL' | 'GAMBLING' | 'GOVERNMENT' | 'HEALTHCARE' | 'HOSPITALITY' | 'INSURANCE' | 'MANUFACTURING' | 'NGO' | 'REAL_ESTATE' | 'RETAIL' | 'TECHNOLOGY': Industry the Brand operates in.
  - `type` 'GOVERNMENT' | 'NON_PROFIT' | 'PRIVATE_PROFIT' | 'PUBLIC_PROFIT' | 'SOLE_PROPRIETOR': Legal structure of the brand.
  - `entityType` 'LLC' | 'SOLE_PROPRIETORSHIP' | 'PARTNERSHIP' | 'CORP' | 'S_CORP': Legal entity type of the brand.
  - `website` string: Brand website URL.

## Other responses

- `400`: Validation failed. The payload has missing required fields and/or invalid types. <br> See https://zod.dev/error-formatting for more information.
- `401`: The request lacks valid authentication credentials or the provided credentials are invalid. <br> Ensure you're including a valid API key in the request headers and that your account has the necessary permissions to access this endpoint.
- `403`: Your subscription does not include access to this feature. <br> This occurs when attempting to use functionality that requires a higher subscription tier. Please upgrade your subscription to access this feature.
- `500`: An unexpected error occurred on Pinnacle's servers while processing your request. <br> If this error persists, please contact support with the request details.

---

[API](https://skmtc.dev/pinnacle/apis/pinnacle-2.md) - [All operations](https://skmtc.dev/pinnacle/apis/pinnacle-2/llms.txt) - [OpenAPI document](https://skmtc.dev/pinnacle/apis/pinnacle-2/revisions/45416dadab79?raw)
