OAuth Callback URLs
When you create an OAuth app for each platform, the redirect URI must match exactly. The generic pattern is ${BASE_URL}/api/v1/auth/<platform>/callback. Bluesky, Telegram, and Listmonk don't use OAuth and don't need a callback.
The full list
Replace <BASE_URL> with your backend URL (e.g. https://app.sosyabot.com). The path uses the configured API_PREFIX (default /api/v1).
| Platform | Callback URL |
|---|---|
| X (Twitter) — OAuth | <BASE_URL>/api/v1/auth/twitter/callback |
| X (Twitter) — cookie connect | <BASE_URL>/api/v1/auth/twitter/unofficial (POST) |
<BASE_URL>/api/v1/auth/instagram/callback | |
<BASE_URL>/api/v1/auth/facebook/callback | |
<BASE_URL>/api/v1/auth/linkedin/callback | |
| TikTok | <BASE_URL>/api/v1/auth/tiktok/callback |
| Threads | <BASE_URL>/api/v1/auth/threads/callback |
| Mastodon | <BASE_URL>/api/v1/auth/mastodon/callback |
<BASE_URL>/api/v1/auth/pinterest/callback | |
| YouTube | <BASE_URL>/api/v1/auth/youtube/callback |
<BASE_URL>/api/v1/auth/reddit/callback | |
| Discord | <BASE_URL>/api/v1/auth/discord/callback |
| Slack | <BASE_URL>/api/v1/auth/slack/callback |
| Bluesky | none — POST <BASE_URL>/api/v1/social/bluesky/connect |
| Telegram | none — POST <BASE_URL>/api/v1/social/telegram/connect |
| Listmonk | none — POST <BASE_URL>/api/v1/social/listmonk/connect |
Sign-in OAuth (dashboard login, not channel connect)
| Provider | Callback URL |
|---|---|
<BASE_URL>/api/v1/auth/oauth/google/callback | |
| GitHub | <BASE_URL>/api/v1/auth/oauth/github/callback |
Stripe webhook
<BASE_URL>/api/v1/webhooks/billing/stripeSee Stripe Webhook for the event list to subscribe to.
Mastodon — per-instance registration
Mastodon's OAuth model differs: each instance needs its own app registration. Sosyabot calls POST <instance>/api/v1/apps automatically the first time a user connects an account on that instance and stores the resulting credentials in the MastodonApps collection. The redirect URI it registers is the same callback as above.