---
title: "A deterministic campaign plan (read only)"
method: POST
path: "/v1/campaign-plans"
tags: ["plan_campaign"]
---

# A deterministic campaign plan (read only)

`POST /v1/campaign-plans`

## Request

- Base URL: `https://api.buzzdealer.ai`
- URL: `https://api.buzzdealer.ai/v1/campaign-plans`
- Auth: HTTP bearer

Same behavior as the MCP tool plan_campaign.

## Request body

- object
  - `goal` 'reputation' | 'seo' | 'ai_visibility' | 'mentions': One goal: reputation, seo, ai_visibility or mentions. Or send goal_weights for a mix; send neither to use the goals set in the dashboard (Budget and goals)
  - `goal_weights` object: A goal mix instead of goal: any of reputation, seo, ai_visibility, mentions, each 0 to 100, for example {"ai_visibility": 60, "seo": 40}. Weights that do not sum to 100 are scaled to 100; all zero is refused
    - `reputation` number
    - `seo` number
    - `ai_visibility` number
    - `mentions` number
  - `brand_id` string, uuid: Optional. A brand of this account. With goal_weights or no goal, the goal of its weakest audit score (sentiment: reputation, authority: seo, discoverability: ai_visibility) gets more weight, and its budget frame goals are the default. With one goal, that goal stays at 100% and the plan adds a tip
  - `topic` string, required: Topic or category, for example fintech
  - `region` string, required: For example UK
  - `language` string: Optional. An ISO 639-1 code (en) or its English name (English); any case
  - `budget_cents` integer, required: Total budget in US cents; the plan never exceeds it

## Response `200`

Success

- object

## Other responses

- `401`: Error
- `429`: Error
- `default`: Error

---

[API](https://skmtc.dev/buzzdealer/apis/buzz-dealer-ai-api.md) · [All operations](https://skmtc.dev/buzzdealer/apis/buzz-dealer-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/buzzdealer/apis/buzz-dealer-ai-api/revisions/e4865a268cd5?raw)
