late 0.0.1339

API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema). Request ids: responses carry an X-Request-Id header with the id we log the request under. Quote it when reporting a problem. A valid x-request-id you send is reused as that id.
Documentation
# UpdateAdRequestCreative

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**promotion** | Option<**serde_json::Value**> | Not supported. Send null or omit the field, and set the Promotion on the ad in Ads Manager. Any object is rejected with 400 invalid_field_value.  Meta validates creative_sourcing_spec.promotion_metadata_spec on the create call and then discards it, so a Promotion set through the Marketing API never reaches the creative. Verified on 2026-09-11 across Graph v19.0 to v25.0 and every write path.  | [optional]
**creative_features** | Option<**std::collections::HashMap<String, Inner>**> | Meta Advantage+ creative enhancements. Map snake_case feature names to OPT_IN or OPT_OUT; Meta validates supported keys and unspecified features default to OPT_OUT. auto_promotion_tag is an Advantage+ enhancement, not the Ads Manager Promotion setting. The deprecated standard_enhancements bundle (subcode 3858504) is a 400 before any Meta call. (enum: OPT_IN, OPT_OUT) | [optional]
**catalog_format** | Option<**CatalogFormat**> | Meta catalog template ads only. Rebuilds the creative with this `template_data.format_option` (same mapping as on create) and repoints the ad at the new creative.  Returns 400 on any other network, on a Meta ad without a catalog template creative, or with `existingCreativeId`. Copy or media fields return 422 on a catalog creative. (enum: single_image, carousel_images_multi_items, carousel_images_single_item, carousel_slideshows) | [optional]
**headline** | Option<**String**> | Meta and LinkedIn (TikTok has no headline slot) | [optional]
**long_headline** | Option<**String**> | Google Display only. Replaces the responsive display ad's long headline. | [optional]
**business_name** | Option<**String**> | Google Display only. Replaces the responsive display ad's business name. | [optional]
**square_image_url** | Option<**String**> | Google Display only. Uploaded as a new square (1:1) marketing image asset that replaces the current one. | [optional]
**body** | Option<**String**> | Primary text. On a Meta asset_feed creative it replaces the feed's only body option (422 when it has several: send `bodies`). | [optional]
**bodies** | Option<**Vec<String>**> | Meta only. The primary text options of an asset_feed creative, one text per option in the order GET /v1/ads/{adId} returns them. Each replaces the option in its position and keeps its rule. A different count returns 422, as does a single-text creative (send `body`). Not with `body`. | [optional]
**headlines** | Option<**Vec<String>**> | Meta only. Same as `bodies`, for the headline options (Meta `asset_feed_spec.titles`). Cannot be sent with `headline`. Not the top-level Google `headlines`. | [optional]
**description** | Option<**String**> | Link description slot (Meta `link_data.description` / `video_data.link_description`, LinkedIn creative description). | [optional]
**descriptions** | Option<**Vec<String>**> | Meta only. Same as `bodies`, for the description options. Cannot be sent with `description`. Not the top-level Google `descriptions`. | [optional]
**call_to_action** | Option<**String**> |  | [optional]
**link_url** | Option<**String**> |  | [optional]
**image_url** | Option<**String**> |  | [optional]
**video_url** | Option<**String**> |  | [optional]
**video_id** | Option<**String**> | Meta only. Reuse an already-uploaded ad video (from POST /v1/ads/videos or GET /v1/ads/videos) instead of re-uploading via videoUrl. | [optional]
**existing_creative_id** | Option<**String**> | Meta only. Repoint the ad at an existing library creative (from GET /v1/ads/creatives); all other creative fields are ignored. | [optional]

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)