Developer App Setup
Before users can connect social accounts through Social Publishing, an administrator must create OAuth apps on each platform's developer portal and enter the credentials in KronGage Settings. This gives your workspace full control over rate limits and data access.
How Credentials Work
OAuth credentials are stored per organisation in the KronGage database, encrypted with AES-256. They are never shared across tenants.
Tenant Admin
└─ goes to web.krongage.io/settings → "Social Publishing API Keys"
└─ enters Client ID + Client Secret (+ optional Redirect URI)
└─ saved encrypted under their organisation
└─ Postiz uses them at OAuth time → passed to provider
Do not put OAuth Client IDs or Secrets in any .env file. All credential fields should be entered per-tenant via Settings.
Redirect URI Convention
For every platform, the OAuth redirect URI follows this pattern:
https://web.krongage.io/postiz/integrations/social/{provider-slug}
Two exceptions — X/Twitter and Threads use the base domain without /postiz:
https://web.krongage.io/integrations/social/x
https://web.krongage.io/integrations/social/threads
Multi-tenant note: Even if your workspace is at
test.krongage.io, the OAuth redirect URI always points toweb.krongage.io/postiz/…. Postiz is deployed there, and areturnURLquery param routes the user back to their tenant subdomain after auth completes. If a tenant brings their own OAuth app with a custom domain, they can override the Redirect URI in Settings — that value takes precedence.
Where to Enter Credentials
Go to KronGage → Settings → Social Publishing API Keys.
For each platform enter:
| Field | Description |
|---|---|
| Client ID | The OAuth app identifier (App ID, Client ID, or API Key depending on the platform) |
| Client Secret | The OAuth app secret |
| Redirect URI | Optional override — leave blank to use the platform default shown in this guide |
| Instance URL | Mastodon only — your Mastodon instance URL |
1. Facebook Page
Posts text, photos, carousels, and videos to a Facebook Page.
Developer Console Setup:
- Go to developers.facebook.com → My Apps → Create App, choose Business
- Add the Facebook Login product
- In Facebook Login → Settings → Valid OAuth Redirect URIs, add:
https://web.krongage.io/postiz/integrations/social/facebook - Required permissions:
pages_show_list,business_management,pages_manage_posts,pages_manage_engagement,pages_read_engagement,read_insights
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Facebook App ID |
| Client Secret | Facebook App Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/facebook |
Known issues:
- Page selector appears blank — the Facebook user who authorises must have admin access to at least one Page
- Token expires after ~60 days — normal; reconnect from Channels
2. Instagram Business
Posts feed images, carousels, Reels, and Stories. Uses the same Meta app as Facebook.
Developer Console Setup:
- In your existing Facebook App (from step 1 above), add the Instagram Graph API product
- In Instagram → Basic Display → Valid OAuth Redirect URIs, add:
https://web.krongage.io/postiz/integrations/social/instagram - Required permissions:
instagram_basic,pages_show_list,pages_read_engagement,business_management,instagram_content_publish,instagram_manage_comments,instagram_manage_insights - The Instagram account must be a Business or Creator account connected to a Facebook Page
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Facebook App ID (same as Facebook Page) |
| Client Secret | Facebook App Secret (same as Facebook Page) |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/instagram |
Known issues:
- "No Instagram account found" — the Facebook user must have connected their Instagram Business account to their Facebook Page in Instagram settings
- Carousel size error — images must be between 4:5 and 1.91:1 aspect ratio
3. Instagram Standalone (Personal)
Posts feed images, carousels, and Reels. Uses a separate app from Facebook — the Instagram Platform API.
Developer Console Setup:
- Go to developers.facebook.com → Create a separate app, type: Consumer
- Add the Instagram Platform product
- In Instagram Platform → API Setup with Instagram Login, add redirect URI:
https://web.krongage.io/postiz/integrations/social/instagram-standalone - Required permissions:
instagram_business_basic,instagram_business_content_publish,instagram_business_manage_comments,instagram_business_manage_insights
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Instagram App ID (from the separate Consumer app) |
| Client Secret | Instagram App Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/instagram-standalone |
4. Threads
Posts text to Threads. Can use the same Facebook app or a separate one.
Developer Console Setup:
- In your Meta app, add the Threads API product
- In Threads API → Redirect URIs, add:
https://web.krongage.io/integrations/social/threadsNote: no
/postizprefix — Threads uses the base domain like X/Twitter. - Required permissions:
threads_basic,threads_content_publish,threads_manage_replies,threads_manage_insights
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Threads App ID (same as Facebook App ID if using same app) |
| Client Secret | Threads App Secret |
| Redirect URI | https://web.krongage.io/integrations/social/threads |
Known issues:
- Redirect URI mismatch — the URI must NOT have
/postiz. Threads uses the base domain URL, unlike all other Meta providers.
5. X / Twitter
Posts tweets, threads, and media. Uses OAuth 1.0a — not OAuth 2.0.
X credentials must be configured in Settings. There is no global fallback — the app will throw an error for all users if not set.
Developer Console Setup:
- Go to developer.twitter.com and create or select an app in a Project
- In App Settings → User authentication settings:
- Enable OAuth 1.0a, set permissions to Read and Write
- Callback URL:
https://web.krongage.io/integrations/social/x← no/postiz - Website URL:
https://web.krongage.io
- In Keys and Tokens, copy the API Key and API Key Secret
- Request Elevated access if you need analytics
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | API Key |
| Client Secret | API Key Secret |
| Redirect URI | https://web.krongage.io/integrations/social/x |
Known issues:
- "X API credentials are not configured" — X has no fallback. You must configure credentials before any user can connect an X account.
- Redirect URI must match exactly — no trailing slash; copy as shown.
6. LinkedIn (Personal)
Posts text, articles, images, and single videos to a personal profile.
Developer Console Setup:
- Go to linkedin.com/developers → Create App (requires association with a LinkedIn Company Page)
- In Auth tab → Authorized Redirect URLs, add:
https://web.krongage.io/postiz/integrations/social/linkedin - In Products tab, request:
- Sign In with LinkedIn using OpenID Connect
- Share on LinkedIn
(provides scopes:openid,profile,w_member_social)
- Copy Client ID and Client Secret from the Auth tab
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | LinkedIn Client ID |
| Client Secret | LinkedIn Client Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/linkedin |
Known issues:
- Carousel posts — LinkedIn doesn't support native carousels; Postiz converts them to PDF, requiring LibreOffice on the server.
- Token TTL is 59 days — reconnect required after ~2 months.
7. LinkedIn Page (Company)
Posts on behalf of a LinkedIn Company Page. Uses the same LinkedIn app as personal.
Developer Console Setup:
Same app as LinkedIn Personal. Additionally request the Marketing Developer Platform product, which provides: rw_organization_admin, w_organization_social, r_organization_social
Add redirect URI:
https://web.krongage.io/postiz/integrations/social/linkedin-page
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | LinkedIn Client ID (same as personal) |
| Client Secret | LinkedIn Client Secret (same as personal) |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/linkedin-page |
8. YouTube
Uploads videos with descriptions and thumbnails.
Developer Console Setup:
- Go to console.cloud.google.com and create or select a project
- Enable YouTube Data API v3 and YouTube Analytics API
- Go to Credentials → Create Credentials → OAuth 2.0 Client ID, type: Web application
- Authorized JavaScript Origins:
https://web.krongage.io - Authorized Redirect URIs:
https://web.krongage.io/postiz/integrations/social/youtube
- Authorized JavaScript Origins:
- Go to OAuth consent screen, add scopes:
youtube,youtube.force-ssl,youtube.readonly,youtube.upload,yt-analytics.readonly - If app is in Testing mode: go to Test users and add every Gmail address that needs to connect
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Google OAuth2 Client ID |
| Client Secret | Google OAuth2 Client Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/youtube |
Known issues:
- "Access blocked: krongage.io has not completed verification" — app is in Testing mode; add the Google account email as a Test User in the OAuth consent screen.
- Google OAuth blocked in iframe — handled automatically by KronGage; the OAuth URL opens in the top-level browser window via a postMessage relay.
9. Google My Business (GMB)
Posts updates, offers, and events to a Google Business Profile.
You can use the same Google Cloud OAuth client as YouTube — just add the GMB redirect URI alongside the YouTube one.
Developer Console Setup:
- In your Google Cloud project, enable Google My Business API and Business Profile Performance API
- In your OAuth 2.0 Client, add:
- Authorized Redirect URIs:
https://web.krongage.io/postiz/integrations/social/gmb - Authorized JavaScript Origins:
https://web.krongage.io
- Authorized Redirect URIs:
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Google OAuth2 Client ID |
| Client Secret | Google OAuth2 Client Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/gmb |
10. TikTok
Posts videos and photo slideshows.
Developer Console Setup:
- Go to developers.tiktok.com → Manage Apps → Create App
- Add Login Kit product
- In Login Kit → Redirect URI Allowlist, add:
https://web.krongage.io/postiz/integrations/social/tiktok - Scopes:
video.list,user.info.basic,video.publish,video.upload,user.info.profile,user.info.stats - Copy Client Key (= Client ID) and Client Secret
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | TikTok Client Key |
| Client Secret | TikTok Client Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/tiktok |
Known issues:
- Token expires every 23 hours — normal; Postiz auto-refreshes via cron job.
- "Content settings" error — flags like
disable_duet,disable_stitch,disable_commentare set automatically by the provider.
11. Pinterest
Pins images and videos to boards.
Developer Console Setup:
- Go to developers.pinterest.com → Create App
- In App Settings → Redirect URIs, add:
https://web.krongage.io/postiz/integrations/social/pinterest - Scopes:
boards:read,boards:write,pins:read,pins:write,user_accounts:read - Copy App ID (= Client ID) and App Secret Key (= Client Secret)
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Pinterest App ID |
| Client Secret | Pinterest App Secret Key |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/pinterest |
12. Reddit
Posts links, text, images, and videos to subreddits.
Developer Console Setup:
- Go to reddit.com/prefs/apps → Create Another App, type: web app
- Redirect URI:
https://web.krongage.io/postiz/integrations/social/reddit - Scopes used:
read,identity,submit,flair - Copy the App ID (shown below the app name) and Secret
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Reddit App ID |
| Client Secret | Reddit App Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/reddit |
Known issues:
- Rate limit: 1 req/sec — Reddit enforces strict throttling; max 1 concurrent post job.
13. Discord
Posts messages to Discord channels via a bot.
Discord requires a Bot Token in addition to OAuth credentials. The bot must be added to the server with message permissions. The Bot Token is infrastructure config — set once by the platform admin in
.env, not per-org.
Developer Console Setup:
- Go to discord.com/developers/applications → New Application
- In OAuth2 → Redirects, add:
https://web.krongage.io/postiz/integrations/social/discord - In Bot tab: enable the bot and copy the Bot Token (set as
DISCORD_BOT_TOKEN_IDin.env) - Bot permissions:
Send Messages,Embed Links,Attach Files,Read Message History - OAuth2 scopes:
bot,applications.commands
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Discord Application ID |
| Client Secret | Discord Client Secret (from OAuth2 tab) |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/discord |
14. Slack
Posts messages to Slack channels.
The Slack Signing Secret is infrastructure config (
SLACK_SIGNING_SECRETin.env) — not a per-org credential.
Developer Console Setup:
- Go to api.slack.com/apps → Create New App → From scratch
- In OAuth & Permissions → Redirect URLs, add:
https://web.krongage.io/postiz/integrations/social/slack - Add Bot Token Scopes:
chat:write,channels:read,groups:read - Install the app to your workspace and copy Client ID and Client Secret
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Slack App Client ID |
| Client Secret | Slack App Client Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/slack |
15. Mastodon
Posts toots (text and media) to a Mastodon instance.
Mastodon is unique — each instance is independent. You register an OAuth app on your specific Mastodon instance. The Instance URL must be stored in Settings.
Developer Console Setup:
- Go to your Mastodon instance (e.g.
https://mastodon.social) - Navigate to Preferences → Development → New Application
- Redirect URI:
https://web.krongage.io/postiz/integrations/social/mastodon - Scopes:
write:statuses,read:accounts,write:media - Copy the generated Client ID and Client Secret
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Mastodon Application Client ID |
| Client Secret | Mastodon Application Client Secret |
| Instance URL | Your instance URL (e.g. https://mastodon.social) |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/mastodon |
16. Dribbble
Posts design shots.
Developer Console Setup:
- Go to dribbble.com/account/applications → New Application
- Callback URL:
https://web.krongage.io/postiz/integrations/social/dribbble - Copy Client ID and Client Secret
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Dribbble Client ID |
| Client Secret | Dribbble Client Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/dribbble |
17. Twitch
Posts channel updates and announcements.
Developer Console Setup:
- Go to dev.twitch.tv/console/apps → Register Your Application
- OAuth Redirect URLs:
https://web.krongage.io/postiz/integrations/social/twitch - Category: Website Integration
- Copy Client ID and Client Secret (generate from the app page)
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | Twitch Client ID |
| Client Secret | Twitch Client Secret |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/twitch |
18. VK (VKontakte)
Posts wall posts, text, and images.
Developer Console Setup:
- Go to vk.com/dev → My apps → Create
- Authorized redirect URI:
https://web.krongage.io/postiz/integrations/social/vk - Copy App ID (= Client ID) and Secure key (= Client Secret)
KronGage Settings:
| Field | Value |
|---|---|
| Client ID | VK App ID |
| Client Secret | VK Secure Key |
| Redirect URI | https://web.krongage.io/postiz/integrations/social/vk |
19. Bluesky
Posts text and media. Does not use OAuth — uses an App Password instead.
Setup:
- In your Bluesky account, go to Settings → Privacy and Security → App Passwords → Add App Password
- Name it (e.g. "KronGage") and copy the generated password
Connecting in KronGage:
When adding Bluesky as a channel, enter:
- Service URL:
https://bsky.social(or your custom PDS URL) - Identifier: Your Bluesky handle or email
- Password: The App Password you generated
No OAuth app or credentials in Settings required.
20. Medium
Posts articles and stories using an Integration Token.
- In Medium, go to Settings → Security → Integration tokens
- Generate a new token
- Paste it when adding Medium as a channel in KronGage
21. Dev.to
Posts technical articles using an API Key.
- In Dev.to, go to Settings → Extensions → DEV Community API Keys
- Generate a new key
- Paste it when adding Dev.to as a channel in KronGage
22. Hashnode
Posts technical blog articles using a Personal Access Token.
- In Hashnode, go to Settings → Developer → Access Tokens
- Generate a token
- Paste it when adding Hashnode as a channel in KronGage
Quick Reference: All Redirect URIs
| Platform | Redirect URI |
|---|---|
https://web.krongage.io/postiz/integrations/social/facebook | |
| Instagram Business | https://web.krongage.io/postiz/integrations/social/instagram |
| Instagram Standalone | https://web.krongage.io/postiz/integrations/social/instagram-standalone |
| Threads | https://web.krongage.io/integrations/social/threads ← no /postiz |
| X / Twitter | https://web.krongage.io/integrations/social/x ← no /postiz |
| LinkedIn Personal | https://web.krongage.io/postiz/integrations/social/linkedin |
| LinkedIn Page | https://web.krongage.io/postiz/integrations/social/linkedin-page |
| YouTube | https://web.krongage.io/postiz/integrations/social/youtube |
| Google My Business | https://web.krongage.io/postiz/integrations/social/gmb |
| TikTok | https://web.krongage.io/postiz/integrations/social/tiktok |
https://web.krongage.io/postiz/integrations/social/pinterest | |
https://web.krongage.io/postiz/integrations/social/reddit | |
| Discord | https://web.krongage.io/postiz/integrations/social/discord |
| Slack | https://web.krongage.io/postiz/integrations/social/slack |
| Mastodon | https://web.krongage.io/postiz/integrations/social/mastodon |
| Dribbble | https://web.krongage.io/postiz/integrations/social/dribbble |
| Twitch | https://web.krongage.io/postiz/integrations/social/twitch |
| VK | https://web.krongage.io/postiz/integrations/social/vk |
Multi-Tenancy Checklist
When a new tenant onboards (e.g. acme.krongage.io):
- Tenant admin goes to
web.krongage.io/settings→ Social Publishing API Keys - For each social channel they want to use:
- Create an OAuth app in the provider's developer console
- Register
https://web.krongage.io/postiz/integrations/social/{provider}as the redirect URI - Enter Client ID and Client Secret in KronGage Settings
- For YouTube: add each Google account email as a Test User in the OAuth consent screen (or submit app for Google verification for production use)
- For X: credentials must be configured — there is no global fallback
- Connect channels via Social Publishing → Channels → Add Channel
Updated about 3 hours ago
