Docs
Docs/Getting Started/Connecting Accounts

Connecting Accounts

Link your social media platforms to Octopost

Supported platforms

Octopost supports 12 platforms across four different authentication methods. Here is the full list:

PlatformAuth TypeNotes
Twitter/XOAuth 2.0 with PKCEPersonal or business accounts
LinkedInOAuth 2.0Personal profiles and company pages
ThreadsOAuth 2.0 (Meta)Requires Instagram Business/Creator account
InstagramOAuth 2.0 (Facebook)Business or Creator accounts only
FacebookOAuth 2.0Pages only (personal profiles not supported via API)
TikTokOAuth 2.0Creator or Business accounts
YouTubeOAuth 2.0 (Google)Any YouTube channel
BlueskyApp PasswordNo OAuth -- uses AT Protocol sessions
MastodonInstance OAuthVaries per instance
DiscordWebhookChannel-level webhooks
SlackWebhookIncoming webhook integration
TelegramBot TokenVia BotFather

OAuth platforms

Applies to: Twitter, LinkedIn, Threads, Instagram, Facebook, TikTok, YouTube

These platforms all follow the same general flow:

  1. From your Octopost dashboard, click Connect Account and select the platform.
  2. You will be redirected to that platform's authorization page.
  3. Log in (if you are not already) and review the permissions Octopost is requesting. We only ask for what we need -- typically the ability to create posts and read basic profile info.
  4. Click Authorize or Allow.
  5. You will be sent back to Octopost with the account connected and ready to use.

Your access tokens are stored securely and refreshed automatically before they expire. If a token refresh ever fails, Octopost will let you know and ask you to reconnect.

Platform-specific notes

Twitter/X -- Uses PKCE (Proof Key for Code Exchange) for extra security during the OAuth flow. This happens automatically; you do not need to do anything special.

Instagram -- You need a Business or Creator account linked to a Facebook Page. Personal Instagram accounts cannot be connected via the API. If you have a personal account, you can convert it to a Creator account in the Instagram app under Settings > Account > Switch to Professional Account.

Facebook -- Octopost can only post to Facebook Pages, not personal profiles. This is a limitation of Meta's API, not something we can work around. You will select which Page to connect during the OAuth flow.

Threads -- Also requires an Instagram Business or Creator account, since Threads authentication goes through Meta's systems.

TikTok -- Requires a Creator or Business account. Video-only platform, so you will need to attach a video when posting to TikTok.

YouTube -- Standard Google OAuth. You will pick which channel to connect if you have more than one.

App passwords (Bluesky)

Bluesky uses the AT Protocol and does not support OAuth in the traditional sense. Instead, you will use an app password:

  1. Open the Bluesky app or go to bsky.app.
  2. Navigate to Settings > App Passwords.
  3. Click Add App Password and give it a name like "Octopost".
  4. Copy the generated password. You will only see it once.
  5. Back in Octopost, click Connect Account > Bluesky.
  6. Enter your Bluesky handle (e.g., yourname.bsky.social) and paste the app password.
  7. Click Connect. Octopost will create a session and verify everything works.

App passwords are scoped specifically for third-party apps and do not give access to your main account password. You can revoke them at any time from Bluesky settings.

Instance-based OAuth (Mastodon)

Mastodon is decentralized, which means every instance (server) is its own separate thing. The connection flow has one extra step compared to regular OAuth:

  1. Click Connect Account > Mastodon.
  2. Enter your instance URL. This is the domain of your Mastodon server -- for example, mastodon.social, hachyderm.io, or fosstodon.org.
  3. Octopost registers itself with your instance (this happens once per instance, automatically).
  4. You will be redirected to your instance's authorization page.
  5. Log in and approve the connection.
  6. You will be sent back to Octopost with your Mastodon account connected.

We store your instance URL alongside your account, so all API calls go to the right server. Character limits may vary by instance (usually 500, but some instances allow more). Octopost detects your instance's limit automatically.

Webhooks (Discord and Slack)

Discord and Slack use incoming webhooks, which means posts are sent to a specific channel rather than published as your user account.

Discord

  1. In Discord, open the channel you want to post to.
  2. Click the gear icon to open Channel Settings.
  3. Go to Integrations > Webhooks.
  4. Click New Webhook, give it a name (like "Octopost"), and copy the webhook URL.
  5. In Octopost, click Connect Account > Discord and paste the webhook URL.

Slack

  1. Go to api.slack.com/apps and create a new app (or use an existing one).
  2. Under Incoming Webhooks, toggle it on and click Add New Webhook to Workspace.
  3. Pick the channel you want to post to and authorize.
  4. Copy the webhook URL.
  5. In Octopost, click Connect Account > Slack and paste the webhook URL.

Bot token (Telegram)

Telegram uses bot tokens to post messages to channels or groups:

  1. Open Telegram and search for @BotFather.
  2. Send /newbot and follow the prompts to create a bot.
  3. BotFather will give you a bot token. Copy it.
  4. Add your bot to the Telegram channel or group where you want to post, and make it an admin with permission to post messages.
  5. In Octopost, click Connect Account > Telegram, paste the bot token, and enter the chat ID or channel username.

Troubleshooting

"Authorization failed" or redirect errors

  • Make sure you are logged into the correct account on the platform before starting the OAuth flow.
  • Check that third-party app access is not disabled in your platform's security settings.
  • Try clearing your browser cookies for that platform and starting over.
  • If you are using a company account, your organization may have restricted third-party app connections.

Bluesky connection fails

  • Double-check your handle. It should include the full domain (e.g., yourname.bsky.social, not just yourname).
  • Make sure you are using an app password, not your main account password.
  • If you just created the app password, give it a few seconds before trying to connect.

Mastodon instance not recognized

  • Make sure you are entering just the domain (e.g., mastodon.social), not a full URL with https:// or a trailing slash.
  • Some very small or private instances may have API access restricted. Check with your instance admin.

Token expired or account disconnected

  • OAuth tokens expire over time. Octopost refreshes them automatically, but occasionally a refresh will fail (usually because you changed your password or revoked access on the platform side).
  • If you see a warning that an account needs to be reconnected, just click through the connection flow again. Your posts and history are preserved.

Instagram says "Business account required"

  • Instagram's API only works with Business or Creator accounts, not personal ones.
  • Open Instagram, go to Settings > Account > Switch to Professional Account, and choose Creator or Business.
  • You will also need a Facebook Page linked to your Instagram account. Instagram will walk you through this during the switch.

Facebook says "Page access required"

  • Meta's API does not allow posting to personal Facebook profiles. You can only post to Pages you manage.
  • During the OAuth flow, make sure you select the Page you want to post to when prompted.