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

# Get Google Ads campaign

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

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

Returns one campaign, with the status fields Google reports for it.

Use this for a single campaign's current state. It reads the same cache as [List campaigns](/api-reference/list-google-ads-campaigns) and additionally folds in a live check of whether Google has disapproved the campaign's assets, so a rejected Performance Max campaign shows up here.

<Note>A campaign's name, budget, and targeting come from Base44's own record, which is refreshed in the background, so a change made directly in the Google Ads UI can take a few minutes to appear here.</Note>

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

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

- CampaignResource — The campaign fields this API commits to.
  - `id` string, required — Base44's ID for the campaign. Pass this as `campaign_id` on the other campaign endpoints.
  - `google_campaign_id` string, required — The campaign's ID in Google Ads. Empty while a just-created campaign is still being pushed to Google.
  - `campaign_name` string, required — Name shown for the campaign.
  - `campaign_type` 'SMART' | 'PERFORMANCE_MAX' | 'SEARCH' | 'DISPLAY' | 'SHOPPING' | 'VIDEO' | 'DEMAND_GEN' | 'LOCAL' | 'UNKNOWN', required — Campaign type. Base44 creates `SMART` and `PERFORMANCE_MAX`. The other values appear only on campaigns created outside Base44 and synced in.
  - `status` 'ENABLED' | 'PAUSED' | 'REMOVED' | 'UNKNOWN', required — Serving state in Base44's cache. A status of `REMOVED` is a deleted campaign, which Google keeps for reporting.
  - `daily_budget_micros` integer, required — Daily budget in micros of the account currency, where 1,000,000 micros is one unit, so `15000000` is 15.00.
  - `landing_page` string, required — URL the ads send clicks to.
  - `geo_targets` string[], required — Google Ads geo target constant IDs the campaign targets.
  - `phone_number` string, required — Campaign phone number, empty when the campaign has none. E.164 on PERFORMANCE_MAX (where it is a call asset); as typed on SMART.
  - `learning_ends_at` string, date-time, nullable — When Smart Bidding's learning period is expected to end, about 14 days after creation, or `null` on a campaign that has not started learning.
  - `review_status` string, required — Google's policy review status, passed through as Google reports it (`REVIEWED`, `UNDER_REVIEW`, …). Empty until the first sync after creation.
  - `serving_status` string, required — Google's serving status, passed through as Google reports it. Can still report review gating after policy review clears, so read it alongside `review_status`.
  - `primary_status` string, required — Google's summary of whether the campaign is serving well, passed through as Google reports it (`ELIGIBLE`, `LIMITED`, `NOT_SERVING`, …).
  - `primary_status_reasons` string[], required — Google's reasons behind `primary_status`, for example why a campaign is limited. Empty when there is nothing to explain.
  - `created_date` string, date-time, required — When the campaign was created in Base44.
  - `updated_date` string, date-time, required — When Base44 last changed its record of the campaign.

## Other responses

- `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.
- `404` — The app has no connected Google Ads account, or there is no campaign with this ID.

---

[API](https://skmtc.dev/base44/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/base44/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/base44/base44-app-management-api/revisions/173e4e9c63c2/schema)
