meta_ads_creatives_create
Create a single-image Meta Ads ad creative by providing a destination URL, Facebook Page, and image (URL or hash). Optionally add headline, body text, and call-to-action. Returns the creative ID and object story ID for use in ad sets.
Instructions
Creates a single-image Meta Ads AdCreative. Returns the new creative's id and object_story_id. Mutating, reversible via rollback_apply (rollback soft-deletes the creative). Supply exactly one of image_url or image_hash — image_url triggers Meta to fetch and host the image; image_hash references an image already uploaded via meta_ads_creatives_upload_image or meta_ads_images_upload_file. For multi-image carousels use meta_ads_creatives_create_carousel; for dynamic / automatic optimization use meta_ads_creatives_create_dynamic.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Meta Ads account ID in the format 'act_XXXXXXXXXX' (e.g. 'act_1234567890'). Optional — falls back to META_ADS_ACCOUNT_ID from the configured credentials. The leading 'act_' prefix is required. | |
| name | Yes | Creative name shown in Ads Manager. Internal label — not visible to end users. | |
| page_id | Yes | Facebook Page ID that the ad will be published as. Must be a page the authenticated user has permission to post from. Required by Meta for every creative — ads cannot run without a page identity. | |
| link_url | Yes | Destination URL the ad links to when tapped. Must be HTTPS and domain-verified on the ad account. | |
| image_url | No | Public HTTPS image URL. Meta fetches and hosts the asset. Mutually exclusive with image_hash — supply exactly one of them. | |
| image_hash | No | Image hash returned from meta_ads_creatives_upload_image / meta_ads_images_upload_file. Mutually exclusive with image_url. | |
| message | No | Primary ad body text shown above the image. Plain text, emoji allowed. Meta recommends ≤125 characters to avoid truncation on mobile. | |
| headline | No | Headline shown below the image. ~40 characters fits most placements without truncation. | |
| description | No | Description / link-caption text shown below the headline. Optional; not all placements render it. | |
| call_to_action | No | Call-to-action button label. Valid values include LEARN_MORE, SIGN_UP, SHOP_NOW, DOWNLOAD, CONTACT_US, SUBSCRIBE, GET_QUOTE, BOOK_TRAVEL, APPLY_NOW. Omit to render no button (link tap still works). The valid set depends on the parent campaign's objective. |