Meta ​
| Workflow | Type | Description |
|---|---|---|
| meta.ads.adset.create-paused | Atomic | Create a Marketing API ad set with status=PAUSED only. Never sets ACTIVE (SOCIAL-004). |
| meta.ads.campaign.create-paused | Atomic | Create a Marketing API campaign with status=PAUSED only. Never sets ACTIVE (SOCIAL-004). |
| meta.ads.campaign.enable | Atomic | Hard-gated enable path for a paused Meta Ads campaign. Requires an approved meta_ads_spend_review envelope unless force=true. v1 records the gate and does NOT call Marketing API to set status ACTIVE. |
| meta.ads.campaign.enable-with-approval | Dag | Open a Staff inbox envelope to enable a paused Meta Ads campaign. Does not unpause or spend. Call meta.ads.campaign.enable separately with the approved envelope (v1 still will not set ACTIVE). |
| meta.ads.campaign.request-review | Atomic | Create a Staff ActorOutboxEnvelope for Meta Ads spend enable (SOCIAL-004 hard inbox gate). |
| meta.ads.creative.attach | Atomic | Upload a StorageObject to the ad account image library. Optionally create a PAUSED Ad (requires adset_id + page_id). Never enables spend. |
| meta.ads.insights.pull | Atomic | Pull Marketing API insights for a campaign or pinned ad account (impressions, spend, clicks, reach). |
| meta.comment.hide | Atomic | Hide or unhide a Facebook/Instagram comment. Requires an approved meta_comment_moderation envelope unless force=true. |
| meta.comment.hide-with-approval | Dag | Open inbox review for a Meta comment hide. After approve, call meta.comment.hide with approval_envelope_uuid. |
| meta.comment.reply | Atomic | Reply to a Facebook (POST /{comment-id}/comments) or Instagram (POST /{ig-comment-id}/replies) comment. Requires an approved meta_comment_moderation envelope unless force=true. |
| meta.comment.reply-with-approval | Dag | Open inbox review for a Meta comment reply. After approve, call meta.comment.reply with approval_envelope_uuid. |
| meta.comment.request-review | Atomic | Open a Staff inbox envelope for Meta comment reply or hide (envelope type meta_comment_moderation). |
| meta.compensation.noop | Atomic | No-op compensation marker for Meta DAG layers whose forward steps are local drafts or inbox envelopes without a reverse Graph mutation. |
| meta.content.draft | Atomic | Validate Meta organic content inputs and stamp a draft_id for the publish-with-approval DAG (no Graph mutate). |
| meta.content.publish | Atomic | Route organic publish by channel and kind. Requires an approved meta_content_review envelope unless force=true (SOCIAL-004 hard gate). |
| meta.content.publish-with-approval | Dag | Draft Meta organic content and open a staff inbox review envelope. Does not publish — after approve, call meta.content.publish with the approval_envelope_uuid (SOCIAL-004 hard gate). |
| meta.content.request-review | Atomic | Create a Staff ActorOutboxEnvelope for Meta organic content inbox review (mirrors media.artifact.request-review). |
| meta.facebook.feed.publish | Atomic | Publish organic Facebook Page content from caption/message and optional media_id (unpublished photo) or link. |
| meta.facebook.video.publish | Atomic | Publish a Facebook Page video from file_url or an org storage object (bytes uploaded in action scope). |
| meta.instagram.carousel.container.create | Atomic | Create the parent Instagram carousel container from finished item creation_ids. |
| meta.instagram.carousel.publish | Linear | Publish an Instagram carousel: per-item container → await FINISHED → parent carousel container → await → media_publish. Uses schedule_transition. |
| meta.instagram.container.await | Linear | Poll an Instagram media container until status_code=FINISHED (or ERROR/EXPIRED/timeout). Uses schedule_transition — no auto_advance self-loop. |
| meta.instagram.container.create-item | Atomic | Create an Instagram carousel item container (is_carousel_item=true). Caller resolves storage to image_url or media_id — no bytes in this atom. |
| meta.instagram.media.publish | Atomic | Publish an Instagram media container via media_publish (creation_id must be FINISHED). |
| meta.instagram.publish | Atomic | Publish an Instagram organic media post from caption + image_url or a prior media_id reference. Waits for container FINISHED before media_publish. |
| meta.instagram.reel.publish | Atomic | Publish an Instagram Reel from video_url or a resolvable Facebook video media_id. |
| meta.media.upload | Atomic | Download a storage object in-process and upload it to Graph as an unpublished Page photo; returns media_id only (never bytes). |
| meta.media.video.upload | Atomic | Resolve a public video URL for IG Reels / FB video publish. Uses video_url when provided, otherwise uploads storage bytes to an unpublished Page video and reads the Graph source URL. |
