Generate Google Ads ad copy

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

Writes headlines and descriptions for a campaign from a business name and description.

Nothing is saved. Take the fields you want and pass them to Create campaign, or to Create campaign brief to keep them for later.

Check source before you present this as generated copy. Anything other than ai means the model did not produce copy and the response is fallback text derived from what you sent, returned under a 200. headlines and descriptions can also come back empty.

<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>

post/api/apps/{app_id}/google-ads/ai/generate-copy

Path parameters

app_idstring required

ID of the app you are planning a Google Ads campaign for.

ID of the app you are planning a Google Ads campaign for.

Headers

Accept-Languagestring nullable

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

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

Request body

business_namestring required

Name of the business the ads are for.

business_descriptionstring

What the business sells, in a sentence or two. The more specific this is, the better the copy.

keywordsstring[]

Words the copy should lean on.

landing_page_urlstring

Page the ads send people to. Used as context for the copy.

campaign_goalstring

What the campaign is for: traffic, leads or sales.

Example request

{
  "business_name": "Nordwind Furniture",
  "business_description": "Handmade solid oak dining tables, built to order in San Francisco.",
  "keywords": [
    "oak dining table",
    "handmade furniture"
  ],
  "landing_page_url": "https://nordwind-furniture.com",
  "campaign_goal": "traffic"
}

Response

Suggested headlines and descriptions.

headlinesstring[] required

Suggested headlines, each within Google's 30-character limit.

descriptionsstring[] required

Suggested description lines, each within Google's 90-character limit.

languagestring nullable

Two-letter code for the language the copy came back in, or null when the model did not report one. Pass it as settings.language_code on Create campaign so the campaign's language matches its copy.

sourcestring required

ai when a language model wrote this copy. Any other value means it did not, and you are looking at fallback text built from the business details you sent.

Example response

{
  "headlines": [
    "Handmade Oak Tables",
    "Free Statewide Delivery",
    "Built To Order"
  ],
  "descriptions": [
    "Solid oak dining tables built to order in San Francisco. Free delivery."
  ],
  "language": "en",
  "source": "ai"
}

Changes

Changed in 1 of the 14 revisions of this API.1