---
title: "Generate a creative brief for a product"
method: POST
path: "/creative-briefs/{product_id}/generate"
tags: ["Briefs"]
---

# Generate a creative brief for a product

`POST /creative-briefs/{product_id}/generate`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/creative-briefs/{product_id}/generate`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

Analyze this product's already-analyzed TikTok videos and generate a creative brief — content angles, unique selling points, filming recommendations, dos/don'ts, and the top inspiration videos — then save it as a `drafted` brief and return it.

Each call is a fresh generation that spends model tokens and creates a **new** brief row, so `Idempotency-Key` is required: a retried request replays the first result instead of paying for and storing a duplicate. Send `X-Dry-Run: true` to validate the product without generating.

Returns 404 when the product isn't in this shop, and 422 when the product has no analyzed videos to build a brief from — run video analysis first.

## Path parameters

- `product_id` string, required

## Headers

- `Idempotency-Key` string, nullable
- `X-Dry-Run` string, nullable

## Response `201`

Successful Response

- CreativeBriefWriteResponse
  - `data` object, required
  - `dry_run` boolean

## Other responses

- `400`: Validation error, multi-shop key, or missing/invalid Idempotency-Key.
- `403`: API key lacks `read_write` scope (`WRITE_NOT_PERMITTED`).
- `404`: Brief or product not found in this shop.
- `409`: Idempotency conflict.
- `422`: Validation Error
- `429`: Write-tier rate limit exceeded.

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
