---
title: "Add search themes to an asset group"
method: POST
path: "/api/v1/tools/google_add_search_themes/execute"
tags: ["Google Ads"]
---

# Add search themes to an asset group

`POST /api/v1/tools/google_add_search_themes/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/google_add_search_themes/execute`
- Auth: HTTP bearer

Adds search themes to a Performance Max asset group. A search theme is a phrase telling Google what customers look for; it is a hint, not a keyword, and Google may serve on plenty of queries you never listed.
Use when: the campaign is new and has nothing to learn from, or the user knows terms the ads should cover.
Do not use when: the user expects keyword-level control. Performance Max has none, and search themes do not add any. Say so rather than implying otherwise.
An asset group holds at most 25 themes; the tool refuses if the addition would go over, and themes that are already there are skipped rather than duplicated.
If you are unsure which account, campaign or period the user means, ask them — do not guess ids or dates.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `customer_id` string: Google Ads customer id (10 digits, dashes optional). Omit to use the primary account; list_connected_accounts shows the valid ids.
    - `asset_group_id` string, required: Asset group id as a string of digits.
    - `search_themes` string[], required: Short phrases describing what customers search for. At most 25 in total per group.
    - `idempotency_key` string: Optional caller-supplied key; identical keys never execute twice.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
