---
title: "Manage Competitor Public"
method: POST
path: "/competitors/manage"
tags: ["public-api"]
---

# Manage Competitor Public

`POST /competitors/manage`

## Request

- Base URL: `https://api.trakkr.ai`
- URL: `https://api.trakkr.ai/competitors/manage`
- Auth: HTTP bearer

Manage a brand's competitor lists.

- action='list': read the tracked and hidden competitor names (no competitor needed).
- action='add': track a competitor by name (appended to brands.competitors).
- action='remove': untrack a previously added competitor.
- action='hide': hide a competitor from competitive views.
- action='unhide': restore a hidden competitor.

Competitors are identified by name (a domain works too, it is stored as given).
add/remove touch the tracked set; hide/unhide touch the hidden set.

## Request body

- ManageCompetitorRequest: POST /competitors/manage body.
  - `brand_id` string, uuid, required
  - `action` 'list' | 'add' | 'remove' | 'hide' | 'unhide', required
  - `competitor` string, nullable

## Response `200`

Successful Response

- CompetitorManageResponse
  - `brand_id` string, required
  - `action` string, nullable
  - `competitor` string, nullable
  - `tracked` string[], nullable
  - `hidden` string[], nullable
  - `already_tracked` boolean, nullable
  - `already_hidden` boolean, nullable

## Other responses

- `401`: Missing, malformed, or expired credentials
- `402`: The current plan does not fund this operation
- `403`: Invalid credentials, missing brand access, or insufficient role
- `422`: Validation Error
- `429`: Rate limit exceeded
- `500`: The operation failed
- `503`: Authentication, entitlement, or a required dependency is temporarily unavailable

---

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