---
title: "Create a brand"
method: POST
path: "/api/v1/brands"
tags: ["brands"]
---

# Create a brand

`POST /api/v1/brands`

## Request

- Base URL: `https://pineprompt.com`
- URL: `https://pineprompt.com/api/v1/brands`
- Auth: HTTP bearer

Creates a brand in the active project. Typically, Pineprompt discovers brands from AI responses on its own, so you should reach for this endpoint when you want to track a brand before it has appeared in a response. Segment membership is what makes a brand a competitor, so a brand created with `segment_ids` starts out tracked and one created without them starts out `discovered`. If you would like to designate a brand as the project's own brand, you may point the project's `brand_id` at it via the update-project endpoint.

## Headers

- `Pineprompt-Project-Id` integer, required

## Request body

- StoreBrand
  - `display_name` string, required: The name the brand is shown under. Display names are unique per project and case-insensitive, and a display name may not collide with an alias of another brand, since both would compete for the same mentions.
  - `aliases` string[]: The names Pineprompt matches against when it attributes a mention to the brand. Aliases are stored as you send them and compared while ignoring casing and punctuation. When omitted, the brand is seeded with its display name.
  - `domains` string[]: The domains Pineprompt matches against when it attributes a citation to the brand. You may pass full URLs; each entry is reduced to a bare lowercase host before it is stored.
  - `segment_ids` integer[]: The ids of the project segments the brand should join. Segment membership is what makes a brand a competitor, so a brand created with segments starts out tracked and one created without them starts out `discovered`. Each id must name a segment of the project.

## Response `201`

Created

- Brand: A brand is an entity Pineprompt matches against platform answers: your own brand, a competitor you track, or a brand discovered in an answer. Matches are found through the display name, the aliases, and the domains.
  - `id` integer: The unique ID of the brand.
  - `project_id` integer: The ID of the project the brand belongs to.
  - `display_name` string: The canonical display name of the brand.
  - `aliases` string[]: Alternative names that the brand is referred to by.
  - `domains` string[]: The web domains associated with the brand.
  - `kind` 'own' | 'competitor' | 'discovered' | 'ignored': The brand's classification, derived from its context rather than stored: the brand the project's `brand_id` points at is `own`, a brand with `ignored_at` set is `ignored`, a brand attached to any segment is a `competitor`, and a brand with none of those is `discovered`. This field is read-only.
  - `color` string: A hex color used to color the brand consistently across charts. It is derived from the brand's favicon, or assigned automatically when no color can be derived. This field is read-only and is always present.
  - `ignored_at` string, date-time, nullable: When the brand was ignored, or null while it is not. Set and cleared through the `ignored` field on the update endpoint.
  - `project` Project: A project represents a single brand or site you monitor. Its `brand_id` names the own brand, the brand every core metric is computed for.
    - `id` integer: The unique ID of the project.
    - `organization_id` integer: The ID of the organization that owns the project.
    - `name` string: The display name of the project.
    - `brand_id` integer, nullable: The ID of the project's own brand, or null while none has been designated.
    - `organization` Organization: An organization is the top-level billing entity and tenant boundary in Pineprompt. Every project, member, and API key belongs to exactly one organization.
      - `id` integer: The unique ID of the organization.
      - `name` string: The display name of the organization.
      - `created_at` string, date-time: When the organization was created.
      - `updated_at` string, date-time: When the organization was last updated.
    - `created_at` string, date-time: When the project was created.
    - `updated_at` string, date-time: When the project was last updated.
  - `created_at` string, date-time: When the brand was created.
  - `updated_at` string, date-time: When the brand was last updated.

## Other responses

- `400`: Missing project header
- `401`: Unauthorized
- `403`: Missing ability
- `404`: Project not in this organization
- `422`: Validation failed

---

[API](https://skmtc.dev/pineprompt/apis/pineprompt-api.md) · [All operations](https://skmtc.dev/pineprompt/apis/pineprompt-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pineprompt/apis/pineprompt-api/revisions/05dbb5241a27?raw)
