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

Saves a new campaign brief.

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.

Every field is optional, so you can save a partial brief and fill it in later with Update campaign brief. Set platform_type to SMART or PERFORMANCE_MAX. It is stored as sent and is not checked against that list.

<Warning>This creates a new brief every time it is called. There is nothing that keeps one brief per campaign type, so a retried request leaves you with duplicates. Read the list first and use Update campaign brief when you already have one.</Warning>

<Note>The language you send is stored as-is and echoed back here. List campaign briefs and Get 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>

post/api/apps/{app_id}/google-ads/campaign-briefs

Path parameters

app_idstring required

ID of the app whose Google Ads campaigns to manage.

ID of the app whose Google Ads campaigns to manage.

Request body

platform_typestring

Which campaign type the brief is for, SMART or PERFORMANCE_MAX. Stored as sent and not checked against that list.

business_namestring

Business name to advertise.

business_descriptionstring

What the business does. Used when Base44 generates copy.

landing_page_urlstring

URL the ads will send clicks to.

languagestring

Language the ad copy is in, as a lowercase two-letter code such as en or de.

keywordsstring[]

Keywords the campaign should match.

target_audiencestring

Free-text description of who the campaign is for.

daily_budget_microsinteger

Planned daily budget in micros of the account currency, so 15000000 is 15.00.

geo_targetsstring[]

Google Ads geo target constant IDs to target.

headlinesstring[]

Ad headlines.

descriptionsstring[]

Ad description lines.

schedule_typestring

When the campaign runs. Use always to run continuously, or custom to use schedule_days.

Response

Successful Response

idstring required

ID of the brief. Pass this as brief_id to read, update, or delete it.

platform_typestring required

Which campaign type the brief is for, SMART or PERFORMANCE_MAX.

sourcestring required

Who wrote the brief. The value is ai when Base44 generated it and user when you created it.

business_namestring required

Business name to advertise.

business_descriptionstring required

What the business does. Base44 uses this when it generates copy.

landing_page_urlstring required

URL the ads will send clicks to.

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

keywordsstring[] required

Keywords the campaign should match.

target_audiencestring required

Free-text description of who the campaign is for. Empty when unset.

daily_budget_microsinteger required

Planned daily budget in micros of the account currency, so 15000000 is 15.00. The value is 0 when unset.

geo_targetsstring[] required

Google Ads geo target constant IDs to target.

headlinesstring[] required

Ad headlines. Populated by generate, or by you.

descriptionsstring[] required

Ad description lines.

schedule_typestring required

When the campaign runs. Use always to run continuously, or custom to use schedule_days.

schedule_daysobject[] required

Day and hour windows to run in, used only when schedule_type is custom.

created_datestring date-time required

When the brief was created.

updated_datestring date-time required

When the brief was last changed.

Example response

{
  "id": "68b1c0d4e7b91d003c45a1f5",
  "platform_type": "SMART",
  "source": "user",
  "business_name": "Nordwind Furniture",
  "business_description": "Handmade oak furniture, delivered across Germany.",
  "landing_page_url": "https://example.com/spring",
  "language": "en",
  "keywords": [
    "oak furniture",
    "handmade table"
  ],
  "target_audience": "Homeowners aged 30 to 55",
  "daily_budget_micros": 15000000,
  "geo_targets": [
    "1003854"
  ],
  "headlines": [
    "Handmade oak furniture"
  ],
  "descriptions": [
    "Built to last. Delivered free."
  ],
  "schedule_type": "always",
  "schedule_days": [
    {
      "day": "MONDAY",
      "end_hour": 17,
      "start_hour": 9
    }
  ],
  "created_date": "2026-08-25T11:20:00Z",
  "updated_date": "2026-08-25T14:05:00Z"
}

Changes

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