Change an Apple Ads campaign, ad group or keyword
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 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: if it disagrees with a status Qonversion recently saw Apple confirm, the change is refused with 409 value_changed.
New bid. Keyword level only — ad-group bids cannot be changed. Must be an {amount, currency} object; a plain number or string is refused with 422.
Required with bid: the current bid, as a decimal string or an {amount, currency} object. A new bid more than three times the last bid Qonversion saw Apple confirm is refused with 422. When there is no confirmed history the ceiling is not applied and the response says so with baseline_unverified.
New daily budget. Campaign level only. Must be an {amount, currency} object; a plain number or string is refused with 422.
Required with daily_budget: the current daily budget, as a decimal string or an {amount, currency} object. The same three-times ceiling applies as for bids.
Required — in the body, or via the Idempotency-Key header when the body has none (a key in the body wins); a request without it is refused with 422. Resending the same change with the same idempotency_key returns the original result with replayed: true. Reusing the key for a different change returns 409 idempotency_key_reuse. With the Idempotency-Key header, the API also caches successful (2xx) answers for 24 hours: a byte-identical resend gets the cached answer without replayed, and a different body with the same header key gets 409 idempotency_conflict. A dry run consumes its key: send the live change with a different key, otherwise you get the dry-run result back.
64Simulate 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. A repeat of an earlier request with the same idempotency_key returns that request's stored result with replayed: true.
The entity's values as Apple confirmed them after the change, or null when Apple did not return them. Verify a change from this value, not by re-reading the report.
- Option 1
- Option 2
The change was submitted to Apple.
True when nothing was sent.
Identifier of this change; include it when contacting support.
Present and true when this response repeats the stored result of an earlier request with the same idempotency_key; nothing was changed again.
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 (an array of one element for a keyword).
- object
- object[]