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

# Update Google Ads campaign brief

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

Changes a saved campaign brief.

Send only the fields you want to change. A field you leave out keeps its stored value, so this is a partial update rather than a replacement.

<Note>The `language` you send is stored as-is and echoed back here. [List campaign briefs](/api-reference/list-google-ads-campaign-briefs) and [Get campaign brief](/api-reference/get-google-ads-campaign-brief) report it normalized instead: a regional code is reduced to its primary subtag, so `pt-BR` reads back as `pt`, and a code Google Ads does not support reads back as `en`. Send a plain two-letter code to get the same value from every endpoint.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time. Send only the fields documented here. Other request fields are not supported and their behavior can change.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json patch /api/apps/{app_id}/google-ads/campaign-briefs/{brief_id}
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/campaign-briefs/{brief_id}:
    patch:
      summary: Update Google Ads campaign brief
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Changes a saved campaign brief.


        Send only the fields you want to change. A field you leave out keeps its
        stored value, so this is a partial update rather than a replacement.


        <Note>The `language` you send is stored as-is and echoed back here.
        [List campaign briefs](/api-reference/list-google-ads-campaign-briefs)
        and [Get campaign brief](/api-reference/get-google-ads-campaign-brief)
        report it normalized instead: a regional code is reduced to its primary
        subtag, so `pt-BR` reads back as `pt`, and a code Google Ads does not
        support reads back as `en`. Send a plain two-letter code to get the same
        value from every endpoint.</Note>


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time. Send only the fields documented here. Other request fields are not
        supported and their behavior can change.</Warning>
      operationId: >-
        update_campaign_brief_api_apps__app_id__google_ads_campaign_briefs__brief_id__patch
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose Google Ads campaigns to manage.
            title: App Id
          description: ID of the app whose Google Ads campaigns to manage.
          example: 6820f3a4e7b91d003c45a1f2
        - name: brief_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              ID of the brief, as returned in `id` by [List campaign
              briefs](/api-reference/list-google-ads-campaign-briefs).
            title: Brief Id
          description: >-
            ID of the brief, as returned in `id` by [List campaign
            briefs](/api-reference/list-google-ads-campaign-briefs).
          example: 68b1c0d4e7b91d003c45a1f5
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: UpdateCampaignBrief
              type: object
              properties:
                platform_type:
                  type: string
                  description: >-
                    Which campaign type the brief is for, `SMART` or
                    `PERFORMANCE_MAX`. Stored as sent and not checked against
                    that list.
                  default: SMART
                business_name:
                  type: string
                  description: Business name to advertise.
                business_description:
                  type: string
                  description: What the business does. Used when Base44 generates copy.
                landing_page_url:
                  type: string
                  description: URL the ads will send clicks to.
                language:
                  type: string
                  description: >-
                    Language the ad copy is in, as a lowercase two-letter code
                    such as `en` or `de`.
                  default: en
                keywords:
                  type: array
                  items:
                    type: string
                  description: Keywords the campaign should match.
                target_audience:
                  type: string
                  description: Free-text description of who the campaign is for.
                daily_budget_micros:
                  type: integer
                  description: >-
                    Planned daily budget in micros of the account currency, so
                    `15000000` is 15.00.
                geo_targets:
                  type: array
                  items:
                    type: string
                  description: Google Ads geo target constant IDs to target.
                headlines:
                  type: array
                  items:
                    type: string
                  description: Ad headlines.
                descriptions:
                  type: array
                  items:
                    type: string
                  description: Ad description lines.
                schedule_type:
                  type: string
                  description: >-
                    `always` to run continuously, or `custom` to use
                    `schedule_days`.
                  default: always
                schedule_days:
                  type: array
                  description: >-
                    Day and hour windows to run in, used only when
                    `schedule_type` is `custom`.
                  items:
                    type: object
                    properties:
                      day:
                        type: string
                        description: Day of the week, such as `MONDAY`.
                      start_hour:
                        type: integer
                        description: Hour the window opens, 0 to 23.
                      end_hour:
                        type: integer
                        description: Hour the window closes, 0 to 23.
            example:
              daily_budget_micros: 20000000
              keywords:
                - oak furniture
                - dining table
      responses:
        '200':
          description: The brief after the change.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignBriefResource'
        '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.
        '404':
          description: There is no brief with this ID on this app.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    CampaignBriefResource:
      properties:
        id:
          type: string
          title: Id
          description: >-
            ID of the brief. Pass this as `brief_id` to read, update, or delete
            it.
          example: 68b1c0d4e7b91d003c45a1f5
        platform_type:
          type: string
          title: Platform Type
          description: Which campaign type the brief is for, `SMART` or `PERFORMANCE_MAX`.
          example: SMART
        source:
          type: string
          title: Source
          description: '`ai` when Base44 generated the brief, `user` when you created it.'
          example: user
        business_name:
          type: string
          title: Business Name
          description: Business name to advertise.
          example: Nordwind Furniture
        business_description:
          type: string
          title: Business Description
          description: What the business does. Base44 uses this when it generates copy.
          example: Handmade oak furniture, delivered across Germany.
        landing_page_url:
          type: string
          title: Landing Page Url
          description: URL the ads will send clicks to.
          example: https://example.com/spring
        language:
          type: string
          title: Language
          description: >-
            Language the ad copy is written in, as a lowercase two-letter code.
            See the note on this field in each endpoint: create and update echo
            what you send, while list and get report the normalized value.
          example: en
        keywords:
          items:
            type: string
          type: array
          title: Keywords
          description: Keywords the campaign should match.
          example:
            - oak furniture
            - handmade table
        target_audience:
          type: string
          title: Target Audience
          description: Free-text description of who the campaign is for. Empty when unset.
          example: Homeowners aged 30 to 55
        daily_budget_micros:
          type: integer
          title: Daily Budget Micros
          description: >-
            Planned daily budget in micros of the account currency, so
            `15000000` is 15.00. `0` when unset.
          example: 15000000
        geo_targets:
          items:
            type: string
          type: array
          title: Geo Targets
          description: Google Ads geo target constant IDs to target.
          example:
            - '1003854'
        headlines:
          items:
            type: string
          type: array
          title: Headlines
          description: Ad headlines. Populated by generate, or by you.
          example:
            - Handmade oak furniture
        descriptions:
          items:
            type: string
          type: array
          title: Descriptions
          description: Ad description lines.
          example:
            - Built to last. Delivered free.
        schedule_type:
          type: string
          title: Schedule Type
          description: '`always` to run continuously, or `custom` to use `schedule_days`.'
          example: always
        schedule_days:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Schedule Days
          description: >-
            Day and hour windows to run in, used only when `schedule_type` is
            `custom`.
          example:
            - day: MONDAY
              end_hour: 17
              start_hour: 9
        created_date:
          type: string
          format: date-time
          title: Created Date
          description: When the brief was created.
          example: '2026-08-25T11:20:00Z'
        updated_date:
          type: string
          format: date-time
          title: Updated Date
          description: When the brief was last changed.
          example: '2026-08-25T14:05:00Z'
      type: object
      required:
        - id
        - platform_type
        - source
        - business_name
        - business_description
        - landing_page_url
        - language
        - keywords
        - target_audience
        - daily_budget_micros
        - geo_targets
        - headlines
        - descriptions
        - schedule_type
        - schedule_days
        - created_date
        - updated_date
      title: CampaignBriefResource
      description: |-
        A saved campaign brief.

        Omits `app_id`, which the response repeats from the path.
    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.

````