Skip to main content
POST
Create Google Ads campaign

Authorizations

Authorization
string
header
required

Personal access token, sent as Authorization: Bearer <token>.

Path Parameters

app_id
string
required

ID of the app to advertise.

Body

application/json
campaign_name
string
required

Name for the campaign.

daily_budget_micros
integer
required

Daily budget in micros of the account currency, so 15000000 is 15.00. Google enforces a per-currency minimum and rejects anything below it with a 400.

campaign_type
enum<string>
default:SMART

Which campaign type to create.

Available options:
SMART,
PERFORMANCE_MAX
landing_page
string

URL the ads send clicks to. Google rejects the campaign if it cannot reach this page.

logo_url
string

URL of the logo, at least 128×128. Required for a PERFORMANCE_MAX campaign and ignored for SMART. It follows the same hosting rules as images[].url, but unlike an image a logo Base44 cannot fetch fails the request instead of being left out. A logo that is not square is padded to square.

images
object[]

Marketing images for a PERFORMANCE_MAX campaign, ignored for SMART. A Performance Max campaign needs at least one MARKETING_IMAGE and one SQUARE_MARKETING_IMAGE, and Google rejects the campaign without them.

Base44 leaves out an image it cannot fetch, rather than rejecting the request. That includes an address on another host, a file over 5 MB, and one that does not respond. If that leaves a required slot empty, Google rejects the campaign for the missing image. An address that returns something other than an image is rejected outright.

Extra links shown under a PERFORMANCE_MAX campaign's ads, up to 20. Ignored for SMART. A row with neither text nor url is dropped, a row with only one of them is rejected, and exact duplicates collapse to one.

keyword_themes
string[]

Themes to match searches on, for a SMART campaign.

headlines
string[]

Ad headlines. Google reviews these against its advertising policies.

descriptions
string[]

Ad description lines. Google reviews these against its advertising policies.

geo_targets
string[]

Google Ads geo target constant IDs to target.

business_name
string

Business name shown in the ad.

phone_number
string

Phone number shown in the ad. On PERFORMANCE_MAX it becomes a call asset and on SMART it becomes smartCampaignSettings.phone_number; either way it must be in international format with the country code (e.g. +18506168085) — Google needs the country alongside the number, and any other format is rejected with a 400. Omit for no phone.

contains_eu_political_advertising
boolean

Whether the campaign carries political advertising. Required before an EU advertiser can create a campaign.

settings
object

Campaign settings. language_code is the only key this API commits to; anything else is passed through undocumented.

Response

Successful Response

The campaign fields this API commits to.

id
string
required

Base44's ID for the campaign. Pass this as campaign_id on the other campaign endpoints.

Example:

"68b1c0d4e7b91d003c45a1f2"

google_campaign_id
string
required

The campaign's ID in Google Ads. Empty while a just-created campaign is still being pushed to Google.

Example:

"21098765432"

campaign_name
string
required

Name shown for the campaign.

Example:

"Spring sale in Berlin"

campaign_type
enum<string>
required

Campaign type. Base44 creates SMART and PERFORMANCE_MAX. The other values appear only on campaigns created outside Base44 and synced in.

Available options:
SMART,
PERFORMANCE_MAX,
SEARCH,
DISPLAY,
SHOPPING,
VIDEO,
DEMAND_GEN,
LOCAL,
UNKNOWN
Example:

"SMART"

status
enum<string>
required

Serving state in Base44's cache. A status of REMOVED is a deleted campaign, which Google keeps for reporting.

Available options:
ENABLED,
PAUSED,
REMOVED,
UNKNOWN
Example:

"ENABLED"

daily_budget_micros
integer
required

Daily budget in micros of the account currency, where 1,000,000 micros is one unit, so 15000000 is 15.00.

Example:

15000000

landing_page
string
required

URL the ads send clicks to.

Example:

"https://example.com/spring"

geo_targets
string[]
required

Google Ads geo target constant IDs the campaign targets.

Example:
phone_number
string
required

Campaign phone number in E.164, empty when the campaign has none. Both channel types store the normalized form Google holds: a call asset on PERFORMANCE_MAX, smartCampaignSettings.phone_number on SMART.

Example:

"+493012345678"

review_status
string
required

Google's policy review status, passed through as Google reports it (REVIEWED, UNDER_REVIEW, …). Empty until the first sync after creation.

Example:

"REVIEWED"

serving_status
string
required

Google's serving status, passed through as Google reports it. Can still report review gating after policy review clears, so read it alongside review_status.

Example:

"SERVING"

primary_status
string
required

Google's summary of whether the campaign is serving well, passed through as Google reports it (ELIGIBLE, LIMITED, NOT_SERVING, …).

Example:

"ELIGIBLE"

primary_status_reasons
string[]
required

Google's reasons behind primary_status, for example why a campaign is limited. Empty when there is nothing to explain.

Example:
created_date
string<date-time>
required

When the campaign was created in Base44.

Example:

"2026-08-25T11:20:00Z"

updated_date
string<date-time>
required

When Base44 last changed its record of the campaign.

Example:

"2026-08-25T14:05:00Z"

learning_ends_at
string<date-time> | null

When Smart Bidding's learning period is expected to end, about 14 days after creation, or null on a campaign that has not started learning.

Example:

"2026-09-08T11:20:00Z"