Ad Campaigns

Update ad

Patch one or more fields on an ad. Status, budget, targeting, and creative changes are propagated to the platform.

Per-platform support:

  • Meta (Facebook + Instagram): all fields supported.
  • TikTok: status, budget, targeting (via /v2/adgroup/update/), and creative (via /v2/ad/update/ patch-style — headline is ignored, body becomes ad_text).
  • Google: status, budget, and KEYWORD edits via targeting.keywords / targeting.negativeKeywords — each list you send becomes the FULL new set of its kind on the ad group (criteria not in the list are removed); a kind left out is untouched. Any other targeting field returns 400: Google cannot mutate broad targeting post-create without recreating the campaign. creative returns 501.
  • Pinterest / X / LinkedIn / OpenAI Ads: status + budget only. Sending targeting or creative returns 501 with code unsupported_platform_operation. OpenAI Ads budget is lifetime-only (see budget.type below).
put/v1/ads/{adId}

Path parameters

adIdstring required

Request body

status'active' | 'paused'
namestring

Rename the ad. Now propagated to Meta (POST /{ad-id}); non-Meta platforms return 501.

Response

Ad updated

messagestring

Example response

{
  "ad": {
    "configuredStatus": "ACTIVE",
    "creativeType": "video",
    "metrics": {
      "actions": {
        "link_click": 160,
        "post_engagement": 300,
        "offsite_conversion.fb_pixel_purchase": 42
      },
      "actionValues": {
        "offsite_conversion.fb_pixel_purchase": 2456.78,
        "offsite_conversion.fb_pixel_add_to_cart": 980.5
      },
      "costPerAction": {
        "link_click": 0.1052,
        "offsite_conversion.fb_pixel_purchase": 4.0114
      }
    },
    "platformObjective": "OUTCOME_SALES",
    "optimizationGoal": "OFFSITE_CONVERSIONS",
    "costType": "CPC",
    "servingStatuses": [
      "ACCOUNT_TOTAL_BUDGET_HOLD"
    ],
    "platformAdAccountName": "Zernio - previously Late",
    "bidAmount": 5,
    "roasAverageFloor": 2,
    "promotedObject": {
      "custom_event_type": "PURCHASE"
    },
    "creative": {
      "servingHoldReasons": [
        "UNDER_REVIEW"
      ]
    }
  }
}

Changes

Changed in 5 of the 26 revisions of this API.111

    • added the new page_likes enum value to the ad/goal response property for the response status 200

      response-property-enum-value-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • added the non-success response with the status 502

      response-non-success-status-added

    • added the optional property ad/creative/creativeId to the response with the 200 status

      response-optional-property-added

    • added the optional property ad/metrics/anyOf[AdMetrics]/costPerAction to the response with the 200 status

      response-optional-property-added

    • added the optional property ad/metrics/anyOf[AdMetrics]/inlineLinkClickCtr to the response with the 200 status

      response-optional-property-added

    • added the optional property ad/metrics/anyOf[AdMetrics]/inlineLinkClicks to the response with the 200 status

      response-optional-property-added

    • added the optional property ad/metrics/anyOf[AdMetrics]/outboundClicks to the response with the 200 status

      response-optional-property-added

    • added the optional property ad/metrics/anyOf[AdMetrics]/outboundClicksCtr to the response with the 200 status

      response-optional-property-added

    • added the optional property ad/metrics/anyOf[AdMetrics]/uniqueClicks to the response with the 200 status

      response-optional-property-added

    • added the optional property ad/metrics/anyOf[AdMetrics]/uniqueCtr to the response with the 200 status

      response-optional-property-added

    • added the new optional request property targeting/keywords

      new-optional-request-property

    • added the new optional request property targeting/negativeKeywords

      new-optional-request-property