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 Instagram Post Ad
Turns an EXISTING Instagram post/Reel into an ad (Ads Manager's "Use existing post → Instagram").
- Type
- Makes changes
- Credits
- 8
- Platform
- Meta Ads
- Approval
- Preview first, applied after you approve
What it does
Turns an EXISTING Instagram post/Reel into an ad (Ads Manager's "Use existing post → Instagram"). No new creative — the organic Instagram media runs as-is. This WORKS TODAY and needs no Instagram content permission: it is a pure Marketing API write (AdCreative source_instagram_media_id + instagram_user_id, no object_story_id). ig_media_id is the Instagram media id — from list_meta_instagram_posts (media_id, including its advertised_media list) or from Ads Manager → Use existing post → Instagram. The connected Instagram account is resolved automatically from page_id, or from the ad account when neither page_id nor ig_user_id is given; pass ig_user_id directly (list_meta_instagram_accounts) when the account has no Facebook Page. CLICK-TO-WHATSAPP / MESSENGER FROM AN ORGANIC POST: welcome_message = the ready-written text that auto-populates the person's WhatsApp/Messenger compose box (without it the thread opens empty, so it looks like the business started the conversation and the business's auto-reply never fires), greeting = optional in-thread greeting, ice_breakers = up to 4 tappable quick replies (≤80 chars each; they replace the auto-fill). Engagement still accrues on the ORGANIC post. Leave cta_type empty and the button is derived from the ad set's destination_type — that is the normal path; only pass cta_type (WHATSAPP_MESSAGE / SEND_MESSAGE) together with link when you want to override it, because Meta rejects a call-to-action with no link on this creative. Advantage+ creative enhancements are OFF by default; pass enhancements only to explicitly enroll named features, and the result verifies the enrollment. To add a welcome message to an ad that ALREADY exists, use update_meta_instagram_post_ad — it keeps the organic post, the ad id and its learning. The ad is created PAUSED and goes through Meta review. confirm=false = preview.
MCP: create_meta_instagram_post_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. |
| ig_media_id | string | Required | · | Exact ig media identifier to target. Use the ID returned by an Opus Growth list or create operation, not a display name. |
| page_id | string | Optional | · | Exact page identifier to target. Use the ID returned by an Opus Growth list or create operation, not a display name. |
| ig_user_id | string | Optional | · | Exact ig user identifier to target. Use the ID returned by an Opus Growth list or create operation, not a display name. |
| welcome_message | string | Optional | · | Exact welcome message value for create meta instagram post 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 instagram post 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 instagram post ad. Follow the documented provider format and use values returned by Opus Growth discovery tools where possible. |
| cta_type | string | Optional | · | Call-to-action button type accepted by the provider, such as LEARN_MORE or SIGN_UP. |
| link | string | Optional | · | Destination link or link object for the ad or resource, in the provider format required by this operation. |
| enhancements | array | Optional | · | Creative-enhancement settings object accepted by the provider for this ad or creative. |
| status | string | Optional | PAUSED | Desired provider status for this resource; choose an allowed value from this schema. |
| 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