@bartv @RomanDavydchuk @jan @jake @Jon @ihortom @MutedJam still no update regarding this?
Please don’t ping staff like that.
TLDR
After a week grinding, it think its a dead end. Meaning even if you get the auth flow and token management working, you will not be able to post video publically to tiktok using APIs as it’s banned by TikTok.
My experiment
I created my local backend to proxy the auth and token request flow, and also added video upload function. My goal was to expose locally this endpoint so that n8n http node can simply use it to do all the work. Everything worked, and I am tyring to upload video now. Then i found out that, in order to post videos publically into an account, you will need to submit your API client to tiktok for audit. And they explicitly clamined that:
“API Clients must not be limited to test applications and should be intended for a wide audience, not limited to internal groups/private use.
Not acceptable: A utility tool to help upload contents to the account(s) you or your team manages.
”
So, n8n flow for auto video posting to own account is not allowed. So I expect in the furture even if n8n provided the official tiktok node, it will be limited to “read” rather than “write” actions. (eg. you can only getting user infos, metadata etc)
So sad, so bad, and I dont understand why tiktok does this as other platforms do not.
I got the same message as you, however I disagree with your last statement: “So I expect in the furture even if n8n provided the official tiktok node, it will be limited to “read” rather than “write” actions.”
On the contrary, if n8n develops an official TikTok node that would completely solve our problem! TikTok wants developers to make apps for a wide audience, not just internal use.
n8n needs to make a public node and submit it for Tiktok review. The problem is n8n, not TikTok.
I have bypassed the issue by using a refresh token. The problem is that TikTok does not fully comply with the OAuth2 specifications, which complicates the process of obtaining the authorization code, the access token, and the refresh token. To work around this, you need to create an HTTP node that uses the refresh token to retrieve a new access token for API calls. This approach effectively bypasses the issue with TikTok.
I managed to make TikTok OAuth2 work in n8n with a small workaround.
The problem was the client_key not being accepted when placed in the Client ID field of the OAuth2 credential.
What worked for me:
-
Set Client ID = 0
-
Add the client_key manually as a query parameter in Auth URI Query Parameters →
client_key=YOUR_CLIENT_KEY
-
Use Client Secret normally with your app’s client secret.
-
Add the scopes separated by commas (no spaces):
user.info.basic,video.upload,video.publish
-
Use the new OAuth2 endpoints from TikTok docs:
-
Authorization URL: https://www.tiktok.com/v2/auth/authorize/
-
Access Token URL: https://open.tiktokapis.com/v2/oauth/token/
-
-
Redirect URI: use the one generated by n8n (for me it was https:///rest/oauth2-credential/callback).
With this setup, I was able to complete the OAuth login and get valid tokens in sandbox mode ![]()
Hope this helps!
This solved my issue
I ran into the same issue where TikTok’s OAuth2 URLs expect client_key instead of the commonly used client_id.
I initially solved this by manually adding client_key as a query parameter inside the OAuth2 credential configuration.
However, I found that the Access Token URL also requires client_key which made the built-in OAuth2 credential unusable for TikTok.
So instead, I implemented a workaround without relying on n8n’s native OAuth2 credential, and it works perfectly:
My Working Solution
1. Create a dedicated workflow for TikTok OAuth authorization
This workflow is triggered by a Webhook node.
I used the Webhook URL as the OAuth redirect_uri inside my TikTok Developer App.
2. Build the TikTok Authorization URL manually
https://www.tiktok.com/v2/auth/authorize/?client_key=YOUR_CLIENT_KEY&scope=COMMA_SEPARATED_SCOPE&response_type=code&redirect_uri=YOUR_WEBHOOK_URL
When I open this URL in the browser and approve the permissions, TikTok redirects back to my webhook with a code parameter.
3. Extract the authorization code inside the workflow
Once the webhook receives the request, I parse out the code from the query parameters.
4. Exchange the code for Access + Refresh tokens
I send a simple HTTP POST request to TikTok’s token endpoint:
https://open.tiktokapis.com/v2/oauth/token/
with form-urlencoded parameters (including client_key, client_secret, code, and grant_type=authorization_code).
5. Store the tokens
After receiving the Access and Refresh tokens, I save them in a Data Table.
This allows me to reuse the tokens from any other workflow.
Whenever I need to re-authorize, I open the same authorization URL again and approve the permissions.
Result
This approach completely avoids TikTok’s unusual OAuth behaviour inside n8n’s generic OAuth2 credential and gives me a clean, reliable authorization flow.
The redirect_uri is also needed as a parameter
You can use your n8n WEBHOOK URL as redirect_uri
Yes, and it is what I did. Your message was very precious help. Thank you. My comment was about the required parameters at step 4. My first try didn’t work because the redirect_uri is also one of the parameters to send when exchanging the token : with form-urlencoded parameters (including client_key, client_secret, code, and grant_type=authorization_cod, and redirect_uri).
