Get Google Ads campaign

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

get/api/apps/{app_id}/google-ads/campaigns/{campaign_id}

Path parameters

app_idstring required

ID of the app whose Google Ads campaigns to manage.

ID of the app whose Google Ads campaigns to manage.

campaign_idstring required

Base44's ID for the campaign, as returned in id by List campaigns. This is not the Google Ads campaign ID, which is reported separately as google_campaign_id.

Base44's ID for the campaign, as returned in id by List campaigns. This is not the Google Ads campaign ID, which is reported separately as google_campaign_id.

Response

Successful Response

idstring required

Base44's ID for the campaign. Pass this as campaign_id on the other campaign endpoints.

google_campaign_idstring required

The campaign's ID in Google Ads. Empty while a just-created campaign is still being pushed to Google.

campaign_namestring 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_microsinteger required

Daily budget in micros of the account currency, where 1,000,000 micros is one unit, so 15000000 is 15.00.

landing_pagestring required

URL the ads send clicks to.

geo_targetsstring[] required

Google Ads geo target constant IDs the campaign targets.

phone_numberstring 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_atstring 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_statusstring required

Google's policy review status, passed through as Google reports it (REVIEWED, UNDER_REVIEW, …). Empty until the first sync after creation.

serving_statusstring 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_statusstring required

Google's summary of whether the campaign is serving well, passed through as Google reports it (ELIGIBLE, LIMITED, NOT_SERVING, …).

primary_status_reasonsstring[] required

Google's reasons behind primary_status, for example why a campaign is limited. Empty when there is nothing to explain.

created_datestring date-time required

When the campaign was created in Base44.

updated_datestring date-time required

When Base44 last changed its record of the campaign.

Example response

{
  "id": "68b1c0d4e7b91d003c45a1f2",
  "google_campaign_id": "21098765432",
  "campaign_name": "Spring sale in Berlin",
  "campaign_type": "SMART",
  "status": "ENABLED",
  "daily_budget_micros": 15000000,
  "landing_page": "https://example.com/spring",
  "geo_targets": [
    "1003854"
  ],
  "phone_number": "+493012345678",
  "learning_ends_at": "2026-09-08T11:20:00Z",
  "review_status": "REVIEWED",
  "serving_status": "SERVING",
  "primary_status": "ELIGIBLE",
  "primary_status_reasons": [
    "CAMPAIGN_BUDGET_LIMITED"
  ],
  "created_date": "2026-08-25T11:20:00Z",
  "updated_date": "2026-08-25T14:05:00Z"
}

Changes

No recorded changes to this endpoint across all 1 revision of this API.