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

# Delete Google Ads campaign

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

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/google-ads/campaigns/{campaign_id}`
- Auth: HTTP bearer

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

Deletes a campaign and stops it serving.

This is permanent. There is no undo, and the campaign cannot be restored through this API. To stop a campaign temporarily, use [Pause campaign](/api-reference/pause-google-ads-campaign) instead.

Google keeps a deleted campaign for reporting, so it stays in [List campaigns](/api-reference/list-google-ads-campaigns) with `status` of `REMOVED` and its past performance still counts toward account totals.

<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.</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`.

## Response `200`

Successful Response

- CampaignStatusResponse: Acknowledgement returned by the single-campaign state changes.
  - `status` string, required: The action that was applied: `paused`, `resumed`, or `deleted`.

## 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.
- `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. Marketing setup, campaign edits, generation and resuming also return `app_marketing_not_allowed` when the app's owning workspace has the FERPA designation. Historical reads, pausing, deletion and financial settlement remain available.
- `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.
- `429`: Google Ads is rate limiting the account. Retry later.

## Changes

> 70 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/campaigns/:campaign_id/delete.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/77fa614f2e21?raw)
