Hi everyone,
I’m integrating the X (Twitter) OAuth2 API inside n8n, and I’m running into a strange issue.
What’s happening
-
I successfully created an app on developer.twitter.com.
-
I added the Client ID, Client Secret, and the OAuth2 callback URL from n8n.
-
Authentication works fine — n8n connects without errors.
-
When I run the Create Tweet node, the tweet actually posts on X, exactly as expected.
-
But n8n still returns this error:
Problem in node “Create Tweet”
403 Forbidden — perhaps check your credentials?
Why this is confusing
Even though n8n throws a 403, the tweet is already published on Twitter, meaning the API request clearly worked.
So the error n8n receives does not match the outcome on Twitter’s side.
What I’ve already checked
-
OAuth2 scopes are correctly enabled.
-
App permissions set to Read + Write.
-
Callback URL matches exactly.
-
All tokens freshly regenerated and reconnected in n8n.
-
Using the official built-in X OAuth2 API credential type.
-
Using the standard Create Tweet node, not a custom API call.
Additional detail
n8n is asking only for OAuth2.
There is no built-in option for OAuth1 in the current UI, so I cannot switch to the classic Twitter Auth1 workflow.
My main question
Why would n8n receive a 403 Forbidden response even though the tweet is posted successfully, and how can I resolve this mismatch?
If anyone has encountered this with Twitter’s new API behavior or has advice on debugging the n8n response-handling here, I’d appreciate your insight.
Thanks!