---
title: "Create, update, or delete a buyer profile / ICP (feeds article targeting + entity triples). Create: title+industry+demographics. Update: profileId + changed fields. Delete: profileId + del=true."
method: POST
path: "/api/v1/brand/icp"
---

# Create, update, or delete a buyer profile / ICP (feeds article targeting + entity triples). Create: title+industry+demographics. Update: profileId + changed fields. Delete: profileId + del=true.

`POST /api/v1/brand/icp`

## Request

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

Requires the `write:content` scope.

## Request body

- object
  - `profileId` string: Buyer profile id from get_brand. Leave it out to create one.
  - `del` boolean: true deletes the buyer profile
  - `title` string: Who the buyer is, like "Head of marketing at a SaaS company"
  - `industry` string: The buyer's industry
  - `companySize` string: Company size, like "11-50 employees"
  - `painPoints` string[]: Problems the buyer wants solved, one per item
  - `buyingTriggers` string[]: What makes them start looking, one per item
  - `objections` string[]: Why they hesitate to buy, one per item
  - `preferredChannels` string[]: Where they look for answers, like Google or Reddit, one per item
  - `demographics` object: Demographics object; required on create (same shape the dashboard saves)

## 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)
