---
title: "Update Google Ads monthly spend cap"
method: PATCH
path: "/api/apps/{app_id}/google-ads/accounts/{account_id}/budget-limit"
---

# Update Google Ads monthly spend cap

`PATCH /api/apps/{app_id}/google-ads/accounts/{account_id}/budget-limit`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/google-ads/accounts/{account_id}/budget-limit`
- Auth: HTTP bearer

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

Sets the account's monthly spend cap.

Send `monthly_limit_dollars` in whole units of the account currency, not micros. It must be above zero and Base44 enforces an upper bound, so an unreasonably large value is rejected with a 422.

Raising the cap opens more spend, so it needs a chargeable account and a workspace that is not on a billing hold. Base44 pushes the new cap to Google Ads, so Google can reject it and that comes back as a 400 with its reason.

<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.
- `account_id` string, required: ID of the Google Ads account, as returned in `id` by [Get Google Ads account](/api-reference/get-google-ads-account). An account that belongs to a different app returns a 403.

## Request body

- object
  - `monthly_limit_dollars` integer, required: Monthly spend cap in whole units of the account currency, not micros. Must be above zero, and Base44 enforces an upper bound.

## Response `200`

Successful Response

- BudgetLimitResponse: The account's monthly spend cap after the change.
  - `account_id` string, required: Account the cap applies to.
  - `monthly_limit_dollars` integer, required: The cap now in effect, in whole units of the account currency rather than micros.

## Other responses

- `400`: Google Ads rejected the change. The response message carries Google's reason.
- `401`: Missing or invalid credentials.
- `403`: You don't have access to this app, the app does not exist, the account belongs to a different app, 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 account with this ID in the workspace.
- `409`: The account cannot be charged, or the workspace is on a billing hold. The request to Google Ads timing out after being sent also reports 409.
- `422`: Validation Error
- `429`: Google Ads is rate limiting the account. Retry later.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/google-ads/accounts/:account_id/budget-limit/patch.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/fa29e915c226?raw)
