---
title: "Suggest Campaign Keywords"
method: POST
path: "/api/v1/google-ad-manager/campaigns/keyword-suggestions"
tags: ["googleAdCampaign"]
---

# Suggest Campaign Keywords

`POST /api/v1/google-ad-manager/campaigns/keyword-suggestions`

## Request

- Base URL: `https://api.brandbooster.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.brandbooster.ai/api/v1/google-ad-manager/campaigns/keyword-suggestions`
- Auth: none declared

Positive and negative keywords for a campaign being set up. Writes nothing:
the approved lists go into the create payload as ad_groups[].keywords and
negative_keywords.

## Request body

- KeywordSuggestionsRequest: What the advertiser sells, so positive and negative keywords can be proposed before the campaign exists. Nothing here is written to Google Ads.
  - `client_id` string, required
  - `email` string, required
  - `final_url` string, uri, nullable: Landing page the ads will send people to
  - `business_description` string, nullable
  - `products_or_services` string[]: What is actually sold
  - `seed_keywords` string[]
  - `not_offered` string[]
  - `language_id` string: Language criterion ID
  - `location_ids` string[]
  - `max_positive` integer
  - `max_negative` integer

## Response `200`

Successful Response

- KeywordSuggestionsResponse
  - `positive_keywords` SuggestedKeyword[], required
    - `text` string, required
    - `match_type` 'EXACT' | 'PHRASE' | 'BROAD', required: Keyword match type enum
    - `theme` string, required
    - `source` string, required
    - `reason` string, nullable
    - `avg_monthly_searches` integer, nullable
    - `competition` string, nullable
    - `low_top_of_page_bid_micros` integer, nullable
    - `high_top_of_page_bid_micros` integer, nullable
  - `negative_keywords` SuggestedNegativeKeyword[], required
    - `text` string, required
    - `match_type` 'EXACT' | 'PHRASE' | 'BROAD', required: Keyword match type enum
    - `level` 'CAMPAIGN' | 'AD_GROUP': Keyword level enum
    - `category` string, required
    - `source` string, required
    - `reason` string, nullable
  - `ad_groups` SuggestedAdGroup[], required
    - `name` string, required
    - `keywords` string[], required
  - `draft` object, required
  - `dropped` DroppedSuggestion[]
    - `text` string, required
    - `reason` string, required
  - `warnings` string[]
  - `sources` object

## Other responses

- `422`: Validation Error

## Changes

> 35 revisions in range; 1 not diffed.

- **2026-09-30** `05ad3a41b4cf`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/brandbooster/apis/fastapi/changes/api/v1/google-ad-manager/campaigns/keyword-suggestions/post.md)

---

[API](https://skmtc.dev/brandbooster/apis/fastapi.md) - [All operations](https://skmtc.dev/brandbooster/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/brandbooster/apis/fastapi/revisions/8e8c18c2dc35?raw)
