---
title: "Create, update, or delete a product in brand memory (feeds article context + entity triples). Create: name+description+category. Update: productId + changed fields. Delete: productId + del=true."
method: POST
path: "/api/v1/brand/product"
---

# Create, update, or delete a product in brand memory (feeds article context + entity triples). Create: name+description+category. Update: productId + changed fields. Delete: productId + del=true.

`POST /api/v1/brand/product`

## Request

- Base URL: `https://api.rctrl.com`
- URL: `https://api.rctrl.com/api/v1/brand/product`
- Auth: HTTP bearer

Requires the `write:content` scope.

## Request body

- object
  - `productId` string: Product id from get_brand. Leave it out to create a product.
  - `del` boolean: true deletes the product
  - `name` string: Product name
  - `description` string: What the product does, in a sentence or two
  - `url` string: Product page URL
  - `features` string[]: One feature per item
  - `pricing` string: Price as you'd say it, like "$49/month"
  - `category` 'core_product' | 'add_on' | 'service' | 'product': Type of offer: core_product, add_on, service or product
  - `usps` string[]: What sets it apart, one point per item

## Response `200`

Success; the payload is wrapped in a data envelope

- object
  - `data` unknown

## Other responses

- `400`: Bad input
- `401`: Missing or invalid API key
- `403`: API key lacks the required scope
- `404`: Not found in this workspace
- `429`: Rate limited; the body includes a retryAfterMs hint

---

[API](https://skmtc.dev/rctrl/apis/rankcontrol-api.md) · [All operations](https://skmtc.dev/rctrl/apis/rankcontrol-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rctrl/apis/rankcontrol-api/revisions/98ecd236394a?raw)
