Guide

Post to X from n8n
without the Twitter API

The native n8n X node uses app-only OAuth and returns a 403 the moment you try to post. Skip it. One HTTP Request node pointed at OpenTweet posts and schedules tweets from n8n, with no X developer account and no OAuth.

Get your API key

7-day free trial. No X developer account needed.

Why the native X node gives you a 403

This trips up a lot of people, and the workflow is not the problem. The native n8n X node authenticates with OAuth2 client credentials, which is an app-only, read-only context on the X API. App-only tokens are not allowed to create tweets, so the post action comes back as 403 Forbidden every time.

Native X node

  • App-only OAuth, read-only in practice
  • Returns 403 when creating a tweet
  • Needs an X developer account and app
  • Metered per-post X API billing

HTTP Request to OpenTweet

  • One Bearer API key, no OAuth
  • Posts and schedules reliably
  • No X developer account
  • Flat price, no per-post fees

Four steps to post from n8n

1

Connect X to OpenTweet

Sign up for OpenTweet and connect your X account with a normal login. No developer application, no approval wait. Then create an API key.

2

Add an HTTP Request node

In your n8n workflow, drop in an HTTP Request node where you would have used the native X node.

3

Configure the request

Method POST, URL https://opentweet.io/api/v1/posts, an Authorization header set to Bearer your key, and a JSON body with your tweet text.

4

Run the workflow

Execute it. OpenTweet posts the tweet to X. No 403, no OAuth dance, no keys to babysit.

The exact HTTP Request node settings

Copy these into the HTTP Request node. This is the whole integration.

MethodPOST
URLhttps://opentweet.io/api/v1/posts
AuthenticationNone (use a header, below)
Send HeadersOn
HeaderAuthorization: Bearer ot_your_api_key
Send BodyOn, Body Content Type: JSON

JSON body to post immediately:

{
  "text": "Posted from n8n with no Twitter API.",
  "publish_now": true
}

Or schedule it for later, send a timestamp instead:

{
  "text": "This one is scheduled from n8n.",
  "scheduled_date": "2026-07-05T15:00:00Z"
}

Tip: wire the tweet text to an earlier node (an RSS item, a form, an AI node) with an n8n expression like {{ $json.title }}.

One API key

Replaces the X developer account and the whole OAuth setup.

No more 403

Posts reliably where the native app-only node cannot.

Post or schedule

publish_now for instant, scheduled_date to queue it.

Using a different tool? The same one-node approach works for Make, any backend, or an AI agent.

Frequently asked questions

Why does the n8n X (Twitter) node return a 403 when I try to post?

The native n8n X node authenticates with OAuth2 client credentials, which is an app-only, read-only context on the X API. App-only tokens cannot create tweets, so the create-tweet action fails with a 403 Forbidden. It is not a bug in your workflow. The node simply cannot post with that auth. Using an HTTP Request node pointed at OpenTweet avoids the problem entirely.

Do I need an X developer account to post from n8n?

Not with this method. You connect your X account to OpenTweet once with a normal login and get one API key. n8n calls OpenTweet, OpenTweet posts to X. There is no X developer application, no OAuth setup in n8n, and no API keys to manage.

Can I schedule tweets from n8n instead of posting immediately?

Yes. Send a scheduled_date field with an ISO timestamp instead of publish_now, and OpenTweet queues the tweet for that time. You can also send an array of posts to schedule a whole batch in one HTTP Request node.

Does this work for threads and media?

Yes. The OpenTweet API supports threads (is_thread with thread_tweets) and media. You build the JSON body in n8n the same way you would for a single tweet, just with the extra fields.

How much does it cost?

A flat price. Pro is $11.99/mo with no per-post fees. Compare that to the X API, which requires a developer account and bills per post, with link posts often costing more.

Fix your n8n X workflow today

Connect X, get one key, and post from a single HTTP Request node. No 403, no developer account.

Start your 7-day free trial