> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Suggest Google Ads 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>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/google-ads/suggestions/text-assets
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/google-ads/suggestions/text-assets:
    post:
      summary: Suggest Google Ads text assets
      description: >-
        <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>
      operationId: >-
        suggest_text_assets_api_apps__app_id__google_ads_suggestions_text_assets_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app you are planning a Google Ads campaign for.
            title: App Id
          description: ID of the app you are planning a Google Ads campaign for.
          example: 6820f3a4e7b91d003c45a1f2
        - name: Accept-Language
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Language to return generated text in, as a standard
              `Accept-Language` value. An unsupported language falls back to
              English.
            title: Accept-Language
          description: >-
            Language to return generated text in, as a standard
            `Accept-Language` value. An unsupported language falls back to
            English.
          example: de
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TextAssetSuggestionsRequest'
      responses:
        '200':
          description: One group per asset type you asked for.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleAdsTextAssets'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            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':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: The shared AI quota for this app is spent. Retry in a minute.
components:
  schemas:
    TextAssetSuggestionsRequest:
      properties:
        business_name:
          type: string
          title: Business Name
          description: Name of the business the assets are for.
          default: ''
          example: Nordwind Furniture
        business_description:
          type: string
          title: Business Description
          description: What the business sells, in a sentence or two.
          default: ''
          example: Handmade solid oak dining tables, built to order in San Francisco.
        asset_types:
          items:
            type: string
          type: array
          title: Asset Types
          description: >-
            Which asset types to generate: `HEADLINE`, `LONG_HEADLINE`,
            `DESCRIPTION`, `BUSINESS_NAME`, `CALL_TO_ACTION_SELECTION`. Only the
            types you list come back.
          example:
            - HEADLINE
            - DESCRIPTION
        keywords:
          items:
            type: string
          type: array
          title: Keywords
          description: Words the copy should lean on.
          example:
            - oak dining table
        search_themes:
          items:
            type: string
          type: array
          title: Search Themes
          description: Search themes the campaign already uses, so the copy matches them.
          example:
            - handmade oak furniture
        user_prompt:
          type: string
          title: User Prompt
          description: Extra direction for the copy, in the caller's own words.
          default: ''
          example: Emphasise the free delivery.
      type: object
      title: TextAssetSuggestionsRequest
    GoogleAdsTextAssets:
      properties:
        HEADLINE:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Headline
          description: >-
            Short headlines, each within Google's 30-character limit. Present
            only when you asked for `HEADLINE`.
          example:
            - Handmade Oak Tables
            - Built To Order
        LONG_HEADLINE:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Long Headline
          description: >-
            Long headlines, each within Google's 90-character limit. Present
            only when you asked for `LONG_HEADLINE`.
          example:
            - Solid oak dining tables, built to order in San Francisco
        DESCRIPTION:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Description
          description: >-
            Description lines, each within Google's 90-character limit. Present
            only when you asked for `DESCRIPTION`.
          example:
            - Free statewide delivery on every table we build.
        BUSINESS_NAME:
          anyOf:
            - type: string
            - type: 'null'
          title: Business Name
          description: >-
            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`.
          example: Nordwind Furniture
        CALL_TO_ACTION_SELECTION:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Call To Action Selection
          description: >-
            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`.
          example:
            - LEARN_MORE
            - SHOP_NOW
            - SIGN_UP
            - CONTACT_US
      type: object
      title: GoogleAdsTextAssets
      description: Suggested text for each asset type you asked for.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````