Skip to main content
PUT
Update a campaign

Request contract

  • Method and path: PUT /apis/v1/ads/campaigns/{campaignId}
  • Availability: enabled
  • Request URL template: https://api.aisa.one/apis/v1/ads/campaigns/{campaignId}
  • campaignId: path; required
  • connectionId: query; required
  • X-Aisa-Confirm: header; optional
  • Runtime facts: fe60122939c67dc98a3a6ac6b97bd5c326b526105150c8959304dd2160d4dd09
Complete OpenAPI definition Effective request and pricing declaration (including authentication and referenced schemas):

Cost and request rules

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

X-Aisa-Confirm
enum<string>

Required with the value "spend" when the request can spend money or change spend. Without it the request is refused with 409 confirmation_required, which describes what would happen; nothing is sent to the ad platform.

Available options:
spend

Path Parameters

campaignId
string
required

Platform campaign ID

Query Parameters

connectionId
string
required

The ads connection (adc_...) the request runs on: one of yours, from GET /apis/v1/ads/connections. On a request with a JSON body it may be sent as a top-level body member instead.

Pattern: ^adc_[0-9A-Za-z]+$

Body

application/json
allowSharedBudgetUpdate
boolean
default:false

Google only. Explicitly allow changing a shared campaign budget (flagged as shared by Google, or used by more than one campaign), affecting every campaign that uses it. Does not bypass an unknown sharing state.

bidAmount
number

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.

bidStrategy
enum<string>

Meta + Google. Meta: the campaign default that ad sets inherit unless they override it. Google: the campaign's own bidding strategy.

Available options:
LOWEST_COST_WITHOUT_CAP,
LOWEST_COST_WITH_BID_CAP,
COST_CAP,
LOWEST_COST_WITH_MIN_ROAS
budget
object

Meta CBO, Google daily, or OpenAI Ads or Reddit Ads daily or lifetime campaign budget, in whole currency units.

connectionId
string

The ads connection (adc_...), when not sent as the connectionId query parameter.

Pattern: ^adc_[0-9A-Za-z]+$
finalUrlSuffix
string

Google only. campaign.final_url_suffix; an empty string clears it.

manualCpc
object

Google Search and Display only. Manual CPC bidding. Enhanced CPC is not offered: Google no longer lets Search and Display campaigns enable it. Exclusive with every other strategy field.

name
string

Meta and Reddit. Rename the campaign.

Maximum string length: 255
networkSettings
object

Google Search campaigns only. Which networks the campaign serves on besides Google Search.

platform
enum<string>

Required: platform campaign IDs are not globally unique. Filled from the connection when omitted.

Available options:
facebook,
instagram,
tiktok,
linkedin,
pinterest,
google,
twitter,
openai,
reddit,
microsoft,
meta,
x
platformSpecificData
object

Meta only. Platform implied by the platform body param, same convention as POST /apis/v1/ads/create.

portfolioBidStrategyId
string

Google only. Attach an existing portfolio bid strategy (numeric id from GET /apis/v1/ads/bid-strategies) instead of setting bidStrategy. Exclusive with bidStrategy.

Pattern: ^\d+$
roasAverageFloor
number

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

sharedBudgetId
string | null

Google only. Move the campaign onto this shared budget (id from GET /apis/v1/ads/shared-budgets), or null to move it back onto a budget of its own sized by budget.

Pattern: ^\d+$
targetImpressionShare
object

Google Search only. Target impression share bidding. Exclusive with bidStrategy, portfolioBidStrategyId and manualCpc; bidAmount is refused alongside it (the ceiling is maxCpc).

trackingUrlTemplate
string

Google only. campaign.tracking_url_template; an empty string clears it.

Response

Campaign updated

Echoes back only the fields you sent, plus updated.

bidAmount
number
bidStrategy
enum<string>

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.

Available options:
LOWEST_COST_WITHOUT_CAP,
LOWEST_COST_WITH_BID_CAP,
COST_CAP,
LOWEST_COST_WITH_MIN_ROAS
budget
object

Budget amount in the ad account's native currency (see the campaign's currency field for the code).

budgetLevel
enum<string>
Available options:
campaign
finalUrlSuffix
string
manualCpc
object

Google Search and Display only. Manual CPC bidding. Enhanced CPC is not offered: Google no longer lets Search and Display campaigns enable it. Exclusive with every other strategy field.

networkSettings
object

Google Search campaigns only. Which networks the campaign serves on besides Google Search.

platformSpecificData
object
portfolioBidStrategyId
string

Google only. Echoed back, but NOT mirrored onto local Ad documents (no column for it yet).

roasAverageFloor
number
sharedBudgetId
string | null

Google only. Echoed back when the campaign moved budgets; budget is then the budget it now uses.

targetImpressionShare
object

Google only. Target impression share bidding (Search campaigns only): Google sets bids so the ads show in location for percent of eligible impressions.

trackingUrlTemplate
string
updated
integer

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