Skip to main content
On a self-hosted PostQueen the Kick app is yours. You create it in your Kick developer settings and give PostQueen its client ID and secret. Kick does not review apps.

Before you start

PostQueen signs in with OAuth 2.1 and PKCE on id.kick.com, and sends the secret as well. It does not check which scopes were granted.

Create the app

1

Turn on two-factor authentication

Kick’s developer tools need two-factor authentication on your account. Turn it on in your Kick security settings, then open Settings > Developer at kick.com/settings/developer.
2

Create the app

Create a new app and fill in its name, description and redirect URL. Leave webhooks off: PostQueen does not use them. Tick the three scopes PostQueen asks for: reading user information (user:read), reading channel information (channel:read) and writing to chat (chat:write).
3

Set the redirect URL

Use the address that matches how you run PostQueen:
Kick compares it exactly. Use localhost, not 127.0.0.1: Kick documents that sign-ins through 127.0.0.1 break.The redirect URI is where the network sends the browser back after someone approves PostQueen. It is your FRONTEND_URL + /integrations/social/ + the network’s identifier, for example https://postqueen.example.com/integrations/social/pinterest.Most networks need exactly one URI, with no trailing slash. Two exceptions: TikTok Business needs the trailing slash (/integrations/social/tiktok-business/), and a Google web client that also serves Google Business Profile lists both /integrations/social/youtube and /integrations/social/gmb. Channel developer apps lists every network’s ending.
4

Copy the client ID and secret

Your developer settings show the app’s Client ID and Client Secret. Copy both, and keep the secret private.

Set the variables

Add the two keys to your environment:
The second variable is KICK_SECRET, not KICK_CLIENT_SECRET. The long name is ignored, and the sign-in then fails at the token exchange.
Recreate the app container so it reads the new variables. A plain docker restart or docker compose restart keeps the old container and its old environment. In the folder that holds docker-compose.yaml, recreate only the postqueen service:
The database, Redis and Temporal keep running. Avoid docker compose down for a settings change: on a host that runs other Compose services in the same project, it stops them too. Then open PostQueen, go to Channels, choose Add Channel and pick this network. You are sent to its login to authorize PostQueen, and the channel appears in the Channels list once you accept.
The channel is in the Channels list with its avatar and name.
Add Channel does not check whether your variables are set. A missing or misspelled key shows up as a broken authorization page on the network’s side rather than a helpful message in PostQueen, so if the login page itself looks wrong, check the keys before anything else.
Pick Kick, sign in, and approve the chat permission. Posts go to the chat of the channel you signed in with.

Troubleshooting

Kick shows that page when the sign-in request is missing something it needs. Check KICK_CLIENT_ID, and that the redirect URL on the app is exactly your FRONTEND_URL followed by /integrations/social/kick.
The token exchange failed. The usual cause is the secret: check that it is in KICK_SECRET and is the app’s current secret.
The token lacks chat:write. Tick it on the app, then reconnect the channel and approve every permission.
Last modified on September 23, 2026