---
title: "List Google Ads campaign briefs"
method: GET
path: "/api/apps/{app_id}/google-ads/campaign-briefs"
---

# List Google Ads campaign briefs

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

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

Returns the app's saved campaign briefs, most recently changed first.

A campaign brief is saved input for a campaign you have not launched yet: the business details, the keywords, the budget you have in mind, and the ad copy. Base44 stores it so you can build a campaign over several requests instead of one, and nothing about a brief reaches Google Ads until you create a campaign from it.

Pass `platform_type` to return only the briefs for one campaign type. Any other value returns an empty list rather than an error, so check the value you send.

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</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.</Warning>

## Path parameters

- `app_id` string, required — ID of the app whose Google Ads campaigns to manage.

## Query parameters

- `platform_type` string — Filter to SMART or PERFORMANCE_MAX

## Response `200`

Successful Response

- CampaignBriefResource[]
  - `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.

---

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