---
title: "Suggest Google Ads text assets"
method: POST
path: "/api/apps/{app_id}/google-ads/suggestions/text-assets"
---

# Suggest Google Ads text assets

`POST /api/apps/{app_id}/google-ads/suggestions/text-assets`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Suggests text assets for a Performance Max campaign, one group per asset type you ask for.

Send `asset_types` with any of `HEADLINE`, `LONG_HEADLINE`, `DESCRIPTION`, `BUSINESS_NAME` and `CALL_TO_ACTION_SELECTION`. Only the types you ask for come back, so read the response by key rather than assuming all five are present. `BUSINESS_NAME` is a single string; the rest are arrays. `CALL_TO_ACTION_SELECTION` is a fixed set of values Google accepts rather than generated copy.

Nothing is saved. An asset type can come back as an empty array when the model returns nothing usable for it, under a 200.

<Note>This endpoint runs a language model and draws on a shared quota of 20 requests per minute per app, which every Google Ads AI endpoint debits. Enterprise workspaces get a higher quota. A 429 means the quota is spent, not that this endpoint has its own limit.</Note>

<Note>The copy is written in the language you send in the `Accept-Language` header. Omit the header and you get English — the app's own language is not consulted — so send it explicitly for a non-English app.</Note>

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

## Path parameters

- `app_id` string, required — ID of the app you are planning a Google Ads campaign for.

## Headers

- `Accept-Language` string, nullable — Language to return generated text in, as a standard `Accept-Language` value. An unsupported language falls back to English.

## Request body

- TextAssetSuggestionsRequest
  - `business_name` string — Name of the business the assets are for.
  - `business_description` string — What the business sells, in a sentence or two.
  - `asset_types` string[] — Which asset types to generate: `HEADLINE`, `LONG_HEADLINE`, `DESCRIPTION`, `BUSINESS_NAME`, `CALL_TO_ACTION_SELECTION`. Only the types you list come back.
  - `keywords` string[] — Words the copy should lean on.
  - `search_themes` string[] — Search themes the campaign already uses, so the copy matches them.
  - `user_prompt` string — Extra direction for the copy, in the caller's own words.

## Response `200`

One group per asset type you asked for.

- GoogleAdsTextAssets — Suggested text for each asset type you asked for.
  - `HEADLINE` string[], nullable — Short headlines, each within Google's 30-character limit. Present only when you asked for `HEADLINE`.
  - `LONG_HEADLINE` string[], nullable — Long headlines, each within Google's 90-character limit. Present only when you asked for `LONG_HEADLINE`.
  - `DESCRIPTION` string[], nullable — Description lines, each within Google's 90-character limit. Present only when you asked for `DESCRIPTION`.
  - `BUSINESS_NAME` string, nullable — A single business name, trimmed to Google's 25-character limit. This one is a string rather than an array, unlike every other asset type here. Present only when you asked for `BUSINESS_NAME`.
  - `CALL_TO_ACTION_SELECTION` string[], nullable — Call-to-action values Google accepts. This is a fixed list, not a generated one. Present only when you asked for `CALL_TO_ACTION_SELECTION`.

## Other responses

- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app, the app does not exist, or you used a workspace API key. A missing app and an app you cannot reach are deliberately the same answer.
- `422` — Validation Error
- `429` — The shared AI quota for this app is spent. Retry in a minute.

## Changes

- **2026-08-26** `f2727732ced1` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/apps/:app_id/google-ads/suggestions/text-assets/post.md)

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/idealspot/base44-app-management-api/revisions/6ad855bf424f/schema)
