How to post to Mastodon from n8n
n8n-nodes-postwire and set Post → Publish with Networks set to Mastodon, or send one HTTP Request to https://postwire.io/api/post. You connect your Mastodon server once with its address and an access token, and the workflow publishes a toot of up to 500 characters, a thread of up to 10 posts, and up to 4 images or a video with alt text, on mastodon.social or any other server. PostWire uploads the media, waits for the server to process a video, then posts.Typical trigger: a new article in an RSS feed, a release on GitHub, a new episode of a podcast. The same node sends that news to Bluesky, LinkedIn or Telegram in the same step, each with its own text.
Updated . Written from PostWire's own code; vendor prices read on Oct 27, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.
Post to Mastodon from n8n, step by step
About ten minutes, on the free plan. On Oct 27, 2026 n8n's list of built-in app nodes went from Matrix and Mattermost straight to Mautic: there is no Mastodon node to configure, which is why the steps start with PostWire.
- Create a free PostWire account
Open postwire.io/dashboard.html, type your email and press Create my free account. PostWire emails you a link to confirm the address; connecting accounts and publishing unlock once it is confirmed. No password and no card (free plan: 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month), 2 networks per post, 3 scheduled posts at a time — every network connects free, no card).
- Create an access token on your Mastodon server
In Mastodon open Preferences → Development → New application, give it a name, tick
write:statusesandwrite:media, save, and open the application to copy Your access token. It works for your account on that server only, and deleting the application in Mastodon disconnects PostWire. - Connect Mastodon
In the dashboard open Accounts, press Connect on Mastodon and paste your server's address (for example
https://mastodon.social, or your own instance) and the access token. The address has to be a public https server. - Copy your API key
In the dashboard, open API & MCP and press Copy key on the API key card. It is sent as
Authorization: Bearer pw_live_…(theX-API-Keyheader also works). Keep it server-side. - Install the PostWire node
In n8n: Settings → Community nodes → Install, enter
n8n-nodes-postwire(version 0.4.3 on npm on Oct 27, 2026), then add a PostWire API credential with the key and press Test, which checks the key at once. Where community nodes cannot be installed, the HTTP Request node further down does the same job. - Configure Post → Publish
Networks: Mastodon. Content: Smart Distribute: Write a Native Post per Network, with the Idea from the previous node: the Mastodon draft stays within 500 characters, community-first, no marketing-speak, with 2 to 4 CamelCase hashtags, which screen readers read out word by word. To send your own words, set Content to Same Text on Every Network. Media: URL or Binary File for an image or a video. For a thread, Options → Thread lists the posts after the first, First Comment adds a reply under the last one, and Split Long Text Into a Thread cuts a long text into toots itself.
- Or one HTTP Request node
POST to the REST API with header
Authorization: Bearer pw_live_….mediatakes up to 4 attachments, photos or a video, each with its ownalt;per_platform.mastodon.threadtakes the posts after the first (up to 9), ortrue:POST https://postwire.io/api/post Authorization: Bearer pw_live_… Content-Type: application/json { "platforms": ["mastodon"], "per_platform": { "mastodon": { "text": "Episode 42 is out: how we cut our build time from 9 minutes to 2. #DevOps #BuildInPublic", "thread": [ "The biggest win was caching dependencies between runs, not faster machines.", "The second was running the slow tests only when their folder changed." ], "first_comment": "Listen: {{ $json.link }}" } }, "media": [ { "url": "{{ $json.cover }}", "type": "image", "alt": "Episode 42 cover: a stopwatch at 2:00" } ], "idempotency_key": "{{ $json.guid }}" } - Read the result, or schedule it
The result carries the toot's link on your server and, for a thread, every post's id. To publish later, use Post → Schedule with When: At a Specific Time or In the Next Free Queue Slot (or
POST /api/schedulewithrun_at). To react when a post lands or fails, start a second workflow with the PostWire Trigger node.
Every reply of a thread is sent with its own Idempotency-Key, made of the first post's id and its place in the chain, so a retry never leaves a second copy of a reply on your server. A whole workflow, from the trigger to the post, is laid out in n8n social media automation.
Three ways to post to Mastodon from n8n
n8n's and Mastodon's own documentation and each vendor's page, read on Oct 27, 2026.
| Route | How it plugs into n8n | Threads from the workflow | Free to start |
|---|---|---|---|
| PostWire | The node n8n-nodes-postwire (Mastodon under Networks), or an HTTP Request | Yes — Thread option, up to 10 posts, or split automatically | Free plan: 10 posts a month, a thread counts as 1 |
| n8n's HTTP Request node to your server | No Mastodon node: /api/v2/media, then /api/v1/statuses, built by you | One call per reply with in_reply_to_id | Part of n8n |
| Upload-Post (HTTP Request) | HTTP Request to its upload API, with your instance URL and access token | Not listed on its n8n page | Free plan: 10 uploads a month |
Checked on Oct 27, 2026 (2026-10-27) on each vendor's own pricing or docs page, linked in the first column and below. Monthly billing in USD unless noted. "Not listed" means we could not find it on their page, not that it is missing.
Where PostWire is ahead
- A node with Mastodon in its Networks list. n8n's list of built-in app nodes has no Mastodon node, and Upload-Post's n8n page uses an HTTP Request node.
- Threads from a node option: up to 10 toots, or one switch that splits a long text, with an Idempotency-Key on every reply. Upload-Post's n8n Mastodon page does not mention threads.
- Media in one step: PostWire uploads up to 4 attachments with alt text and waits for a video to be processed. Mastodon's own API takes a media upload, a wait for video, then the post.
- The toot is written in the node for Mastodon: community-first, within 500 characters, with CamelCase hashtags.
- A thread counts as one post of your plan, and Starter is $9 a month for 3 businesses. Upload-Post Basic is $24 a month.
- Nine more networks from the same node, each with its own version: TikTok, Instagram, YouTube, LinkedIn, Facebook Pages, Bluesky, Telegram, Discord, and X on paid plans.
- n8n docs — built-in app nodes (the full list: no Bluesky and no Mastodon node): docs.n8n.io/integrations/builtin/app-nodes/
- Mastodon docs — POST /api/v1/statuses (write:statuses; media_ids[]; in_reply_to_id; Idempotency-Key kept up to 1 hour): docs.joinmastodon.org/methods/statuses/
- Mastodon docs — POST /api/v2/media (write:media; video processed asynchronously, answers 202): docs.joinmastodon.org/methods/media/
- Upload-Post — n8n Mastodon upload (HTTP Request to its API; instance URL + personal access token; up to 4 images; native video): www.upload-post.com/n8n/mastodon-upload/
- Upload-Post plans (llms-full.txt: Free 10 uploads a month, 2 profiles; Basic $24 a month, 5 profiles): www.upload-post.com/llms-full.txt
Images, video and alt text on Mastodon
| You send | Your followers get | From |
|---|---|---|
| Text only | A toot of up to 500 characters | The node or HTTP |
| Text and an image | A toot with the image | The node or HTTP |
| Text and a video | A toot with the video, posted once the server has processed it | The node or HTTP |
Up to 4 attachments, each with alt | A toot with all of them and their descriptions | HTTP |
| A thread and a first comment | Up to 10 toots in a chain, the link in a reply | The node or HTTP |
Alt text matters on Mastodon, where many people filter out media without a description: each attachment carries up to 1,500 characters of it. A video is uploaded first and PostWire waits up to 45 seconds for the server to process it; a toot is only created once the video is ready. Source: PostWire's Mastodon publisher, read Oct 27, 2026.
Why there is no Mastodon node in n8n, and what that means
On Oct 27, 2026 n8n's list of built-in app nodes had no Mastodon node (n8n's app nodes). Without a community node, the route is n8n's HTTP Request node calling your server's API, with an access token of your own.
Mastodon's documentation describes the calls: a toot is POST /api/v1/statuses with the write:statuses scope, and an image or a video is uploaded first with POST /api/v2/media (write:media), whose id then goes in media_ids[]. A video "will continue to be processed asynchronously and return 202", so the workflow has to wait and check before posting, and a thread is one call per reply with in_reply_to_id (statuses, media). The PostWire node does those steps in one, and writes the toot too.
What it does not do
PostWire publishes and schedules your own toots and threads on one Mastodon account per connection. It uses the account's default visibility, and it has no setting for content warnings or polls. It does not read your timeline or notifications, and it does not boost, favourite, follow or send direct messages. A video the server is still processing after 45 seconds is reported back so you can send it again, rather than posted without it.
Questions people ask
Is there a Mastodon node in n8n?
Not a built-in one: on Oct 27, 2026 n8n's list of built-in app nodes had no Mastodon node. You post to Mastodon with a community node such as n8n-nodes-postwire, which has Mastodon in its Networks list, or with an HTTP Request node calling your server's API.
How do I post to Mastodon from n8n?
Create an access token on your server (Preferences → Development → New application, with write:statuses and write:media), connect it in PostWire with your server's address, install n8n-nodes-postwire and use Post → Publish with Networks set to Mastodon. Or send an HTTP Request to https://postwire.io/api/post with "platforms": ["mastodon"].
Does it work with any Mastodon server?
Yes: mastodon.social or any other public server reachable over https, including your own instance. You paste the server's address and an access token made on that server.
Can n8n post a Mastodon thread?
Yes. In the PostWire node, Options → Thread lists the toots after the first (up to 9) and First Comment adds a reply under the last one; Split Long Text Into a Thread cuts a long text into toots of up to 500 characters. Through the API, per_platform.mastodon.thread takes the same list, or true.
Can n8n post a video to Mastodon?
Yes. Send the video by URL or as a binary file from a previous node; PostWire uploads it, waits up to 45 seconds while the server processes it, then posts the toot. Up to 4 attachments per toot, each with its own alt text.
Which visibility do the toots get?
Your account's default visibility, the one set in your Mastodon preferences. PostWire has no per-post setting for visibility, content warnings or polls.
How much does it cost?
Mastodon, the API and the n8n node are on the free plan: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card. Starter is $9 a month for 3 businesses and Pro $29 for 10, with every network in each post; paid plans have a 14-day refund.
Try it on one business, free.
The free plan is 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month) and 2 networks per post — every network connects free, no card, no time limit. Paid plans start at $9 a month and have a 14-day refund; Pro can be tried free for 7 days and Agency for 14, with a card at checkout and nothing charged that day.