---
title: "Update Google Ads campaign"
method: PATCH
path: "/api/apps/{app_id}/google-ads/campaigns/{campaign_id}"
---

# Update Google Ads campaign

`PATCH /api/apps/{app_id}/google-ads/campaigns/{campaign_id}`

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

Changes one section of a campaign and pushes it to Google.

Send the section in `field` and its new value in `value`. One section per request. To change a name and a budget, send two requests.

Changing `ad_copy` sends the new text back through Google's policy review, so the campaign can return to a reviewing state and stop serving until it clears. Changing `budget` takes effect for the rest of the current day.

Google validates the change, so text that breaks its policies or a budget below the currency's floor comes back as a 400 with Google's reason and the campaign is left as it was. To change the budget on several campaigns at once, use [Update campaign budgets in bulk](/api-reference/bulk-update-google-ads-campaign-budgets).

<Note>The response carries `id` plus only the section you changed, not the whole campaign. Read the campaign back with [Get campaign](/api-reference/get-google-ads-campaign) when you need its full state.</Note>

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

<Warning>A 409 means the change may or may not have been applied. The request to Google Ads timed out after it was sent. Read the campaign back with [Get campaign](/api-reference/get-google-ads-campaign) before retrying, or you can end up applying it twice.</Warning>

<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.
- `campaign_id` string, required — Base44's ID for the campaign, as returned in `id` by [List campaigns](/api-reference/list-google-ads-campaigns). This is not the Google Ads campaign ID, which is reported separately as `google_campaign_id`.

## Request body

- object
  - `field` 'name' | 'budget' | 'details' | 'ad_copy' | 'targeting' | 'images' | 'asset', required — Which part of the campaign to change. One section per request.
  - `value` unknown, required

## Response `200`

Successful Response

- CampaignPatchResult — What an update returns, the campaign ID plus only the section that changed.
  - `id` string, nullable — Base44's ID for the campaign. Absent when you changed `images`, which reports `updated_field_types` instead.
  - `campaign_name` string, nullable — Present when you changed `name`.
  - `daily_budget_micros` integer, nullable — Present when you changed `budget`.

## Other responses

- `400` — Google Ads rejected the request, for example ad text that breaks its policies or a budget below the currency's minimum. The response message carries Google's reason.
- `401` — Missing or invalid credentials.
- `402` — Google Ads reported a billing problem on the account.
- `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` — The app has no connected Google Ads account, or there is no campaign with this ID.
- `409` — The request to Google Ads timed out after being sent, so the change may or may not have been applied. Read the campaign back before retrying.
- `422` — Validation Error
- `429` — Google Ads is rate limiting the account. Retry later.

## Changes

- **2026-08-26** `df72f6cff1ca` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/apps/:app_id/google-ads/campaigns/:campaign_id/patch.md)

---

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