Back to Blog
7 min read

n8n Social Media Agent: Let AI Post, With Approval

Build an n8n AI agent that drafts and schedules posts, with a human review step that pauses each post until you approve it in Slack or chat.

n8n Social Media Agent: Let AI Post, With Approval

Short answer: To build a social media agent in n8n, connect an AI Agent node to an HTTP Request tool that calls POST https://status200uploads.com/api/v2/posts. Then put a human review step in front of that tool. The agent writes the post and fills in the fields with $fromAI(), but n8n pauses the workflow and sends you the exact request in Slack, Telegram, Discord, n8n Chat or another channel. The post is only sent when you approve. If you deny it, n8n says "the action is canceled and the AI is informed of the rejection." Add a second tool that runs a dry run, so the agent can check a post without sending anything.

Key Takeaways

Point Details
The agent n8n's AI Agent node with a chat model
The posting tool An HTTP Request tool calling our REST API, on every plan, Free included
The safety step A human review step on the posting tool: approve to send, deny to cancel
Where you approve Chat, Slack, Discord, Telegram, Microsoft Teams, Gmail, WhatsApp Business Cloud, Google Chat or Outlook
AI-filled fields $fromAI('text') and similar; the reviewer sees the values the AI chose
Checking first A dry-run tool: every check runs and nothing is sent
Newer option n8n Agents (n8n 2.40, Preview), with approval on sensitive tools

How the approval step works

n8n's guide Human-in-the-loop for tools lays out the steps:

  1. "The AI Agent determines it needs to use a tool that has human review enabled."
  2. "The workflow pauses and sends an approval request through your configured channel (such as Slack, Telegram, or the n8n Chat interface)."
  3. "A human reviewer receives the request showing which tool the AI wants to use and with what parameters."
  4. "The reviewer either approves or denies the request."
  5. "If approved, the tool executes with the AI-specified input."

You can put review on every tool or only some: "HITL can be applied to all tools connected to an AI Agent node, or just selected individual tools". That fits social media well. Let the agent read and check freely, and gate only the tool that posts. n8n lists "sending external communications" among the irreversible actions that call for review, and a published post is one.

What you need

  • An n8n instance (n8n Cloud or self-hosted) and credentials for a chat model. Human review for AI tool calls arrived in n8n 2.6 ("Released: 2026-01-26 in n8n 2.6", per the changelog), so use that version or newer.
  • A Status 200 Uploads account with your networks connected, and an rl_ API key from the dashboard. The REST API is "On every plan, Free included" (n8n integration).
  • An approval channel. In the Tools Panel you pick it under Human review: n8n's options are Chat, Slack, Discord, Telegram, Microsoft Teams, Gmail, WhatsApp Business Cloud, Google Chat and Microsoft Outlook.

Build it in five steps

  1. Trigger. Add a Chat Trigger, so you can ask the agent things like "Write a LinkedIn post about Friday's webinar and schedule it for Tuesday 9:00."
  2. Agent. Add an AI Agent node and connect your chat model.
  3. Human review. Click the agent's Tools connector. In the Tools Panel, find Human review, pick your channel and add its credentials.
  4. Posting tool. Add an HTTP Request tool to the human review step's tool connector, and set it up as below.
  5. Check tool. Add a second HTTP Request tool straight to the agent (no review) that sends the same body with "dryRun": true.

The posting tool

Set the HTTP Request tool to POST https://status200uploads.com/api/v2/posts, with Header Auth Authorization: Bearer rl_your_api_key, and this JSON body:

{
  "post": {
    "accountId": "@yourprofile",
    "platform": "{{ $fromAI('platform', 'One of: linkedin, x, threads, facebook', 'string') }}",
    "scheduledFor": "{{ $fromAI('scheduledFor', 'ISO 8601 date and time with a time zone, for example 2026-11-03T09:00:00+01:00', 'string') }}",
    "content": {
      "text": "{{ $fromAI('text', 'The post text, written for this network', 'string') }}"
    }
  }
}

The $fromAI() calls are what make it an agent tool. n8n's Use AI for parameters page explains that the function "uses AI to dynamically fill in parameters for tools connected to the Tools AI agent", and that its arguments are "hints that the AI model will use to populate the right data". With a review step, "those AI-determined values are what the human reviewer sees and approves."

Three rules from our API documentation matter here:

  • Time zone required. "A time without a zone … is refused with 400 scheduled_for_invalid". Put the zone in the hint, as above.
  • Scheduling window. "More than 60 seconds ahead is scheduled; the past, "now" or within 60 seconds publishes at once". You can schedule up to 365 days ahead.
  • One network per request. "Each request goes to one network from one profile." If the agent posts to LinkedIn and X, it calls the tool twice, and you approve each call.

Leave Retry On Fail off on this tool. Our n8n page says that without an Idempotency-Key header, "turn Retry On Fail off", so a retry can't post twice.

The review message

In the human review step, use n8n's $tool variable, so the reviewer sees the post before it goes out. n8n's own example message:

The AI wants to use {{ $tool.name }} with the following parameters:
{{ JSON.stringify($tool.parameters, null, 2) }}

$tool.name is "the node name as shown on the canvas", so name the tool something clear like Schedule post. $tool.parameters includes "any fields in the tool's input schema that are configured with $fromAI() expressions": the network, the time and the full text.

The check tool: a dry run, no approval needed

The second tool sends the same body with "dryRun": true next to post. Our API docs say: "Every check a publish makes is run and nothing is sent. The answer is 200 with dry_run: true". Since nothing is published, this tool can run without review. The agent can then fix a problem, like text that is too long or a missing time zone, before it asks you to approve.

The system prompt

n8n asks for this step explicitly: "Make sure you include the tool setup and human review steps in your system prompt." It suggests saying which tools need approval, what happens when approval is denied, and how the AI should respond. An example:

You write and schedule social media posts. Always call "Check post" first and fix any problem it reports. Then call "Schedule post" once per network. "Schedule post" needs human approval. If it is denied, don't try again with the same text: ask what to change.

Or use n8n Agents

n8n's changelog lists Agents as "Released: 2026-09-21 in n8n 2.40". An agent you set up once can use "n8n nodes, MCP servers, and your own workflows" as tools, and you can "Mark sensitive tools to require approval before the agent runs them." On cost, "One turn with an agent counts as one execution." Agents are still in Preview: "They can make mistakes, and their behavior may change while they're in development. Test before you publish, and require approval on tools that write to your systems." The AI Agent node setup above is unchanged: "The AI Agent node hasn't changed, and everything you've built with it keeps working."

For a plain workflow without an agent, like a sheet of ready posts on a schedule, see How to auto-post to social media with n8n.

FAQ

Can an n8n AI agent post to social media? Yes. Give the AI Agent node an HTTP Request tool that calls a posting API such as ours, and fill the post fields with $fromAI(). Put a human review step in front of the tool so nothing goes out without your approval.

How do I make the agent wait for my approval? Click the agent's Tools connector, add a human review step under Human review, pick a channel such as Slack or n8n Chat, and connect the posting tool to it. The workflow pauses until you approve or deny.

What happens if I deny a post? n8n cancels the action, so nothing is sent, and tells the agent it was rejected. Your system prompt should say what the agent does next, for example ask what to change.

Can the agent post to several networks at once? One request goes to one network from one profile. The agent calls the tool once per network, and each call gets its own approval.

Do I need a paid plan? Our REST API is on every plan, Free included, and your plan's post limits apply. n8n lists Agents as available on all n8n plans; check n8n's pricing for your own n8n plan.


Sourced (checked 2 November 2026)