MCP (streamable HTTP) or REST API · Threads

Draft and schedule Threads posts from n8n

An n8n workflow can feed Threads the same way it feeds other networks: a trigger, a transform, and one HTTP request to SocialHandoff. Use it for shop updates, event reminders, or new blog items, with the approval inbox between the automation and your public profile. The 250-posts-per-24-hours quota is checked before each publish, so a busy workflow cannot overrun it. Media is served to Threads at signed URLs, and nothing publishes without approval.

Prompt

When a new row with status 'ready' lands in our Airtable events base, draft a Threads post announcing the event: name, date, city, and signup link. Send it to the REST API with networks ["threads"] and mode submit.

How to do it

  1. Mint a Threads agent key In https://app.socialhandoff.com, open Connections, connect your Threads account, then create an agent key scoped to Threads with draft permission only. Copy the key when it is shown; only its hash is stored.
  2. Pick a trigger Start the workflow with the event that should produce a post: an RSS item, a new row, a form submission, or a Schedule Trigger.
  3. Add an HTTP Request node Set it to POST https://app.socialhandoff.com/v1/posts with a Header Auth credential for the key. Send JSON with body, networks set to ["threads"], and mode "submit".
  4. Handle the response The response carries the post id and status. Branch on it to log the draft, or wait for the approval.requested and post.published outbound webhooks.

Example draft

Next stop: Lisbon. Our open design meetup is on 14 November at the Hub Criativo in Beato. Talks, portfolio reviews, and a lot of pastel de nata. Free, but spots are limited. Save yours: example.com/events/lisbon

Gotchas

  • Threads allows 250 posts per account in any 24 hours. The quota is checked before each publish, so a post that would go over it is stopped before it is sent rather than failing at the network.
  • Threads fetches images and video from your instance at signed, expiring URLs, so you do not need a separate public media host. The API itself must be reachable over public HTTPS; an instance that only runs on localhost cannot publish media to Threads.
  • Keep each Threads post within 500 characters, and remember that Threads counts emoji by their UTF-8 bytes, so a few emoji use more of the limit than they appear to. The per-network length guardrail flags longer drafts before they reach the inbox.
  • Store the key in an n8n Header Auth credential, not typed into the node, so it does not leak when you export or share the workflow.
Threads
  • Character limit: 500 characters per post. Emoji count as their UTF-8 bytes, so an emoji can use up to 4 characters of the limit.
  • Links: Up to 5 links per post. Threads generates a preview for the first one.
  • Carousels: 2 to 20 images or videos in one carousel post.
  • Image files: JPEG or PNG, up to 8 MB. Threads fetches each file from a URL at publish time.
Threads scheduler for agent drafts you approve first

Frequently asked questions

Should n8n use the REST API or MCP?
Use REST. The HTTP Request node maps cleanly to POST /v1/posts, and the OpenAPI spec at /openapi.json documents every field.
Can one n8n run draft for Threads and Bluesky together?
Yes. Put both in networks. Each network gets its own target, checked against its own length rule, and you approve them in one card.
What happens if a Threads publish fails?
The post is marked failed with the error, a post.failed webhook fires if you registered one, and you can fix and retry from the inbox.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial