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

# Estimate a Google Ads campaign budget

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

Asks Google to forecast the clicks and spend a set of keyword themes would produce, so you can show a projection before a campaign is created.

Send the themes you are considering and the daily budget you have in mind, both as they would go to [Create campaign](/api-reference/create-google-ads-campaign). Nothing is saved.

The forecast comes from Google's own planner, so it needs a connected Google Ads account that has finished provisioning. An account that exists but has no Google customer ID yet is rejected with a 400; wait for provisioning to finish and retry.

`estimated_monthly_cost` is in micros and covers 30 days.

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



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json post /api/apps/{app_id}/google-ads/campaigns/estimate
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/campaigns/estimate:
    post:
      summary: Estimate a Google Ads campaign budget
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Asks Google to forecast the clicks and spend a set of keyword themes
        would produce, so you can show a projection before a campaign is
        created.


        Send the themes you are considering and the daily budget you have in
        mind, both as they would go to [Create
        campaign](/api-reference/create-google-ads-campaign). Nothing is saved.


        The forecast comes from Google's own planner, so it needs a connected
        Google Ads account that has finished provisioning. An account that
        exists but has no Google customer ID yet is rejected with a 400; wait
        for provisioning to finish and retry.


        `estimated_monthly_cost` is in micros and covers 30 days.


        <Note>This endpoint accepts a personal API key. Workspace API keys are
        not authorized for it and are rejected with a 403.</Note>
      operationId: >-
        estimate_campaign_budget_api_apps__app_id__google_ads_campaigns_estimate_post
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app you are planning a Google Ads campaign for.
            title: App Id
          description: ID of the app you are planning a Google Ads campaign for.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BudgetEstimateRequest'
      responses:
        '200':
          description: Google's forecast for the themes and budget you sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleAdsBudgetEstimate'
        '400':
          description: >-
            The Google Ads account has not finished provisioning, so it has no
            Google customer ID yet.
        '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.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    BudgetEstimateRequest:
      properties:
        keyword_themes:
          items:
            type: string
          type: array
          title: Keyword Themes
          description: >-
            Themes the campaign would match on. An empty list forecasts nothing
            useful.
          example:
            - handmade oak furniture
            - custom dining tables
        daily_budget:
          type: integer
          title: Daily Budget
          description: >-
            Daily budget to forecast against, in micros (1,000,000 micros = 1
            unit of the account's currency).
          default: 0
          example: 30000000
      type: object
      title: BudgetEstimateRequest
    GoogleAdsBudgetEstimate:
      properties:
        estimated_daily_clicks_low:
          type: integer
          title: Estimated Daily Clicks Low
          description: Low end of Google's forecast daily clicks.
          example: 12
        estimated_daily_clicks_high:
          type: integer
          title: Estimated Daily Clicks High
          description: High end of Google's forecast daily clicks.
          example: 31
        estimated_monthly_cost:
          type: integer
          title: Estimated Monthly Cost
          description: >-
            Forecast spend over 30 days, in micros (1,000,000 micros = 1 unit of
            the account's currency). This is the recommended daily budget times
            30, so it is a 30-day figure rather than a calendar month, and it
            can differ from the `daily_budget` you sent.
          example: 900000000
      type: object
      required:
        - estimated_daily_clicks_low
        - estimated_daily_clicks_high
        - estimated_monthly_cost
      title: GoogleAdsBudgetEstimate
      description: Google's forecast for a set of keyword themes at a daily budget.
    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.

````