The Google Ads API is in beta. Its endpoints and responses may change.
- List an app’s campaigns with their budgets, statuses, and performance.
- Create a Smart or Performance Max campaign and start it serving.
- Change one section of a campaign, such as its name, budget, or ad copy.
- Pause and resume a campaign, or pause every campaign at once.
- Change the daily budget on several campaigns in one call.
- Read a campaign’s change history, including changes Base44 made on its own.
- Save a campaign brief, or have Base44 write one for you, and edit it before you launch.
Prerequisites
- A personal API key. See Authentication to get one. These endpoints share the App Management API’s
api_keyheader and base URL. - An app you can edit.
- A Google Ads account connected to the app, with a payment method on file. Without one, every endpoint here returns a 404.
App ID
Every endpoint includes the app’s ID in the URL path asapp_id.
To get your app ID:
- Go to app.base44.com.
- Open your app in the app editor.
- Copy the app ID from the editor URL:
"https://app.base44.com/apps/<app_id>/editor".
Budgets are in micros
Every budget field is in micros of the account currency, where 1,000,000 micros is one unit. A daily budget of 15.00 is15000000.
Google enforces a minimum daily budget that differs per currency. A budget below it comes back as a 400 carrying Google’s reason, and the campaign is not created.
Start from the campaign list
List campaigns is the entry point. Each row carries the campaign’sid, which every other endpoint takes as campaign_id in the path.
The list rows are built for a table, so they carry performance metrics but leave out the campaign’s landing page, targeting, and phone number. Read Get campaign when you need those.
A write can succeed on Google and still report a failure
Base44 applies a change on Google Ads first and then updates its own record. Those two steps are not a single transaction, so a request can change the live campaign and still come back as an error. A 409 means exactly this: the request reached Google Ads and then timed out, so the change may or may not have been applied. Read the campaign back with Get campaign before you retry, or you can apply the same change twice. Bulk update campaign budgets has the same seam in a quieter form. It is not atomic: each entry is applied on its own, and the response lists the ones that worked insucceeded and the rest in failed. A failed entry usually means the budget did not change, but it can also mean Google accepted the new budget and only Base44’s record of it failed. Verify before you treat a failed entry as unchanged.
Campaign briefs are plans, not campaigns
A brief is saved input for a campaign you have not launched: 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. Nothing about a brief reaches Google Ads. A brief spends no money, and creating, editing or deleting one never changes a campaign that is already running. That also means the brief endpoints need no connected Google Ads account and return none of the Google-side errors the campaign endpoints do. Generate campaign brief writes the ad copy for you from a few business details. It runs a language model, so it is slower than the rest and draws on a per-app quota shared with the other Google Ads generation endpoints. Nothing keeps you to one brief per campaign type, so a retried create leaves duplicates. Read the list first and update the brief you already have.Deleting a campaign is permanent
Delete campaign cannot be undone, and there is no endpoint to restore a deleted campaign. Use Pause campaign to stop a campaign temporarily. Google keeps a deleted campaign for reporting, so it stays in the campaign list with astatus of REMOVED and its past spend still counts toward account totals.