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

# List Google Ads campaign changes

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

Returns a campaign's change history, newest first: every pause, resume, edit, and deletion, with who made it and when.

`event_type` says what happened. An `EDITED` entry carries the field and its before and after values in `details`. `actor` is `system` for a change Base44 made on its own, such as pausing a campaign over an unpaid balance, and otherwise identifies the user who made it.

Use `limit` to cap how many entries come back; the default is 50 and the most you can ask for is 500. There is no paging, so a campaign with a long history returns only its most recent entries.

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

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>



## OpenAPI

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


        Returns a campaign's change history, newest first: every pause, resume,
        edit, and deletion, with who made it and when.


        `event_type` says what happened. An `EDITED` entry carries the field and
        its before and after values in `details`. `actor` is `system` for a
        change Base44 made on its own, such as pausing a campaign over an unpaid
        balance, and otherwise identifies the user who made it.


        Use `limit` to cap how many entries come back; the default is 50 and the
        most you can ask for is 500. There is no paging, so a campaign with a
        long history returns only its most recent entries.


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


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>
      operationId: >-
        get_campaign_change_log_api_apps__app_id__google_ads_campaigns__campaign_id__change_log_get
      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: campaign_id
          in: path
          required: true
          schema:
            type: string
            description: >-
              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`.
            title: Campaign Id
          description: >-
            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`.
          example: 68b1c0d4e7b91d003c45a1f2
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 500
            minimum: 1
            description: Most entries to return, newest first.
            default: 50
            title: Limit
          description: Most entries to return, newest first.
      responses:
        '200':
          description: The campaign's changes, newest first.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CampaignChangeLogEntry'
                title: >-
                  Response 200 Get Campaign Change Log Api Apps  App Id  Google
                  Ads Campaigns  Campaign Id  Change Log Get
        '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 there is no campaign
            with this ID.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    CampaignChangeLogEntry:
      properties:
        id:
          type: string
          title: Id
          description: ID of the log entry.
          example: 68b1c0d4e7b91d003c45a1f3
        campaign_id:
          type: string
          title: Campaign Id
          description: Campaign the change applies to.
          example: 68b1c0d4e7b91d003c45a1f2
        event_type:
          type: string
          title: Event Type
          description: >-
            What happened: `CREATED`, `LAUNCHED`, `PAUSED`, `RESUMED`, `ENDED`,
            `DELETED`, or `EDITED`.
          example: PAUSED
        details:
          additionalProperties: true
          type: object
          title: Details
          description: >-
            Extra detail about the change. For an `EDITED` entry this carries
            `field`, `before`, and `after`; it is empty for the other event
            types.
          example:
            after: 15000000
            before: 10000000
            field: budget
        actor:
          type: string
          title: Actor
          description: >-
            Who made the change: `system` for an automatic change such as a
            billing pause, otherwise the ID of the user who made it.
          example: system
        created_date:
          type: string
          format: date-time
          title: Created Date
          description: When the change happened.
          example: '2026-08-25T14:05:00Z'
      type: object
      required:
        - id
        - campaign_id
        - event_type
        - details
        - actor
        - created_date
      title: CampaignChangeLogEntry
      description: One entry in a campaign's change log.
    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.

````