v2

latestOpenAPI 3.1.02026-08-075421692.0 MB
Ad Campaigns

Update a campaign

Campaign-level edits. Send at least one of budget, bidStrategy, name or platformSpecificData. An unsupported field is always an error, never a silent drop.

Body fieldMetaGoogleOthers
bidStrategyYesYes501
bidAmount, roasAverageFloor400 — ad-set levelYes400
budget (CBO; ABO returns 409)Yes501501
nameYes501501
platformSpecificData.spendCapYes400400
accountId (empty campaigns)Yes--

Google maps the shared enum onto its own strategies: LOWEST_COST_WITHOUT_CAP to Maximize Clicks, LOWEST_COST_WITH_BID_CAP to Maximize Clicks with a max CPC (bidAmount), COST_CAP to Target CPA (bidAmount), LOWEST_COST_WITH_MIN_ROAS to Target ROAS (roasAverageFloor). A campaign on a PORTFOLIO bidding strategy is rejected: detach it in Google Ads first, since it is shared across campaigns.

accountId forwards the update straight to Meta for a campaign with zero ads, which would otherwise 404; the response then carries updated: 0.

put/v1/ads/campaigns/{campaignId}

Path parameters

campaignIdstring required

Platform campaign ID

Request body

platform'facebook' | 'instagram' | 'google' required

Required: platform campaign IDs are not globally unique.

accountIdstring

Meta only. Zernio SocialAccount id owning the ad account. Needed only for an EMPTY campaign (zero ads); ignored otherwise.

bidStrategy'LOWEST_COST_WITHOUT_CAP' | 'LOWEST_COST_WITH_BID_CAP' | 'COST_CAP' | 'LOWEST_COST_WITH_MIN_ROAS'

Meta bid strategy. Same enum applies at campaign and ad-set level; ad-set value (when set) overrides campaign-level. Cross-field rules:

  • LOWEST_COST_WITHOUT_CAP (default): auto-bid, forbids bidAmount and roasAverageFloor.
  • LOWEST_COST_WITH_BID_CAP / COST_CAP: require bidAmount (whole currency units).
  • LOWEST_COST_WITH_MIN_ROAS: requires roasAverageFloor (decimal multiplier, 2.0 = 2.0x). Source: facebook-business-sdk-codegen api_specs/specs/enum_types.json (AdSet_bid_strategy, Campaign_bid_strategy).
bidAmountnumber

Google only. Whole currency units (USD: 12 = $12.00). Max CPC for LOWEST_COST_WITH_BID_CAP, CPA target for COST_CAP; required for both.

roasAverageFloornumber

Google only. Decimal ROAS multiplier (2.0 = 2.0x), required for LOWEST_COST_WITH_MIN_ROAS.

namestring

Meta only. Rename the campaign.

Response

Campaign updated

updatedinteger

Local Ad documents mirrored. 0 on the empty-campaign path.

budgetLevel'campaign'
bidStrategy'LOWEST_COST_WITHOUT_CAP' | 'LOWEST_COST_WITH_BID_CAP' | 'COST_CAP' | 'LOWEST_COST_WITH_MIN_ROAS'

Meta bid strategy. Same enum applies at campaign and ad-set level; ad-set value (when set) overrides campaign-level. Cross-field rules:

  • LOWEST_COST_WITHOUT_CAP (default): auto-bid, forbids bidAmount and roasAverageFloor.
  • LOWEST_COST_WITH_BID_CAP / COST_CAP: require bidAmount (whole currency units).
  • LOWEST_COST_WITH_MIN_ROAS: requires roasAverageFloor (decimal multiplier, 2.0 = 2.0x). Source: facebook-business-sdk-codegen api_specs/specs/enum_types.json (AdSet_bid_strategy, Campaign_bid_strategy).
bidAmountnumber
roasAverageFloornumber
platformSpecificDataobject