MARKETING · MARKETING
Campaigns, ad sets, ads, and audiences in the ad accounts they can reach.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
meta_marketing_activate_adWRITEDESTRUCTIVE — start delivery on one ad. It begins competing in auctions and spending its ad set's budget immediately. Preview it first with get_ad_previews: this is the point at which a wrong creative becomes something the public sees and the account pays for. Spends real money and puts a creative in front of the public.
meta_marketing_activate_ad_setWRITEDESTRUCTIVE — start delivery on one ad set. It begins spending its budget immediately, at the daily rate get_ad_set reports, against real money. The only undo is pause_ad_set, which stops further spend and recovers nothing already spent. NOTE: an ad set whose campaign is paused will not deliver until the campaign is activated too. Spends real money. This is the action that turns an ad set's budget into charges.
meta_marketing_activate_campaignWRITEDESTRUCTIVE — start delivery. From the moment this returns, this campaign's ad sets begin spending their budgets against real money, and there is no undo that recovers what was spent — only pause_campaign, which stops further spend. Read get_campaign and the ad sets' budgets first so you know the daily rate you are turning on. Spends real money. This is the action that turns budget into charges.
meta_marketing_add_users_to_custom_audienceWRITEDESTRUCTIVE — add customer records to a custom audience so ads can target them. EVERY VALUE MUST ALREADY BE SHA-256 HASHED, lowercase hex, 64 characters. Agentic Fabriq validates that before building the request and refuses the call otherwise, so a raw email address cannot travel through Agentic Fabriq to Meta. Normalise before hashing exactly as Meta specifies: trim and lowercase an email; strip symbols and leading zeros and prefix the country code on a phone; a-z only for names. MADID, EXTERN_ID and LOOKALIKE_VALUE are the only schema keys that are not hashed. Maximum 10,000 records per call. The inverse is remove_users_from_custom_audience, and list_custom_audience_sessions is how you see whether anything matched. Sends customer records to Meta. Agentic Fabriq refuses any value that is not already a SHA-256 digest, so no raw personal data passes through it — but the people in the list are still being given to Meta, and the account must hold the rights to do that.
meta_marketing_archive_adWRITEDESTRUCTIVE — archive an ad. It stops delivering and becomes read-only. REVERSIBLE: unarchive_ad returns it to PAUSED.
meta_marketing_archive_ad_setWRITEDESTRUCTIVE — archive an ad set. It stops delivering and becomes read-only. REVERSIBLE: unarchive_ad_set returns it to PAUSED.
meta_marketing_archive_campaignWRITEDESTRUCTIVE — archive a campaign. It stops delivering, drops out of the default Ads Manager view and can no longer be edited. REVERSIBLE: unarchive_campaign returns it to PAUSED, and both ship in the same migration.
meta_marketing_browse_targeting_categoriesREADWalk Meta's targeting taxonomy as a tree instead of searching it. Useful when you do not know the vocabulary — 'what behaviour categories exist at all' is not a searchable question.
meta_marketing_copy_adWRITEDuplicate an ad, optionally into a different ad set. THE COPY IS CREATED PAUSED and Agentic Fabriq refuses to set status_option.
meta_marketing_copy_ad_setWRITEDuplicate an ad set, optionally with its ads (deep_copy), optionally into a different campaign. THE COPY IS CREATED PAUSED and Agentic Fabriq refuses to set status_option, so duplicating an active ad set cannot double the account's daily spend.
meta_marketing_copy_campaignWRITEDuplicate a campaign, optionally with its ad sets and ads (deep_copy). THE COPY IS CREATED PAUSED: Agentic Fabriq forces status_option=PAUSED and refuses to set it, so duplicating cannot start a second campaign spending alongside the original — which is the mistake this operation makes easiest to commit.
meta_marketing_create_adWRITECreate an ad inside an ad set, pointing at a creative. IT IS CREATED PAUSED and cannot be created active. Either pass creative as {"creative_id": "…"} referring to a creative made with create_ad_creative, or an inline creative spec. Preview it with get_ad_previews before activating.
meta_marketing_create_ad_creativeWRITECreate a creative — the headline, body, image or video, link and call to action an ad renders. Creating one spends nothing and delivers nothing; it becomes visible only when an ad referencing it is activated. object_story_spec names the page_id (from list_pages or list_promotable_pages), the image_hash (from list_ad_images) or video_id (from list_ad_videos), and the link. Check it with generate_previews first.
meta_marketing_create_ad_labelWRITECreate an ad label. Costs nothing, delivers nothing, and it is how an agent keeps track of what it built.
meta_marketing_create_ad_setWRITECreate an ad set — the object that holds a budget, a schedule, a bid and a targeting spec. A BUDGET IS REQUIRED: exactly one of daily_budget or lifetime_budget must be supplied unless the parent campaign carries a campaign-budget-optimisation budget, and Agentic Fabriq will not create an ad set with no ceiling anywhere. IT IS CREATED PAUSED and cannot be created active. Build targeting with search_targeting_interests, check the individual options with validate_targeting, and check the finished spec with describe_targeting_in_words or get_reach_estimate first. Creates a PAUSED ad set with a required budget ceiling. It cannot deliver until activate_ad_set is granted and called.
meta_marketing_create_ad_set_budget_scheduleWRITEDESTRUCTIVE — schedule a budget increase on one ad set for a future window. time_start, time_end, budget_value and budget_value_type are all REQUIRED; Agentic Fabriq creates no open-ended increase. Spends real money, later.
meta_marketing_create_campaignWRITECreate a campaign. IT IS CREATED PAUSED AND CANNOT BE CREATED ACTIVE: Agentic Fabriq forces status=PAUSED and refuses a status argument, so this action cannot spend money. Turning delivery on is a separate, confirm-gated action (activate_campaign). special_ad_categories is REQUIRED by Meta — pass an empty array for ordinary advertising, or the categories that apply (HOUSING, EMPLOYMENT, CREDIT, ISSUES_ELECTIONS_POLITICS, ONLINE_GAMBLING_AND_GAMING, FINANCIAL_PRODUCTS_SERVICES). Creates a PAUSED campaign. It cannot deliver and cannot spend until activate_campaign is granted and called.
meta_marketing_create_campaign_budget_scheduleWRITEDESTRUCTIVE — schedule a budget increase for a future window (a high-demand period). budget_value, time_start and time_end are all REQUIRED: this is a future spend commitment and Agentic Fabriq will not create an open-ended one. Read the existing schedules with list_campaign_budget_schedules first — they stack. Spends real money, later. Granting it lets an agent commit budget for a date nobody is watching.
meta_marketing_create_custom_audienceWRITECreate a rule-based custom audience — website visitors from the pixel, app users, engagement with a Page or Instagram account, or a catalog-driven audience. NO PERSONAL DATA IS SUPPLIED HERE: the audience is defined by a rule Meta evaluates against signals the account already owns. To create an audience from a customer list, create it here with subtype CUSTOM and then upload hashed records with add_users_to_custom_audience.
meta_marketing_create_custom_conversionWRITEDefine a custom conversion from a pixel event and a rule. It starts counting from creation and is not retroactive. Meta caps the number of custom conversions per ad account, and a deleted one still counts against the cap for a while.
meta_marketing_create_lookalike_audienceWRITECreate a lookalike audience from an existing source audience. Costs nothing and reaches nobody until an ad set targets it. lookalike_spec names the countries and the ratio (0.01 = the closest 1% of a country's population; larger is broader and less similar). The source audience id comes from list_custom_audiences.
meta_marketing_create_pixelWRITECreate a Meta Pixel on this ad account. Creating one collects nothing on its own — the pixel only receives data once its code is installed on a site or events are sent to it. Meta allows a limited number of pixels per ad account.
meta_marketing_create_product_audienceWRITECreate a dynamic-ads audience from catalog interactions — people who viewed, added to cart or purchased items in a product set. No personal data is supplied: the audience is a rule Meta evaluates against the account's own pixel signals.
meta_marketing_create_product_setWRITECreate a filtered subset of a catalog for a dynamic ad to promote. Creating one changes no ad and no delivery until an ad set references it. Check the filter first with list_catalog_products.
meta_marketing_create_publisher_block_listWRITECreate an empty publisher block list. It narrows where ads can run, never widens it, and it takes effect only when an ad set references it.
meta_marketing_create_reach_frequency_predictionWRITEAsk Meta to predict the reach and frequency a budget would buy over a window. A prediction RESERVES NOTHING and spends nothing; Agentic Fabriq refuses the `action` argument that would convert it into a reservation, because a reservation is a commitment to spend the whole budget.
meta_marketing_delete_adWRITEDESTRUCTIVE AND IRREVERSIBLE — delete one ad. Meta publishes no un-delete. archive_ad is the reversible alternative and keeps the ad's insights addressable. Irreversible. archive_ad is the reversible action next to it.
meta_marketing_delete_ad_creativeWRITEDESTRUCTIVE AND IRREVERSIBLE — delete a creative. Any ad still referencing it stops delivering. Meta publishes no un-delete for a creative.
meta_marketing_delete_ad_imagesWRITEDESTRUCTIVE AND IRREVERSIBLE — remove one uploaded image from the ad account's library by hash. Any creative referencing the hash stops rendering, and the bytes cannot be recovered from Meta. Requires exactly one hash: Meta's endpoint accepts a list, and Agentic Fabriq does not forward one.
meta_marketing_delete_ad_labelWRITEDESTRUCTIVE — delete an ad label. Nothing that carried it is deleted, but the grouping is gone and cannot be recovered.
meta_marketing_delete_ad_setWRITEDESTRUCTIVE AND IRREVERSIBLE — delete one ad set and every ad beneath it. Meta publishes no un-delete. archive_ad_set is the reversible alternative. Irreversible. archive_ad_set is the reversible action next to it.
meta_marketing_delete_ad_videoWRITEDESTRUCTIVE AND IRREVERSIBLE — delete one uploaded video. Any creative referencing it stops rendering and the bytes cannot be recovered from Meta.
meta_marketing_delete_campaignWRITEDESTRUCTIVE AND IRREVERSIBLE — delete one campaign and every ad set and ad beneath it. Meta publishes no un-delete: a deleted campaign cannot be restored through the API or through Ads Manager, and its historical insights become unreachable by id. archive_campaign is the reversible alternative and it is what you almost always want. Irreversible. Meta publishes no un-delete; archive_campaign is the reversible action next to it.
meta_marketing_delete_custom_audienceWRITEDESTRUCTIVE AND IRREVERSIBLE — delete an audience. Every ad set targeting or excluding it changes what it delivers to, IMMEDIATELY and without pausing; an ad set that excluded existing customers starts advertising to them. Meta publishes no un-delete, and for a customer-list audience the records must be re-uploaded from scratch. Call list_custom_audience_ads first. Irreversible, and it silently changes the delivery of every ad set that referenced the audience.
meta_marketing_delete_custom_conversionWRITEDESTRUCTIVE AND IRREVERSIBLE — delete a custom conversion. Every ad set optimising toward it loses its optimisation target and delivery degrades immediately; historical reporting for it becomes unreachable. Meta publishes no un-delete.
meta_marketing_delete_product_setWRITEDESTRUCTIVE AND IRREVERSIBLE — delete a product set. Any ad promoting it stops delivering. The catalog items themselves are untouched. Meta publishes no un-delete for a product set.
meta_marketing_describe_targeting_in_wordsREADMeta's plain-English rendering of an arbitrary targeting spec, before it belongs to any ad set. The check a human would do, available to an agent for free.
meta_marketing_generate_previewsREADRender a creative SPEC that does not exist yet. The cheapest possible loop: draft object_story_spec, look at it, fix it, and only then call create_ad_creative. Nothing is created.
meta_marketing_get_adREADGet one ad in full, including its creative reference, tracking_specs, conversion_specs, issues_info and recommendations.
meta_marketing_get_ad_accountREADGet one ad account in full: name, currency, timezone, business, account_status, disable_reason, spend_cap, amount_spent, balance, funding_source_details and the special ad categories it is enrolled in. The diagnostic for 'why is nothing delivering' — account_status 2 is DISABLED and 3 is UNSETTLED.
meta_marketing_get_ad_account_controlsREADRead the account-level delivery controls: audience_controls (minimum age, excluded countries) and placement controls. These silently narrow every ad set beneath them, so an ad set that looks correctly targeted can still deliver nowhere.
meta_marketing_get_ad_account_insightsREADPerformance for a whole ad account over a window: impressions, reach, frequency, clicks, spend, CTR, CPC, CPM, actions and cost per action, optionally split by level, by breakdown and by day. THE reporting action. Insights numbers are computed in the AD ACCOUNT'S timezone and settle over about 28 days, so today's figures move. Read-only. Meta's most rate-limited family: ask for the smallest field set that answers the question.
meta_marketing_get_ad_account_max_bidREADThe highest bid this ad account is allowed to set, in the account's minor currency unit. The upper bound set_ad_set_bid is checked against by Meta.
meta_marketing_get_ad_account_minimum_budgetsREADThe minimum daily and lifetime budget this account may set, per currency and per billing event. Call it before create_ad_set: a budget below the minimum is rejected by Meta with an error that does not say what the minimum is.
meta_marketing_get_ad_creativeREADGet one creative in full, including its complete object_story_spec.
meta_marketing_get_ad_creative_previewsREADRender a creative in a placement without attaching it to an ad. The pre-flight for create_ad, and it costs nothing.
meta_marketing_get_ad_insightsREADPerformance for one ad, optionally split by breakdown.
meta_marketing_get_ad_labelREADGet one ad label with its name and creation time.
meta_marketing_get_ad_place_page_setREADGet one store-location page set with its locations and matching rules.
meta_marketing_get_ad_previewsREADRender an ad as it will appear in a given placement, returned as an HTML iframe snippet. The pre-flight for activate_ad: it is the only way to see what a creative actually looks like without spending money.
meta_marketing_get_ad_ruleREADGet one automated rule with its full evaluation and execution spec.
meta_marketing_get_ad_setREADGet one ad set in full, including its complete targeting spec, promoted_object, attribution_spec, issues_info and recommendations. The read that makes a targeting change safe: it shows what is there before you replace it.
meta_marketing_get_ad_set_delivery_estimateREADMeta's estimate of the daily reach and results this ad set's current targeting and budget will produce. Diagnostic for 'audience too narrow' before any money is spent.
meta_marketing_get_ad_set_insightsREADPerformance for one ad set, optionally broken down to ad level.
meta_marketing_get_ad_set_targeting_sentence_linesREADMeta's own plain-English rendering of an ad set's targeting spec ('People who live in the United States, aged 25-54, who match Interests: Cycling'). Far easier for an agent to check than the raw spec, and it is what Ads Manager shows a human.
meta_marketing_get_ad_studyREADGet one study with its type, window, cells and objectives.
meta_marketing_get_ad_targeting_sentence_linesREADMeta's plain-English rendering of the targeting an ad is delivering against.
meta_marketing_get_ads_volumeREADHow many ads this account is currently running against the ad volume limit Meta enforces per page. Diagnostic: once the limit is reached, new ads are rejected and existing ones stop being editable, with no other signal.
meta_marketing_get_async_ad_request_setREADGet one bulk ad-creation request set with its counts of succeeded, failed and in-progress requests.
meta_marketing_get_audience_funnelREADThe overlap and progression between this account's audiences — how many people in the website audience are also in the purchase audience. The read that makes exclusion targeting decidable.
meta_marketing_get_authenticated_identityREADWho this connection is acting as: the Meta user or system user id and name behind the stored credential. The first call to make when a permission error is confusing — a System User token and a person's token look identical from the outside and have completely different access.
meta_marketing_get_businessREADGet one Business Manager with its verification_status, two_factor_type, primary_page and creation details. verification_status is what gates Advanced Access to every Marketing API permission — an unverified business explains a class of permission errors nothing else does.
meta_marketing_get_campaignREADGet one campaign in full, including its budget, bid strategy, special ad categories, issues_info (why Meta is limiting it) and recommendations.
meta_marketing_get_campaign_insightsREADPerformance for one campaign, optionally broken down to ad set or ad level.
meta_marketing_get_catalog_diagnosticsREADMeta's own list of what is wrong with a catalog: items rejected for missing fields, broken image URLs, price mismatches against the website, and items not matched to the pixel. THE diagnostic for dynamic ads that will not deliver. Read-only, and it is the first place to look when a dynamic ad campaign delivers nothing.
meta_marketing_get_catalog_event_statsREADHow many catalog-related pixel events (ViewContent, AddToCart, Purchase) matched items in this catalog, and how many did not. The match rate is what decides whether dynamic retargeting can work at all.
meta_marketing_get_creative_insightsREADMeta's own assessment of a creative's quality — the standards it meets and the improvements it suggests. Diagnostic for a creative with poor delivery that has not been outright disapproved.
meta_marketing_get_custom_audienceREADGet one audience in full, including its rule, its lookalike spec, its size estimate and its delivery status. The pre-flight for any change to it.
meta_marketing_get_custom_audience_healthREADMeta's own assessment of whether an audience is usable: its match rate, its size trend, and whether it is too small to deliver. Pure diagnostic, and the answer to 'why does this audience reach nobody'.
meta_marketing_get_custom_audience_shared_account_infoREADDetails of the sharing relationships on one audience: which business shared it, to which account, and in which direction.
meta_marketing_get_custom_conversionREADGet one custom conversion with its full rule and its aggregation settings.
meta_marketing_get_custom_conversion_statsREADHow often a custom conversion has fired over time. Diagnostic: a custom conversion whose rule stopped matching reports zero here while the pixel itself looks healthy.
meta_marketing_get_delivery_estimateREADMeta's estimate of the daily results a targeting spec, optimization goal and bid would produce on this account, before any object exists. The pre-flight for create_ad_set.
meta_marketing_get_extended_creditREADGet one credit line with its limit, balance, liability type and allocation.
meta_marketing_get_insights_report_resultsREADRead the rows of a COMPLETED asynchronous insights report. Check get_insights_report_status first: Meta answers this endpoint successfully while a job is still running, and the empty page it returns is indistinguishable from a report that legitimately matched nothing.
meta_marketing_get_insights_report_statusREADPoll an asynchronous insights report. Returns async_status — one of 'Job Not Started', 'Job Started', 'Job Running', 'Job Completed', 'Job Failed', 'Job Skipped' — plus async_percent_completion. THE RESULTS ARE NOT VALID UNTIL async_status IS 'Job Completed': reading them earlier returns an empty or partial page that looks exactly like a finished report with no data. 'Job Skipped' means the run expired and must be resubmitted. Read-only, and it is what stops a half-finished report being reported as 'no results'.
meta_marketing_get_leadREADOne lead submission in full. HIGH SENSITIVITY — raw, unhashed personal data about one person. Use it to follow up on a webhook that delivered only a leadgen_id.
meta_marketing_get_lead_formREADGet one lead form with its full question list, context card, thank-you page and leads_count. The question list is the schema of everything list_form_leads will return.
meta_marketing_get_offline_conversion_datasetREADGet one offline conversion dataset with its match rate, event count and configuration.
meta_marketing_get_offline_dataset_statsREADEvent volume and match rate for an offline conversion dataset over time.
meta_marketing_get_pixelREADGet one pixel with its name, last_fired_time, data_use_setting, enable_automatic_matching and first_party_cookie_status. last_fired_time is the first thing to check when conversions stop being reported.
meta_marketing_get_pixel_statsREADEvent volume for one pixel over time, broken down by event name and by whether it arrived from the browser or the Conversions API. THE diagnostic for tracking: it distinguishes 'nobody is buying' from 'the pixel stopped firing'. Read-only. It is what makes a Conversions API integration debuggable.
meta_marketing_get_product_catalogREADGet one catalog with its name, vertical, product_count and da_display_settings. The catalog id goes in a dynamic ad's product_set_id chain and in a catalog-based audience.
meta_marketing_get_product_feedREADGet one product feed with its schedule, file format, latest upload and default currency. Agentic Fabriq scrubs the feed's stored credentials out of the response.
meta_marketing_get_product_itemREADGet one catalog item in full, including its review status and rejection reasons.
meta_marketing_get_product_setREADGet one product set with its filter and how many items currently match it.
meta_marketing_get_rate_limit_usageREADHow much of Meta's rate limit this app and this ad account have consumed, read out of the X-App-Usage, X-Business-Use-Case-Usage and X-Ad-Account-Usage headers Meta returns on every call. Reports call_count, total_time and total_cputime as percentages of the hourly allowance, the per-business figures broken down by use case (ads_insights, ads_management, custom_audience), estimated_time_to_regain_access in minutes, the ad account's acc_id_util_pct and reset_time_duration, and the ads_api_access_tier this app is on. This is the answer to 'why is everything suddenly failing' — Meta throttles at 100% and the error it returns (code 4, 17, 613 or 80004) does not say how long the block lasts. Read-only, and it makes every other Meta action supportable: without it a throttled connection is indistinguishable from a broken one.
meta_marketing_get_reach_estimateREADMeta's estimate of how many people a targeting spec reaches, before any object is created. Free, and it is what turns 'is this audience big enough' from a guess into a number.
meta_marketing_get_reach_frequency_predictionREADGet one reach-and-frequency prediction in full, including its curve and its reservation status.
meta_marketing_get_saved_audienceREADGet one saved audience with its full targeting spec and approximate size.
meta_marketing_get_targeting_suggestionsREADMeta's suggestions for targeting options related to ones you already have — the 'people who target this also target that' expansion. The cure for an audience that is too narrow to deliver.
meta_marketing_list_ad_account_activitiesREADThe ad account's audit trail: who changed what and when, with the old and new values. This is the answer to 'why did my budget change overnight' and 'who paused this campaign', and it covers changes made in Ads Manager as well as through the API. Read-only diagnostic. It is the only action that can attribute a change to a person.
meta_marketing_list_ad_account_agenciesREADThe businesses that have agency access to this ad account. A security read: an agency here can create and spend on this account.
meta_marketing_list_ad_account_assigned_usersREADThe Business Manager users and system users assigned to this ad account, with the tasks each may perform (MANAGE, ADVERTISE, ANALYZE, DRAFT). Agentic Fabriq exposes no action that CHANGES this list — see docs/coverage/meta_marketing.md, E9.
meta_marketing_list_ad_account_conversion_goalsREADThe conversion goals available to this account, with the conversion events behind each. The vocabulary an ad set's promoted_object and an insights query's action columns use.
meta_marketing_list_ad_account_instagram_accountsREADThe Instagram accounts linked to this ad account. The older sibling of list_connected_instagram_accounts; some accounts populate one and not the other, so try both when an Instagram placement will not save.
meta_marketing_list_ad_account_recommendationsREADMeta's own recommendations for this account — budget changes, audience expansions, creative improvements, and the reasons delivery is limited. Read-only: Agentic Fabriq exposes no action that APPLIES one.
meta_marketing_list_ad_account_subscribed_appsREADWhich Meta apps are installed on this ad account. Diagnostic: an app that is not subscribed cannot receive this account's webhooks and, for some surfaces, cannot call against it at all.
meta_marketing_list_ad_account_usersREADThe people with a role on this ad account, and each role. A security read: it answers 'who can spend from this account'.
meta_marketing_list_ad_accountsREADList every Meta ad account this connection can reach, with its act_<id> account id, name, currency, timezone, spend cap, amount spent and account status. THIS IS THE ENTRY POINT: an ad account id is not guessable and no other tool produces one, so call this first and pass the id it returns to everything else. Read-only. Granting it is what makes every other Meta action usable, because every other action takes an ad account id.
meta_marketing_list_ad_ad_rules_governedREADThe Meta automated rules that act on this ad.
meta_marketing_list_ad_creativesREADList the creative objects in an ad account: id, name, object_story_spec, image_hash, video_id, title, body, call_to_action_type, link_url and status. Creative ids are what create_ad needs.
meta_marketing_list_ad_creatives_by_labelREADList the creatives carrying one or more ad labels.
meta_marketing_list_ad_creatives_of_adREADThe creative objects attached to one ad.
meta_marketing_list_ad_imagesREADThe images uploaded to this ad account, with each image's HASH, name, dimensions, status and creation time. The image_hash is what an object_story_spec references. Agentic Fabriq removes the url, url_128, url_256 and permalink_url fields from the response: Meta's own reference calls them 'a temporary URL which the image can be retrieved at', they need no credential, and they are not needed to build a creative. Read-only. The fetchable CDN URLs Meta returns on this edge are scrubbed; the image hash, which is what a creative needs, is not.
meta_marketing_list_ad_label_ad_creativesREADThe creatives carrying one ad label.
meta_marketing_list_ad_label_ad_setsREADThe ad sets carrying one ad label.
meta_marketing_list_ad_label_adsREADThe ads carrying one ad label.
meta_marketing_list_ad_label_campaignsREADThe campaigns carrying one ad label.
meta_marketing_list_ad_labelsREADThe ad labels defined on this account. Labels are how an agent marks the objects it created so it can find them again without paginating everything.
meta_marketing_list_ad_leadsREADThe lead-ad submissions an ad has collected. HIGH SENSITIVITY: the response is raw, UNHASHED personal data — names, email addresses, phone numbers and whatever custom questions the form asked — for real people who filled in a form. Meta does not hash it and Agentic Fabriq does not either, because the whole purpose of the endpoint is to hand those records to a CRM. Grant it only to an agent whose job is that. Returns unhashed personal data about real people. It is the one Meta read whose result is regulated personal information.
meta_marketing_list_ad_place_page_setsREADThe store-location page sets defined on this account, used by local-awareness and store-traffic ads to name which physical locations an ad promotes.
meta_marketing_list_ad_rule_historyREADEvery time this rule fired, what it evaluated and which objects it changed. The audit trail for changes no API call made.
meta_marketing_list_ad_rulesREADThe Meta automated rules defined on this account: what each evaluates, what it does when it fires, its schedule and its status. Agentic Fabriq creates NO rules and executes none (E6) — an agent may see the account's rules but may never become one. This read is what makes an automated budget change explicable. Read-only, and it is the only way to attribute an unexplained budget or status change to a standing rule.
meta_marketing_list_ad_rules_historyREADEvery automated-rule execution across the whole account, newest first. The account-wide answer to 'what changed my budgets last night and why'.
meta_marketing_list_ad_set_activitiesREADThe change history for one ad set: budget changes, targeting changes, status changes, and who made each. Narrower and cheaper than the account-wide change log.
meta_marketing_list_ad_set_ad_creativesREADEvery creative used by the ads in one ad set.
meta_marketing_list_ad_set_ad_rules_governedREADThe Meta automated rules that act on this ad set.
meta_marketing_list_ad_set_adsREADThe ads inside one ad set, with their creatives and delivery state.
meta_marketing_list_ad_set_async_requestsREADThe status of bulk ad-creation requests submitted against this ad set, with per-request errors. Diagnostic for a bulk upload that produced fewer ads than expected.
meta_marketing_list_ad_set_budget_schedulesREADThe scheduled budget increases attached to this ad set.
meta_marketing_list_ad_setsREADList the ad sets in an ad account with id, name, campaign_id, status, effective_status, daily_budget, lifetime_budget, bid_amount, bid_strategy, billing_event, optimization_goal, start_time, end_time and targeting. The ad set is where a Meta budget usually lives, so this is the answer to 'what is spending'.
meta_marketing_list_ad_sets_by_labelREADList the ad sets carrying one or more ad labels.
meta_marketing_list_ad_studiesREADThe A/B tests, brand-lift studies and conversion-lift studies on this account, with their type, status and window.
meta_marketing_list_ad_study_cellsREADThe test and control cells of a study, and which campaigns and ad sets are in each.
meta_marketing_list_ad_study_objectivesREADWhat a study is measuring, and against which pixels, apps or custom conversions.
meta_marketing_list_ad_videosREADThe videos uploaded to this ad account, with each video's id, title, description, length, status and creation time. The video id is what an object_story_spec references. Agentic Fabriq removes the source and permalink_url fields — they fetch the video bytes with no credential and are not needed to build a creative.
meta_marketing_list_adsREADList the ads in an ad account with id, name, adset_id, campaign_id, creative, status, effective_status and issues_info. effective_status DISAPPROVED or WITH_ISSUES with issues_info is the answer to 'why is this ad not running'.
meta_marketing_list_ads_by_labelREADList the ads carrying one or more ad labels.
meta_marketing_list_advertisable_applicationsREADThe mobile and web apps this account may promote, with their application ids and store URLs. The source of the application_id an app-install ad set's promoted_object needs.
meta_marketing_list_affected_ad_setsREADAd sets Meta has flagged as affected by an upcoming or recent platform change — a deprecated placement, a removed targeting option, an attribution change. Pure diagnostic, and the only advance warning an advertiser gets.
meta_marketing_list_async_ad_request_set_requestsREADThe individual requests inside a bulk ad-creation set, each with its own error. This is where 'the upload said 200 but only 40 of the 60 ads exist' gets answered.
meta_marketing_list_async_ad_request_setsREADThe bulk ad-creation request sets on this account, with their aggregate status.
meta_marketing_list_async_requestsREADThe asynchronous requests submitted against this account and their status. Diagnostic for a bulk operation that appears to have done nothing.
meta_marketing_list_block_list_publishersREADThe individual publishers inside one block list.
meta_marketing_list_broad_targeting_categoriesREADMeta's broad category taxonomy for this account, with ids usable in a targeting spec.
meta_marketing_list_business_ad_account_infosREADA compact summary of every ad account the business can reach, owned and client.
meta_marketing_list_business_agenciesREADThe businesses that have agency access to this one, and therefore to its assets.
meta_marketing_list_business_asset_groupsREADThe asset groups (business units) in this Business Manager — the bundles of ad accounts, Pages and pixels that permissions are granted over as a unit.
meta_marketing_list_business_client_ad_accountsREADThe ad accounts another business has shared with this one. For an agency, this is the account list that matters and it is NOT the same as owned_ad_accounts.
meta_marketing_list_business_client_pagesREADThe Pages another business has shared with this one.
meta_marketing_list_business_client_pixelsREADThe pixels another business has shared with this one.
meta_marketing_list_business_client_product_catalogsREADThe product catalogs another business has shared with this one.
meta_marketing_list_business_clientsREADThe businesses this one acts as an agency for.
meta_marketing_list_business_credit_cardsREADThe payment methods attached to this business, as Meta describes them: display string (for example 'Visa *1234'), expiry month and year, and whether the card is verified. NO CARD NUMBER IS RETURNED — Meta does not publish one and Agentic Fabriq scrubs the billing address out of the response. Diagnostic for a delivery stop caused by an expired card. Read-only. It returns a masked display string and an expiry, never a card number, and Agentic Fabriq removes the billing address before the response reaches the agent.
meta_marketing_list_business_datasetsREADThe offline conversion datasets owned by a business — the in-store and CRM conversion sources used to attribute offline sales to online ads.
meta_marketing_list_business_extended_creditsREADThe credit lines Meta has extended to this business, with the limit, the balance and how much is allocated. The answer to 'can this account still spend' when nothing is delivering.
meta_marketing_list_business_invoicesREADThe invoices Meta has issued to this business, with amounts, currency, billing period, due date and payment status. The billing read a finance team actually asks for.
meta_marketing_list_business_owned_ad_accountsREADThe ad accounts this Business Manager owns, with their status and spend.
meta_marketing_list_business_owned_businessesREADThe Business Managers this one owns, for multi-brand and holding-company structures.
meta_marketing_list_business_owned_pagesREADThe Facebook Pages this Business Manager owns. Their ids are what a creative's object_story_spec needs.
meta_marketing_list_business_owned_pixelsREADThe Meta Pixels this Business Manager owns.
meta_marketing_list_business_owned_product_catalogsREADThe product catalogs this Business Manager owns. Catalog ids are what dynamic ads need.
meta_marketing_list_business_pending_usersREADPeople invited to this Business Manager who have not accepted. A security read.
meta_marketing_list_business_system_usersREADThe system users in this Business Manager — the non-human identities that hold long-lived tokens — with their ids, names and roles. THIS ACTION RETURNS NO TOKENS: Agentic Fabriq exposes no operation that mints a system user token (E1), and scrubs any token-shaped field out of this response. Read-only, and it is the audit of which automations can spend from this business. Read-only, and no token is ever returned. The endpoint that MINTS a system user token is permanently excluded (E1).
meta_marketing_list_business_usersREADThe people in this Business Manager and their roles. A security read: it answers 'who can create ad accounts and spend from them'. Agentic Fabriq exposes no action that adds, removes or re-roles anyone (E9).
meta_marketing_list_businessesREADThe Meta Business Managers this connection belongs to, with each business's id, name, verification_status and two_factor_type. A business id is the entry point to every asset-level read below.
meta_marketing_list_campaign_ad_rules_governedREADThe Meta automated rules that act on this campaign. Diagnostic: an automated rule can pause a campaign or change its budget with no API call behind it, and this is the only way to see which rules apply.
meta_marketing_list_campaign_ad_setsREADThe ad sets inside one campaign, with their budgets, schedules and delivery state.
meta_marketing_list_campaign_adsREADEvery ad under one campaign, across all of its ad sets.
meta_marketing_list_campaign_budget_schedulesREADThe scheduled budget increases attached to this campaign — the high-demand-period objects that raise a budget automatically at a future time. The read half of create_campaign_budget_schedule, and the answer to 'what is going to raise my spend next week'.
meta_marketing_list_campaignsREADList the campaigns in an ad account with each campaign's id, name, objective, status, effective_status, buying_type, bid_strategy, daily_budget, lifetime_budget, spend_cap and special_ad_categories. A campaign id is opaque and nothing else produces one.
meta_marketing_list_campaigns_by_labelREADList the campaigns carrying one or more ad labels. The cheap way to address a set of campaigns an agent created earlier without paginating the whole account.
meta_marketing_list_catalog_data_sourcesREADWhere a catalog's items come from: feeds, the API, a partner platform or a pixel.
meta_marketing_list_catalog_external_event_sourcesREADThe pixels and app event sources connected to this catalog. A catalog with no event source cannot power dynamic retargeting, and nothing else says so.
meta_marketing_list_catalog_product_feedsREADThe scheduled feeds that populate a catalog, with each feed's name, schedule, latest upload and item counts.
meta_marketing_list_catalog_product_setsREADThe product sets in a catalog — the filtered subsets a dynamic ad actually promotes — with each set's filter and product_count.
meta_marketing_list_catalog_productsREADThe items in a catalog, with retailer_id, name, price, availability, condition, review_status and image_url. review_status REJECTED with a reason is the per-item half of get_catalog_diagnostics.
meta_marketing_list_connected_instagram_accountsREADThe Instagram accounts this ad account may use as the identity on an ad, with their instagram_actor_id. This is the ADS side of Instagram: it produces the id an ad creative needs in order to run on Instagram placements. Instagram ORGANIC posting, comments and organic insights are a different provider (instagram_business) and are not reachable from here. Read-only. Some ad accounts additionally require the instagram_basic permission on this edge; Agentic Fabriq does not request instagram_basic, so on those accounts this action returns a permission error naming it.
meta_marketing_list_custom_audience_ad_accountsREADWhich OTHER ad accounts can target this audience. A security read: an audience built from a customer list is personal data, and this is the only way to see who else can use it. Agentic Fabriq exposes no action that ADDS an account here (E5); it does expose the removal.
meta_marketing_list_custom_audience_adsREADWhich ads currently target or exclude this audience. Call it before delete_custom_audience — deleting an audience an ad set targets changes what that ad set delivers to.
meta_marketing_list_custom_audience_sessionsREADThe upload sessions against one audience, with how many records each batch received, how many were valid and how many matched. The read half of add_users_to_custom_audience: it is the only way to find out that an upload matched nothing.
meta_marketing_list_custom_audience_terms_of_serviceREADWhether this ad account has accepted Meta's Custom Audience Terms of Service, and which. THE diagnostic for audience work: without acceptance every audience create and every upload fails with error code 200, subcode 1870090, whose message does not say that a contract is missing. Agentic Fabriq exposes no action that ACCEPTS the terms — see docs/coverage/meta_marketing.md. Read-only. It is the fastest explanation of an audience failure that looks like a permission problem.
meta_marketing_list_custom_audiencesREADThe custom, lookalike and saved-rule audiences on this ad account, with id, name, subtype, approximate_count_lower_bound / upper_bound, delivery_status, operation_status and time_content_updated. Audience ids are what a targeting spec's custom_audiences and exclusions reference.
meta_marketing_list_custom_conversionsREADThe custom conversions on this account — named conversion definitions built from pixel events and URL rules, with their rule, default_conversion_value and aggregation. These are what an ad set's promoted_object references for a conversion objective.
meta_marketing_list_deprecated_targeting_ad_setsREADAd sets whose targeting spec references an option Meta has retired. These keep delivering against a narrower audience than the spec implies and fail on the next edit; nothing else surfaces them.
meta_marketing_list_dsa_recommendationsREADMeta's Digital Services Act compliance recommendations for this account — the payer and beneficiary declarations EU delivery requires. Diagnostic for ads that will not deliver in the EU.
meta_marketing_list_extended_credit_invoice_groupsREADHow a credit line's spend is grouped for invoicing, and which ad accounts sit in each group.
meta_marketing_list_form_leadsREADThe submissions to one lead form. HIGH SENSITIVITY: the response is raw, UNHASHED personal data about real people — names, email addresses, phone numbers and whatever else the form asked, plus their custom disclaimer responses. Meta does not hash it and Agentic Fabriq does not either, because delivering those records to a CRM is the entire purpose of the endpoint. Grant it only to an agent whose job is that, and note that the records are subject to whatever consent the form's own privacy policy obtained. Returns unhashed personal data about real people. Treat this grant as a data-processing decision, not a reporting one.
meta_marketing_list_form_test_leadsREADThe TEST submissions to a lead form, created through Meta's Lead Ads Testing Tool. Synthetic data about nobody, which makes this the action to build and prove a CRM sync against before anyone grants list_form_leads. Returns synthetic test data only. Grant it to prove a lead workflow without exposing real people.
meta_marketing_list_granted_permissionsREADEvery Meta permission on this credential and whether it is granted or declined. THE diagnostic for a Meta integration: Meta does not fail an authorization when a permission is declined, it succeeds and then refuses individual calls, so 'granted everything' and 'declined ads_management' look the same until a tool fails. Agentic Fabriq records this list on the connection at connect time; this action shows it as Meta sees it now.
meta_marketing_list_impacting_ad_studiesREADStudies run by others that hold out part of this account's audience. Diagnostic: a lift study suppresses delivery to its control group, and nothing else explains the gap.
meta_marketing_list_invoice_group_ad_accountsREADWhich ad accounts bill into one invoice group.
meta_marketing_list_ios_fourteen_campaign_limitsREADHow many iOS app-install campaigns this account may run per app under Apple's SKAdNetwork rules, and how many are in use. Diagnostic for 'Meta refused to activate my iOS campaign'.
meta_marketing_list_lead_formsREADThe lead-ad forms on one Facebook Page, with each form's id, name, status, questions and privacy policy URL. The form id is what list_form_leads needs. Page ids come from list_pages.
meta_marketing_list_offline_dataset_ad_accountsREADWhich ad accounts may attribute conversions against this dataset.
meta_marketing_list_offline_dataset_audiencesREADThe custom audiences derived from an offline conversion dataset.
meta_marketing_list_offline_dataset_custom_conversionsREADThe custom conversions defined against an offline conversion dataset.
meta_marketing_list_offline_dataset_uploadsREADThe upload batches sent to an offline conversion dataset, each with how many events it carried and how many matched. The diagnostic for 'the offline sales are not showing up'.
meta_marketing_list_pagesREADThe Facebook Pages the connected identity administers, with each page's id, name, category and the tasks the identity may perform on it (ADVERTISE, ANALYZE, CREATE_CONTENT, MANAGE, MODERATE). Needed to name a page_id on an ad creative and to reach lead forms. This action returns Page metadata only; Agentic Fabriq removes the Page access token from the response — see docs/coverage/meta_marketing.md, E1. Read-only. Meta returns a Page ACCESS TOKEN on this edge; Agentic Fabriq scrubs it before the response reaches the agent.
meta_marketing_list_pixel_ad_accountsREADWhich ad accounts can use this pixel for optimisation and audiences.
meta_marketing_list_pixel_assigned_usersREADThe Business Manager users and system users assigned to this pixel, and the tasks each may perform.
meta_marketing_list_pixel_diagnosticsREADMeta's own health checks on a pixel: missing parameters, duplicate events, low event-match quality, deduplication failures between the browser pixel and the Conversions API, and what to do about each.
meta_marketing_list_pixel_offline_event_uploadsREADOffline conversion uploads associated with this pixel, with their match counts.
meta_marketing_list_pixel_openbridge_configurationsREADThe server-side Open Bridge / Conversions API Gateway configurations attached to this pixel — the third-party hosts forwarding events to Meta on this account's behalf. A security read: each one is a system sending this site's conversion data to Meta.
meta_marketing_list_pixel_shared_accountsREADWhich other ad accounts this pixel has been shared with. A security read: a shared pixel lets another account build audiences from this site's visitors. Agentic Fabriq exposes no action that ADDS one (E5); it does expose the removal.
meta_marketing_list_pixel_shared_agenciesREADWhich businesses have agency access to this pixel.
meta_marketing_list_pixelsREADThe Meta Pixels (web datasets) this ad account can use, with id, name, code, last_fired_time and is_created_by_business. The pixel id is what a conversion ad set's promoted_object and the Conversions API both need.
meta_marketing_list_product_feed_upload_errorsREADThe per-row errors of one feed upload — which items failed, on which column, and why. The most specific diagnostic in the whole catalog family.
meta_marketing_list_product_feed_uploadsREADThe upload runs of one feed, with start and end times, the counts of items created, updated and deleted, and the error count. This is where 'the catalog is stale' gets diagnosed.
meta_marketing_list_product_item_product_setsREADWhich product sets a catalog item belongs to, and therefore which dynamic ads can show it.
meta_marketing_list_product_set_productsREADThe catalog items currently matching a product set's filter. The check before pointing a campaign at it: a set that matches nothing produces ads that show nothing.
meta_marketing_list_promotable_pagesREADThe Facebook Pages this ad account may run ads for, with their page ids. A creative must name a page_id, and this is where that id comes from for an ad-account-scoped connection.
meta_marketing_list_publisher_block_listsREADThe publisher block lists on this account — the sites and apps ads are kept off. Brand safety configuration, and the read half of create_publisher_block_list.
meta_marketing_list_reach_frequency_predictionsREADThe reach-and-frequency predictions on this account, with their reserved status, budget, reach and impression estimates. Reach-and-frequency is the reserved-buying product; a RESERVED prediction is a commitment to spend.
meta_marketing_list_saved_audiencesREADThe saved TARGETING definitions on this account — reusable targeting specs, not lists of people. Different objects from custom audiences, and their ids go in a different place in a targeting spec.
meta_marketing_list_system_user_assigned_ad_accountsREADWhich ad accounts one system user can act on, and with which tasks. This is the exact answer to 'what can the token this connection is using actually reach' when the connection is a pasted System User token.
meta_marketing_pause_adWRITEDESTRUCTIVE — stop delivery on one ad. The inverse of activate_ad, shipped in the same migration, and the fastest way to take a bad creative down. Reversible with activate_ad, but it takes a live ad off the air.
meta_marketing_pause_ad_setWRITEDESTRUCTIVE — stop delivery on one ad set. The inverse of activate_ad_set, shipped in the same migration. Reversible with activate_ad_set and it costs nothing, but it takes a live ad set off the air.
meta_marketing_pause_campaignWRITEDESTRUCTIVE — stop delivery on a campaign and every ad set under it. The inverse of activate_campaign, shipped in the same migration. Pausing costs nothing and is reversible with activate_campaign, but it takes a live campaign off the air: reach stops, and any spend pacing a human was depending on stops with it. Stops a campaign delivering. Reversible with activate_campaign.
meta_marketing_remove_users_from_custom_audienceWRITEDESTRUCTIVE — the inverse of add_users_to_custom_audience, shipped in the same migration: remove records from an audience so ads stop targeting them. Same hashing rule and same validation — every value must already be a SHA-256 digest. This is the action a suppression request needs. Meta publishes no way to read an audience's membership back, so what this removes cannot be listed afterwards and can only be restored from the source records the caller still holds.
meta_marketing_replace_custom_audience_usersWRITEDESTRUCTIVE — replace an audience's ENTIRE membership with the records supplied. Everyone currently in the audience who is not in this upload is removed, and Meta will not put them back: the previous membership is gone. This is the nightly-sync operation, and it is the one most likely to empty an audience by accident — an upload that matches nothing leaves the audience with nothing. Same hashing rule as add_users_to_custom_audience, validated the same way. Use add_users_to_custom_audience unless you genuinely mean to discard the existing list. Discards an audience's existing membership. A failed match rate leaves the audience empty and the previous list is not recoverable.
meta_marketing_search_targeting_interestsREADSearch ONE of Meta's targeting taxonomies and get back each option's id, name and audience size. THE discovery step: a targeting spec's flexible_spec, geo_locations, locales, work_positions and education fields reference these ids and there is no other way to obtain one. type IS REQUIRED AND IT SELECTS THE TAXONOMY — adinterest for interests, adgeolocation for countries/regions/cities/zips, adlocale for languages, adworkposition for job titles, adworkemployer for companies, adeducationschool and adeducationmajor for education, adTargetingCategory to list a whole class such as behaviors. The ids of two taxonomies are NOT interchangeable, so a qualifier that belongs to a different taxonomy is refused rather than ignored. Read-only. It produces the ids create_ad_set's targeting spec needs. It is not scoped to one ad account: Meta's taxonomy search is global, so this reads Meta's catalog rather than any customer's data.
meta_marketing_send_conversions_api_eventsWRITEDESTRUCTIVE — send server-side conversion events to a Meta Pixel. These events train Meta's optimisation, feed attribution and populate audiences, and THEY CANNOT BE DELETED: Meta publishes no endpoint that removes an event once received, so a wrong or duplicated batch permanently distorts the account's reporting and the models bidding on its behalf. EVERY user_data FIELD META REQUIRES HASHED MUST ALREADY BE SHA-256 (em, ph, fn, ln, ge, db, ct, st, zp, country); Agentic Fabriq validates it and refuses the call otherwise. client_ip_address, client_user_agent, fbc, fbp, subscription_id and lead_id are sent unhashed, as Meta specifies. Set test_event_code first and watch the events arrive in Events Manager before sending a production batch. Writes data that cannot be removed and that changes how Meta spends this account's budget. Agentic Fabriq refuses any unhashed value in a field Meta requires hashed.
meta_marketing_set_ad_set_bidWRITEDESTRUCTIVE — change the bid cap or cost cap on an ad set. bid_amount is in the account's MINOR currency unit and is required. Raising a bid does not raise the budget, but it does raise the price paid per result, so the same budget buys less; moving to LOWEST_COST_WITHOUT_CAP removes the price ceiling entirely. Check the account's ceiling with get_ad_account_max_bid. Spends real money. It changes the price Meta pays for each result on this ad set.
meta_marketing_set_ad_set_budgetWRITEDESTRUCTIVE — change how much money this ad set may spend. Exactly one of daily_budget or lifetime_budget is required, in the ad account's MINOR currency unit. A raised daily budget is spent the same day. Check the floor with get_ad_account_minimum_budgets: a value below it is refused by Meta with an error that does not name the minimum. Spends real money. Granting it lets an agent raise an ad set budget without a human in the loop.
meta_marketing_set_campaign_bid_strategyWRITEDESTRUCTIVE — change how Meta bids for this campaign. Moving to LOWEST_COST_WITHOUT_CAP removes the per-result price ceiling, so the same budget is spent at whatever CPM the auction asks. Requires a bid_cap when the strategy names one. Spends real money. It changes the price Meta is willing to pay for each result.
meta_marketing_set_campaign_budgetWRITEDESTRUCTIVE — change how much money this campaign may spend. Exactly one of daily_budget or lifetime_budget is required, in the ad account's MINOR currency unit (2500 = $25.00 on a USD account); there is no code path here that changes a budget without a number in it. Raising a daily budget takes effect immediately and the extra money is spent the same day. Read the current value with get_campaign and the floor with get_ad_account_minimum_budgets first. Spends real money. Granting it lets an agent raise a campaign budget without a human in the loop.
meta_marketing_set_campaign_spend_capWRITEDESTRUCTIVE — set the hard lifetime ceiling on this campaign's spend, in the ad account's minor currency unit. Meta stops delivery when the cap is reached. Lowering it is a safety measure; RAISING it is the single change that most directly increases how much money can leave the account, which is why it is granted separately and confirm-gated. Passing remove_spend_cap removes the ceiling entirely and is refused. Spends real money. Raising a spend cap raises the maximum this campaign can ever cost.
meta_marketing_start_ad_account_insights_reportREADSubmit an insights query as an ASYNCHRONOUS report and get back a report_run_id. This is the right shape for anything large: a long window, ad-level rows across a whole account, or several breakdowns at once — a synchronous call for that either times out or is rate-limited away. Poll with get_insights_report_status until async_status is 'Job Completed', then read the rows with get_insights_report_results. A report_run_id expires after 30 days.
meta_marketing_start_ad_insights_reportREADSubmit an asynchronous insights report for one ad. Returns a report_run_id.
meta_marketing_start_ad_set_insights_reportREADSubmit an asynchronous insights report for one ad set. Returns a report_run_id.
meta_marketing_start_campaign_insights_reportREADSubmit an asynchronous insights report for one campaign. Returns a report_run_id.
meta_marketing_stop_sharing_audience_with_ad_accountWRITEDESTRUCTIVE — revoke another ad account's access to this audience. It ships WITHOUT its opposite: Agentic Fabriq exposes no action that shares an audience with an account, because the recipient would be chosen by the agent (E5). Removal is exposed because it is the remediation — it is how an audience built from a customer list stops being reachable by an agency that should no longer have it. Read the current list with list_custom_audience_ad_accounts first.
meta_marketing_stop_sharing_pixel_with_ad_accountWRITEDESTRUCTIVE — revoke another ad account's access to this pixel. It ships WITHOUT its opposite: Agentic Fabriq exposes no action that shares a pixel, because the recipient would be agent-chosen (E5). Removal is exposed because it is the remediation. The other account immediately loses the ability to build audiences from this pixel; audiences it already built keep working.
meta_marketing_unarchive_adWRITEReturn an archived ad to PAUSED. The inverse of archive_ad. It does not start delivery.
meta_marketing_unarchive_ad_setWRITEReturn an archived ad set to PAUSED so it can be edited again. The inverse of archive_ad_set. It does not start delivery.
meta_marketing_unarchive_campaignWRITEReturn an archived campaign to PAUSED so it can be edited again. The inverse of archive_campaign. It does NOT start delivery — that is activate_campaign.
meta_marketing_update_adWRITERename an ad, point it at a different creative, or change its tracking. Status is NOT reachable here — activate_ad, pause_ad and archive_ad are separate, confirm-gated actions.
meta_marketing_update_ad_creativeWRITERename a creative or change its URL tags. NOTE: Meta makes a creative's body largely immutable once ads reference it — to change the copy or the image, create a new creative and point the ad at it with update_ad.
meta_marketing_update_ad_labelWRITERename an ad label. Every object carrying it keeps carrying it.
meta_marketing_update_ad_setWRITEChange an ad set's name, schedule, targeting, optimisation or frequency caps. Budget, bid and status are NOT reachable here — each is a separate, confirm-gated action. Replacing the targeting spec REPLACES it wholesale rather than merging, so read the current spec with get_ad_set first.
meta_marketing_update_campaignWRITERename a campaign or change its non-monetary settings. Budget, spend cap, bid strategy and status are NOT reachable here — each has its own action, because on Meta the dangerous argument and the harmless one sit behind the same endpoint.
meta_marketing_update_custom_audienceWRITERename an audience, change its description or change its retention window. NOTE: shortening retention_days DROPS people who matched outside the new window, and Meta will not put them back — the audience has to refill over time.
meta_marketing_update_custom_conversionWRITERename a custom conversion or change its default value. NOTE: changing the value changes the ROAS every ad set optimising toward it is bidding on.
meta_marketing_update_pixelWRITERename a pixel, or change its first-party-cookie and automatic-matching settings.
meta_marketing_update_product_setWRITERename a product set or replace its filter. NOTE: changing the filter changes what every live dynamic ad using this set shows, immediately, with no review step.
meta_marketing_validate_targetingREADCheck INDIVIDUAL TARGETING OPTIONS — interests, behaviours, demographics — against Meta's rules WITHOUT creating anything. Each item is one option: {'type':'interests','id':'6003107902433'} or {'type':'interests','name':'Coffee'}, the shape search_targeting_interests and get_targeting_suggestions return. Use it to find out whether an option is deprecated, unavailable under a special ad category, or no longer offered at all. THIS DOES NOT VALIDATE A WHOLE TARGETING SPEC: hand it a spec object and Meta answers {'valid': false} with no reason given. To check a complete spec before create_ad_set or update_ad_set, use describe_targeting_in_words, get_reach_estimate or get_delivery_estimate. Nothing is created and no money is spent. Read-only and creates nothing. Checks named targeting options, not whole specs.
Put Meta Marketing behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.