Create or Update Image Ad
create_update_image_adCreate OR update an IMAGE (or GIF) ad on Facebook, Instagram, LinkedIn, and/or Reddit.
TO UPDATE: include id; to CREATE: omit it.
CREATIVE WORKFLOW:
1. Upload the image/GIF via `upload_image_creative` → response gives `id` (the imageLibraryId).
2. Pass that integer as `creativeID` here.
- Need a new image? `generate_brand_creative` → `upload_image_creative` → `create_update_image_ad`.
ALSO KNOWN AS: create image ad, update image ad, edit image ad,
modify image ad, image creative, post image, image post, photo ad.
KEYWORDS: image, gif, create, update, edit, modify, ad, ads, image ad, image ads,
image creative, photo, picture, banner, image campaign, image upload,
LinkedIn image, Facebook image, Instagram image, Reddit image, IG post.
CLIENT-SIDE VALIDATION (refuses what the platform UI would also reject):
- adName: required, max 50 chars, pattern `[a-zA-Z0-9 _.?,:'/+\-=&;%$#\[\]|()]`.
- creativeID: required integer (imageLibraryId from `upload_image_creative`).
- Landing-page URL is per channel (`facebookDisplayURL`,
`instagramDisplayURL`, `linkedinDisplayURL`, `redditDisplayURL`).
Required for FB/IG/LinkedIn, optional for Reddit. Per-channel
caps: LinkedIn max 2000, Reddit max 100, FB/IG no length rule.
URL format accepts both `metadata.io` and `https://metadata.io`
for IMAGE ads. If only one channel's URL is set the server fans
it across the other targeted channels; each channel's cap is
then enforced per channel.
- LinkedIn: linkedinText (required, max 3000), linkedinHeadline (required,
max 200), linkedinDescription (optional, max 300 — IMAGE only),
linkedinCTA (required, must be a valid LinkedIn CTA enum).
- Facebook: metaCTA (required), facebookText (required, no length rule on
Facebook), facebookHeadline (required, max 250), facebookDescription
(optional, max 300).
- Instagram: metaCTA (required), instagramText (required, max 125),
instagramHeadline (required, max 40), instagramDescription (optional, max 30).
- FB+IG ad with one body text: set just one of facebookText / instagramText
and the server copies it across (capped at the receiving channel's limit).
Set both explicitly only when you want per-channel copy.
- Reddit: redditHeadline (required, max 300), redditCTA (required, must be a
valid Reddit CTA enum). redditThumbnailLibraryId is optional and defaults to
creativeID.
COMMON CTA VALUES:
- LinkedIn: LEARN_MORE, REGISTER, APPLY_NOW, DOWNLOAD, JOIN, SIGN_UP,
GET_QUOTE, ATTEND, REQUEST_DEMO, SUBSCRIBE. (UNLOCK_FULL_DOCUMENT is
DOCUMENT-only — use create_update_document_ad, not this tool.)
- Facebook/Instagram: APPLY_NOW, DOWNLOAD, GET_QUOTE, LEARN_MORE, SIGN_UP, SUBSCRIBE.
(SCREAMING_SNAKE form only; the platform supports a strict subset of Meta's
native catalog. Out-of-set values like BOOK_NOW / GET_STARTED are rejected.)
- Reddit: Apply Now, Contact Us, Download, Get a Quote, Learn More, Play Now,
Sign Up, View More, Watch Now, Book Now, Listen Now, Read More, Subscribe.
See `create_update_video_ad` for video-creative ads (different libraryId source +
stricter URL format).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ads_data | Yes | Array of IMAGE ads to create or update. Each item targets one or more of FB/IG/LinkedIn/Reddit; the platform creates one ad row per (ad, channel). |