Ad Campaigns

Read a campaign's current bidding

Read of the campaign's bidding strategy on Google, cached for the quota window, for pre-filling the bid strategy block before a PUT to /v1/ads/campaigns/{campaignId}. Google Ads only; platform is required and rejected when it is anything else, since a campaignId is not globally unique. The response carries cachedAt and stale, set when a quota-exhausted call falls back to the last-good copy instead of a live read.

Maps Google's bidding strategy onto the same triplet PUT accepts: LOWEST_COST_WITHOUT_CAP (Maximize Conversions, no target), COST_CAP + bidAmount (Target CPA), LOWEST_COST_WITH_MIN_ROAS

  • roasAverageFloor (Target ROAS), LOWEST_COST_WITH_BID_CAP + bidAmount (Maximize Clicks with a CPC ceiling). A campaign on a portfolio strategy returns portfolio (id + name) and bidSpec.portfolioBidStrategyId instead of the triplet. Anything else (Manual CPC, Target Impression Share, ...) returns bidSpec: null; show biddingStrategyType as-is.
get/v1/ads/campaigns/{campaignId}/bidding

Path parameters

campaignIdstring required

Numeric Google platform campaign id.

Query parameters

accountIdstring required

Zernio Google Ads SocialAccount id: resolves the customer id + refresh token.

platform'google' required

Required: campaign IDs are not globally unique. Only "google" is supported today.

customerIdstring

Numeric Google Ads customer id (no dashes). Required when the connection has multiple Google Ads accounts; optional (and inferred) when it has only one.

Response

Campaign bidding

campaignIdstring
channel'SEARCH' | 'DISPLAY'

campaign.advertising_channel_type. COST_CAP's underlying Google field differs by channel; see bidStrategy on PUT.

biddingStrategyTypestring

Google's raw enum: MAXIMIZE_CONVERSIONS, TARGET_CPA, MAXIMIZE_CONVERSION_VALUE, TARGET_ROAS, TARGET_SPEND, MANUAL_CPC, TARGET_IMPRESSION_SHARE, or another Google adds later.

cachedAtstring date-time nullable

When this data was fetched from Google. Null when it was never served from cache.

staleboolean

True when Google's daily API quota was exhausted and this is the last successful fetch, not a live read.

Changes