Docs menu
Get started
What is Opus GrowthQuickstartAdd to your AIHow it worksSafety and approvalCreditsPlansFAQAI apps
All AI appsChatGPTClaudeGrokPerplexityClaude CodeCodexGemini CLIOpenClawCursorVS CodeWindsurfOther MCPConnect ad platforms
Google AdsMeta AdsLinkedIn AdsMicrosoft AdvertisingTikTok AdsChatGPT AdsAgencies and MCCConnect data sources
Search ConsoleGoogle AnalyticsYouTubeBusiness ProfileTag ManagerWebsites and SEO
AI ServerWordPressSEO IntelligenceClick fraudTool reference
All toolsGoogle AdsMeta AdsTikTok AdsLinkedIn AdsMicrosoft AdvertisingChatGPT AdsSearch ConsoleGoogle AnalyticsYouTubeBusiness ProfileTag ManagerWordPressAI ServerSEO IntelligenceClick fraudCross-channelAccount and billingLanguage
Create Meta Link Ad
Creates a Meta link ad (creative + ad in one step).
- Type
- Makes changes
- Credits
- 8
- Platform
- Meta Ads
- Approval
- Preview first, applied after you approve
What it does
Creates a Meta link ad (creative + ad in one step). page_id is REQUIRED — every Meta ad runs on behalf of a Facebook Page (find it with list_meta_pages). The image is ONE of: image_hash (already uploaded via upload_meta_image; reusable, no re-upload), image_base64 (the file itself, such as one dropped into the chat) or image_url (public link). JPEG/PNG/GIF/WebP, ≤8MB. cta_type = the button: LEARN_MORE | SHOP_NOW | SIGN_UP | BUY_NOW | GET_OFFER | GET_QUOTE | CONTACT_US | APPLY_NOW | ORDER_NOW | SEND_MESSAGE | WHATSAPP_MESSAGE | INSTAGRAM_MESSAGE | VIEW_INSTAGRAM_PROFILE | CALL_NOW | BOOK_TRAVEL | DOWNLOAD | SUBSCRIBE | NO_BUTTON — leave EMPTY to auto-pick from the campaign objective (SALES→SHOP_NOW, LEADS→SIGN_UP, else LEARN_MORE). WHATSAPP_MESSAGE / SEND_MESSAGE / INSTAGRAM_MESSAGE make the button OPEN A CHAT (WhatsApp / Messenger / Instagram Direct) instead of a website; they pair with a messaging ad set (optimization_goal CONVERSATIONS, destination_type WHATSAPP / MESSENGER / INSTAGRAM_DIRECT). THE BUTTON MUST MATCH THE AD SET'S destination_type: INSTAGRAM_DIRECT needs INSTAGRAM_MESSAGE (a link button such as LEARN_MORE is accepted at creation but the ad then NEVER delivers, error 1487891; MESSAGE_PAGE/SEND_MESSAGE is rejected on Instagram, subcode 2875003). Leave cta_type empty and it is derived from destination_type automatically. Messaging ads can PRE-FILL the chat: welcome_message = the text that auto-populates the user's WhatsApp/Messenger compose box (the ready-written message they send with one tap); greeting = an optional greeting shown in the thread; ice_breakers = up to 4 tappable quick-reply options (each ≤80 chars) shown when the chat first opens (if given, these replace the auto-fill; Meta allows one or the other). These only apply when cta_type is WHATSAPP_MESSAGE / SEND_MESSAGE / INSTAGRAM_MESSAGE. BACKGROUND MUSIC / AUDIO / SOUNDTRACK: music=true is Ads Manager's "Add music" (Advantage+ `audio` enrollment) — Meta turns the still image into a short video with an auto-picked track; enhancements=['animate_image','image_enhancement',...] enrolls the other Advantage+ creative features. The response reports enhancements_applied vs enhancements_not_applied, so a request Meta ignores is never reported as success. INSTAGRAM IDENTITY: by default Meta derives the Instagram account from page_id, which silently picks one when the Page has several — pass instagram_user_id (from list_meta_instagram_accounts) to choose it explicitly. Either way the response returns the instagram_user_id the ad ACTUALLY runs from, so you can confirm the identity without opening Ads Manager. For a SPECIFIC song, embed it in a video and use create_meta_video_ad (or upload_meta_video + update_meta_ad_creative(video_id=...)) — the Marketing API has no field to pick a Sound Collection track. The ad is created PAUSED and goes through Meta review. LEAD ADS (Instant Form): lead_gen_form_id makes the button open Meta's instant form instead of a website; it pairs with a LEAD_GENERATION ad set (promoted_object page_id) and cta_type SIGN_UP / APPLY_NOW / GET_QUOTE. You can build the form itself here too (create_meta_lead_form) or reuse one made in Meta Ads Manager (Page > Instant Forms) by passing its ID. If Meta answers (#200) the account was connected before this permission was granted — reconnect Meta from the panel once. confirm=false = preview.
MCP: create_meta_link_ad
How to use it
You don't call tools by name. Write what you want in ChatGPT, Claude or another assistant connected to Opus Growth, in your own words; it picks this tool when it fits.
Parameters
| Name | Type | Required | Default | |
|---|---|---|---|---|
| account_id | string | Required | · | Advertising account identifier to query or change. Use the exact ID returned by the relevant account-listing tool, not the display name. |
| adset_id | string | Required | · | Exact adset identifier to target. Use the ID returned by an Opus Growth list or create operation, not a display name. |
| name | string | Required | · | Human-readable name for the resource being created or updated. |
| page_id | string | Required | · | Exact page identifier to target. Use the ID returned by an Opus Growth list or create operation, not a display name. |
| message | string | Required | · | Primary message or ad-copy text presented to the audience. |
| link | string | Required | · | Destination link or link object for the ad or resource, in the provider format required by this operation. |
| headline | string | Optional | · | Primary ad headline text, within the provider's character and policy requirements. |
| image_url | string | Optional | · | Publicly reachable image URL for the creative or resource. |
| image_base64 | string | Optional | · | Base64-encoded image bytes in the format required by the provider's upload endpoint. |
| image_hash | string | Optional | · | Provider image hash returned by the corresponding image-upload operation. |
| cta_type | string | Optional | · | APPLY_NOW · BOOK_TRAVEL · BUY_NOW · CALL_NOW · CONTACT_US · DOWNLOAD · GET_OFFER · GET_QUOTE · INSTAGRAM_MESSAGE · LEARN_MORE · NO_BUTTON · ORDER_NOW · Call-to-action button type accepted by the provider, such as LEARN_MORE or SIGN_UP. |
| status | string | Optional | PAUSED | Desired provider status for this resource; choose an allowed value from this schema. |
| welcome_message | string | Optional | · | Exact welcome message value for create meta link ad. Supply text in the provider's required format; when it selects an existing resource, use the exact identifier returned by the relevant list or search operation. |
| greeting | string | Optional | · | Exact greeting value for create meta link ad. Supply text in the provider's required format; when it selects an existing resource, use the exact identifier returned by the relevant list or search operation. |
| ice_breakers | array | Optional | · | Ice breakers value for create meta link ad. Follow the documented provider format and use values returned by Opus Growth discovery tools where possible. |
| music | boolean | Optional | false | Whether to enable music for this operation. |
| enhancements | array | Optional | · | Creative-enhancement settings object accepted by the provider for this ad or creative. |
| lead_gen_form_id | string | Optional | · | Exact lead gen form identifier to target. Use the ID returned by an Opus Growth list or create operation, not a display name. |
| instagram_user_id | string | Optional | · | Exact instagram user identifier to target. Use the ID returned by an Opus Growth list or create operation, not a display name. |
| confirm | boolean | Optional | false | Safety confirmation for a state-changing operation. Leave false to preview or validate; set true only after the user explicitly approves the shown change. |
Related tools
connect_meta_adsCopy Meta Entitycopy_meta_entityCreate Meta A/B Testcreate_meta_ab_testCreate Meta Ad Setcreate_meta_adsetCreate Meta Campaigncreate_meta_campaignCreate Meta Carousel Adcreate_meta_carousel_adCreate Meta Custom Conversioncreate_meta_custom_conversionCreate Meta Dynamic Adcreate_meta_dynamic_adCreate Meta Engagement Audiencecreate_meta_engagement_audience