Change an Apple Ads campaign, ad group or keyword
Pause or enable a campaign, ad group, or keyword, change a keyword or ad-group bid, or change a campaign daily budget.
Requires Qonversion MCP authorization with the acting dashboard user and apple_ads:write scope. A project Secret Key alone is insufficient; direct callers without MCP authorization receive 403. The user needs Manage Apple Ads campaigns permission and an Apple connection that allows changes. Accounts without Apple Ads access receive 404.
Send one of status, bid, or daily_budget with the matching before_* value. Bid and budget amounts are decimal strings in the advertising account’s currency. Reuse idempotency_key for the same attempt; Idempotency-Key is an alternative when the body omits it. dry_run: true simulates only and returns would_send. Caller query parameters are refused with 400 invalid_request and reason unsupported_parameter; put dry_run in the JSON body.
Limits are per project: 10 changes per rolling minute, 60 per rolling hour, 20 enables, 20 bid increases, and 10 budget increases per rolling 24 hours. Each change stops counting 24 hours after it was made. Pauses and decreases do not count toward daily increase limits. A bid or budget increase cannot exceed three times the confirmed current amount.
After 409, read the current value before trying again. A 502 or 504 leaves the outcome unknown; check the report before retrying.
Authorizations
Bearer authentication using the project Secret Key (prefixed with sk_), used exactly as shown in the dashboard. Endpoints that support sandbox data take an explicit environment field or parameter. All v4 public endpoints require the Secret Key — see Authentication. Never expose the Secret Key in client-side code.
Authorization supplied by Qonversion MCP, naming the acting dashboard user and granted scopes. Required together with secretAuth for campaign management. Direct HTTP clients cannot supply this authorization.
Headers
Alternative to the body field. Copied into idempotency_key when the body omits it.
64Body
Exactly ONE of status, bid, daily_budget, and the matching before_* value, which is mandatory.
Which entity is being changed. Ids below the level are ignored.
campaign, ad_group, keyword Apple campaign id. A STRING: Apple ids are int64.
Required. Reuse for the same attempt. A different body with the same key returns 409.
64Required for ad_group and keyword levels.
Required for the keyword level.
Required for the keyword level — Apple wants the keyword identity echoed back.
Required for the keyword level (e.g. EXACT, BROAD).
Optional. The organization is DERIVED server-side from the campaign; a value that disagrees with the resolved one is rejected rather than silently overriding it.
New status. ACTIVE is accepted as the keyword-level spelling of ENABLED.
ENABLED, PAUSED, ACTIVE Required with status. The status you believe is current — a mismatch is a 409.
New bid, a decimal STRING in the advertising account's currency (never converted). Ad group and keyword levels.
Required with bid. Also bounds the change: a bid more than three times the current confirmed one is refused. When there is no confirmed history the ceiling cannot be applied and the response says so with baseline_unverified.
New campaign daily budget, a decimal STRING in the advertising account's currency.
Required with daily_budget.
Simulate only. Nothing is sent to Apple and the response carries would_send.
Response
The change was accepted by Apple, or simulated when dry_run was set.
Apple confirmed the new value. false together with applied means the change was accepted but not yet reflected back.
The change was submitted to Apple.
True when nothing was sent.
Identifier of this change; include it when contacting support.
Present and true when there was no confirmed bid history for this entity, so the ×3 ceiling could NOT be applied and the change was counted as a raise. Treat it as a prompt for explicit human confirmation: it is the one signal that the server could not check the size of what it was about to do.
Dry runs only — the exact payload Apple would have received.