zuckerbot_create_ad
Add a new image or video ad to an existing ad set. Preview the exact ad plan first, then execute to create the ad paused.
Instructions
Create ONE new ad (a new creative built from a declared asset) in an EXISTING ad set of the connected ad account — the way to add a brand-new image or video into a campaign that is already running, including ZuckerBot-external campaigns. Dry-run by default: returns the exact object plan (1 new creative + 1 new ad) without creating anything; pass execute: true plus an idempotency_key to build it. The ad is ALWAYS created PAUSED — activating it is a separate deliberate action. Asset: IMAGE (image_hash from zuckerbot_upload_ad_asset, or image_url — uploaded to the library automatically) or VIDEO (video_id from zuckerbot_upload_ad_asset, which must be processed/ready; thumbnail auto-derived, thumbnail_url overridable). Destination: exactly one of final_url (website) or lead_form_id (instant form — requires cta). VIDEO ads carry their link in the call_to_action, so VIDEO + final_url also requires cta. To clone an ad that already exists in the account instead, use zuckerbot_duplicate_ad.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | Uppercase Meta CTA type, e.g. LEARN_MORE or SIGN_UP (required for VIDEO ads and instant-form destinations) | |
| name | Yes | Name for the new ad | |
| execute | No | Default false (dry-run). Set true to actually create the PAUSED ad — requires idempotency_key | |
| headline | No | Headline | |
| video_id | No | VIDEO: Meta video id (from zuckerbot_upload_ad_asset; must be processed/ready) | |
| final_url | No | Website destination URL (exactly one of final_url or lead_form_id) | |
| image_url | No | IMAGE: https URL — uploaded to the ad-account library automatically on execution | |
| asset_type | Yes | IMAGE (image_hash or image_url) or VIDEO (video_id) | |
| image_hash | No | IMAGE: 32-char Meta library image hash (from zuckerbot_upload_ad_asset) | |
| business_id | No | Optional business ID override for the authenticated API key | |
| description | No | Description | |
| lead_form_id | No | Meta instant-form id on the connected Page (exactly one of final_url or lead_form_id; see zuckerbot_lead_forms) | |
| primary_text | No | Primary text / body copy | |
| thumbnail_url | No | VIDEO: optional https thumbnail override (default: derived from the processed video) | |
| thumbnail_hash | No | VIDEO: optional library image hash to use as the thumbnail | |
| idempotency_key | No | Required when execute is true. Generate once per logical operation (UUIDv4 recommended); reuse the identical value only when retrying the identical request | |
| target_adset_id | Yes | Numeric Meta ad set id to create the ad in (must be an EXISTING ad set in the connected ad account) |