---
title: "Update Google Ads campaign brief"
method: PATCH
path: "/api/apps/{app_id}/google-ads/campaign-briefs/{brief_id}"
---

# Update Google Ads campaign brief

`PATCH /api/apps/{app_id}/google-ads/campaign-briefs/{brief_id}`

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

## Path parameters

- `app_id` string, required — ID of the app whose Google Ads campaigns to manage.
- `brief_id` string, required — ID of the brief, as returned in `id` by [List campaign briefs](/api-reference/list-google-ads-campaign-briefs).

## Request body

- object
  - `platform_type` string — Which campaign type the brief is for, `SMART` or `PERFORMANCE_MAX`. Stored as sent and not checked against that list.
  - `business_name` string — Business name to advertise.
  - `business_description` string — What the business does. Used when Base44 generates copy.
  - `landing_page_url` string — URL the ads will send clicks to.
  - `language` string — Language the ad copy is in, as a lowercase two-letter code such as `en` or `de`.
  - `keywords` string[] — Keywords the campaign should match.
  - `target_audience` string — Free-text description of who the campaign is for.
  - `daily_budget_micros` integer — Planned daily budget in micros of the account currency, so `15000000` is 15.00.
  - `geo_targets` string[] — Google Ads geo target constant IDs to target.
  - `headlines` string[] — Ad headlines.
  - `descriptions` string[] — Ad description lines.
  - `schedule_type` string — When the campaign runs. Use `always` to run continuously, or `custom` to use `schedule_days`.
  - `schedule_days` object[] — Day and hour windows to run in, used only when `schedule_type` is `custom`.
    - `day` string — Day of the week, such as `MONDAY`.
    - `start_hour` integer — Hour the window opens, 0 to 23.
    - `end_hour` integer — Hour the window closes, 0 to 23.

## Response `200`

Successful Response

- CampaignBriefResource — A saved campaign brief.
  - `id` string, required — ID of the brief. Pass this as `brief_id` to read, update, or delete it.
  - `platform_type` string, required — Which campaign type the brief is for, `SMART` or `PERFORMANCE_MAX`.
  - `source` string, required — Who wrote the brief. The value is `ai` when Base44 generated it and `user` when you created it.
  - `business_name` string, required — Business name to advertise.
  - `business_description` string, required — What the business does. Base44 uses this when it generates copy.
  - `landing_page_url` string, required — URL the ads will send clicks to.
  - `language` string, required — 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.
  - `keywords` string[], required — Keywords the campaign should match.
  - `target_audience` string, required — Free-text description of who the campaign is for. Empty when unset.
  - `daily_budget_micros` integer, required — Planned daily budget in micros of the account currency, so `15000000` is 15.00. The value is `0` when unset.
  - `geo_targets` string[], required — Google Ads geo target constant IDs to target.
  - `headlines` string[], required — Ad headlines. Populated by generate, or by you.
  - `descriptions` string[], required — Ad description lines.
  - `schedule_type` string, required — When the campaign runs. Use `always` to run continuously, or `custom` to use `schedule_days`.
  - `schedule_days` object[], required — Day and hour windows to run in, used only when `schedule_type` is `custom`.
  - `created_date` string, date-time, required — When the brief was created.
  - `updated_date` string, date-time, required — When the brief was last changed.

## 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.
- `404` — There is no brief with this ID on this app.
- `422` — Validation Error

---

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