> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Google Ads monthly spend cap

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



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json patch /api/apps/{app_id}/google-ads/accounts/{account_id}/budget-limit
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/google-ads/accounts/{account_id}/budget-limit:
    patch:
      summary: Update Google Ads monthly spend cap
      description: >-
        <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>
      operationId: >-
        update_budget_limit_api_apps__app_id__google_ads_accounts__account_id__budget_limit_patch
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose Google Ads campaigns to manage.
            title: App Id
          description: ID of the app whose Google Ads campaigns to manage.
          example: 6820f3a4e7b91d003c45a1f2
        - name: account_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              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 404.
            title: Account Id
          description: >-
            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 404.
          example: 68b1c0d4e7b91d003c45a1f8
      requestBody:
        required: true
        content:
          application/json:
            schema:
              title: UpdateMonthlySpendCap
              type: object
              required:
                - monthly_limit_dollars
              properties:
                monthly_limit_dollars:
                  type: integer
                  minimum: 1
                  description: >-
                    Monthly spend cap in whole units of the account currency,
                    not micros. Must be above zero, and Base44 enforces an upper
                    bound.
            example:
              monthly_limit_dollars: 500
      responses:
        '200':
          description: The cap now in effect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BudgetLimitResponse'
        '400':
          description: >-
            Google Ads rejected the change. The response message carries
            Google's reason.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            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':
          description: >-
            The app has no connected Google Ads account, or no account with this
            ID belongs to this app.
        '409':
          description: >-
            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':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Google Ads is rate limiting the account. Retry later.
components:
  schemas:
    BudgetLimitResponse:
      properties:
        account_id:
          type: string
          title: Account Id
          description: Account the cap applies to.
          example: 68b1c0d4e7b91d003c45a1f8
        monthly_limit_dollars:
          type: integer
          title: Monthly Limit Dollars
          description: >-
            The cap now in effect, in whole units of the account currency rather
            than micros.
          example: 500
      type: object
      required:
        - account_id
        - monthly_limit_dollars
      title: BudgetLimitResponse
      description: The account's monthly spend cap after the change.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````