---
title: "Update a brand"
method: PUT
path: "/api/company/{id}"
tags: ["Brand"]
---

# Update a brand

`PUT /api/company/{id}`

## Request

- Base URL: `https://api.sponsorunited.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sponsorunited.com/api/company/{id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sponsorunited/apis/sponsorunited-api/docs/api/company/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates an existing brand with the provided data including social handles, markets, organizations, and agencies

## Path parameters

- `id` integer, required

## Request body

- object
  - `name` string, required
  - `logo` string, required
  - `category_id` integer, required
  - `subcategory_id` integer, required
  - `corporate_phone` string, nullable
  - `website` string, required
  - `linkedin` string, nullable
  - `locations` object[], required
  - `youtube` string, nullable
  - `twitter` string, nullable
  - `facebook` string, nullable
  - `instagram` string, nullable
  - `twitch` string, nullable
  - `tiktok` string, nullable
  - `synopsis` string, nullable
  - `competitor_details` object[], nullable: Competitors from the synopsis scrape. Sent to the competitor matcher once the brand is saved, which matches on name and falls back to parent_brand. Leaving it out, or sending an empty list, changes no competitor links
    - `name` string, required
    - `parent_brand` string, nullable: The brand that owns the product named in name (Apple Watch -> Apple); null when name is a brand
  - `markets` object[], nullable
  - `organizations` integer[], nullable
  - `agencies` object[], nullable: The brand's agencies. Each one is saved with its services and markets, which the brand profile shows
    - `id` integer
    - `is_aor` integer, nullable: 1 when the agency is the agency of record; left out means 0
    - `services` string, nullable: Free-text services, kept for older clients
    - `service_ids` integer[], nullable
    - `markets` union[], nullable: Market ids, or market objects with an id
      - union
        - integer
        - object
          - `id` integer
  - `brands` object[], nullable
  - `parent_company_id` integer, nullable
  - `primary_profile` object, nullable
  - `secondary_profiles` object[], nullable
  - `financial_data` object: Manual correction of the brand's financial data, upserted by fiscal year and marked as a MANUAL estimate. A brand keeps a single manual row: sending a different fiscal year re-dates the brand's current financial data and any other manual rows (leftovers of previous fiscal-year edits) are removed, so the edit is what subsequent reads return. The revenue tier is not editable — it is derived on the backend from the revenue being saved (estimated figure for public companies, midpoint of the min/max range for private ones) and cleared when the revenue is cleared. Omit the key entirely when there is nothing to change
    - `most_recent_fiscal_year` integer, required
    - `revenue_range_low_usd` number, nullable: Lower bound of the revenue range in USD; the revenue is edited as this pair for public and private companies alike. Must be sent together with revenue_range_high_usd; both null clears the range
    - `revenue_range_high_usd` number, nullable: Upper bound of the revenue range in USD. Must be greater than or equal to revenue_range_low_usd; for public companies the bounds must be equal (the single reported figure)
    - `is_public` boolean: Public/private toggle. Switching to private is rejected while a ticker is set. Public companies store their single revenue figure as equal range bounds; private companies may carry a real spread
    - `ticker` string, nullable: Stock ticker symbol; only editable for public companies

## Response `200`

Brand updated successfully

- CompanyResource: Brand details with related data (agencies, organizations, primary/secondary profiles)
  - `created_by_agent` string, nullable: Name of the agent that created the brand. Null when a person created it.

## Other responses

- `401`: Unauthenticated
- `403`: Forbidden
- `404`: Brand not found
- `422`: Validation error

---

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