> ## Documentation Index
> Fetch the complete documentation index at: https://docs.postsider.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Social Media Channels: X, LinkedIn, Instagram & More

> Connect X, LinkedIn, Facebook, Instagram, YouTube, TikTok, and Bluesky to Volta. Each platform includes setup steps, required credentials, and post limits.

Volta supports the full spectrum of social media platforms — from short-form text on X and Bluesky to video-first platforms like YouTube and TikTok. Each platform has its own connection method, content limits, and media requirements. Use the sections below to set up each channel you want to publish to.

<Note>
  For platforms that require OAuth app credentials (X, LinkedIn, Facebook, etc.), you can enter your Client ID and Secret directly in the **Add Channel** popup inside Volta. You don't need to edit your `.env` file manually — credentials entered through the UI are stored securely and used automatically.
</Note>

## Platforms

<AccordionGroup>
  <Accordion title="X (Twitter)">
    **Connection method:** OAuth 1.0a

    **Required credentials:**

    | Variable       | Description                  |
    | -------------- | ---------------------------- |
    | `X_API_KEY`    | API Key (Consumer Key)       |
    | `X_API_SECRET` | API Secret (Consumer Secret) |

    **How to connect:**

    <Steps>
      <Step title="Create an X Developer app">
        Go to [developer.x.com](https://developer.x.com) and create a project with an app. Enable **OAuth 1.0a** with **Read and Write** permissions.
      </Step>

      <Step title="Set your callback URL">
        In your app's settings, add the following as the callback URL:

        ```
        https://your-volta-domain.com/integrations/social/x
        ```
      </Step>

      <Step title="Copy your credentials">
        Copy the **API Key** and **API Secret** from the app dashboard.
      </Step>

      <Step title="Add the channel in Volta">
        Go to **Channels → Add Channel → X** and enter your API Key and API Secret, or click **Sign in with X** if credentials are already configured on your instance.
      </Step>
    </Steps>

    **Limits and notes:**

    * Rate limit: 300 posts per 3 hours
    * Media: max 4 photos **or** 1 video per post
    * X uses OAuth 1.0a (not 2.0)
    * You can set `STRIP_LINKS_FROM_X_POSTS=true` in your `.env` to automatically strip links from post text
  </Accordion>

  <Accordion title="LinkedIn (Personal Profile)">
    **Connection method:** OAuth 2.0

    **Required credentials:**

    | Variable                 | Description   |
    | ------------------------ | ------------- |
    | `LINKEDIN_CLIENT_ID`     | Client ID     |
    | `LINKEDIN_CLIENT_SECRET` | Client Secret |

    **How to connect:**

    <Steps>
      <Step title="Create a LinkedIn Developer app">
        Go to [linkedin.com/developers](https://www.linkedin.com/developers/) and create an application.
      </Step>

      <Step title="Add required products">
        Under the **Products** tab, add:

        * **Share on LinkedIn**
        * **Sign In with LinkedIn using OpenID Connect**
      </Step>

      <Step title="Add your redirect URL">
        Under the **Auth** tab, add:

        ```
        https://your-volta-domain.com/integrations/social/linkedin
        ```
      </Step>

      <Step title="Copy your credentials and connect">
        Copy the **Client ID** and **Client Secret**, then enter them in the Add Channel popup in Volta.
      </Step>
    </Steps>

    **Required OAuth scopes:** `openid`, `profile`, `email`, `w_member_social`

    **Limits and notes:**

    * Max 1 video **or** a carousel (minimum 2 images) per post
    * The same Client ID and Secret are used for LinkedIn Pages (see below)
  </Accordion>

  <Accordion title="LinkedIn (Company Page)">
    **Connection method:** OAuth 2.0

    LinkedIn Pages use the **same credentials** as your LinkedIn personal profile app (`LINKEDIN_CLIENT_ID` / `LINKEDIN_CLIENT_SECRET`). You just need to add an additional redirect URL and enable one extra scope.

    **Additional redirect URL to add:**

    ```
    https://your-volta-domain.com/integrations/social/linkedin-page
    ```

    **Additional required scopes:** `w_organization_social`, `r_organization_social`

    **Optional product to add:** **Community Management API** (required for posting to pages in some regions)

    Once your LinkedIn app is configured with the page scopes, connect your LinkedIn Page from **Channels → Add Channel → LinkedIn Page**.
  </Accordion>

  <Accordion title="Facebook (Page)">
    **Connection method:** OAuth 2.0

    **Required credentials:**

    | Variable              | Description |
    | --------------------- | ----------- |
    | `FACEBOOK_APP_ID`     | App ID      |
    | `FACEBOOK_APP_SECRET` | App Secret  |

    **How to connect:**

    <Steps>
      <Step title="Create a Facebook Developer app">
        Go to [developers.facebook.com](https://developers.facebook.com/) and create an app of type **Business**.
      </Step>

      <Step title="Add Facebook Login for Business">
        Add the **Facebook Login for Business** product to your app.
      </Step>

      <Step title="Add your redirect URL">
        Under **Settings → Valid OAuth Redirect URIs**, add:

        ```
        https://your-volta-domain.com/integrations/social/facebook
        ```
      </Step>

      <Step title="Request required permissions">
        Via App Review, ensure your app has: `pages_show_list`, `business_management`, `pages_manage_posts`, `pages_read_engagement`, `pages_manage_engagement`
      </Step>

      <Step title="Connect in Volta">
        Enter your App ID and App Secret in the Add Channel popup, then authorize through Facebook.
      </Step>
    </Steps>

    **Limits and notes:**

    * Posts can include text, photos, or video
    * Stories require at least 1 media attachment
  </Accordion>

  <Accordion title="Instagram (Business)">
    **Connection method:** OAuth 2.0 via Facebook

    Instagram Business uses the **same credentials** as your Facebook app (`FACEBOOK_APP_ID` / `FACEBOOK_APP_SECRET`).

    **Additional redirect URL to add:**

    ```
    https://your-volta-domain.com/integrations/social/instagram
    ```

    **Required scopes:** `instagram_basic`, `pages_show_list`, `pages_read_engagement`, `business_management`, `instagram_content_publish`, `instagram_manage_comments`, `instagram_manage_insights`

    **Requirements:**

    * Your Instagram account must be a **Business** account
    * The Instagram account must be linked to a Facebook Page
    * Carousel posts: max 10 media items
    * Aspect ratio: 4:5 to 1.91:1

    Connect from **Channels → Add Channel → Instagram**.
  </Accordion>

  <Accordion title="Instagram (Standalone)">
    **Connection method:** OAuth 2.0 via Facebook

    Instagram Standalone uses the same Facebook credentials as Instagram Business. This option supports Instagram accounts that are **not** connected to a Facebook Business Manager or Page.

    Configure your Facebook app with the Instagram Standalone redirect URL:

    ```
    https://your-volta-domain.com/integrations/social/instagram
    ```

    Connect from **Channels → Add Channel → Instagram Standalone**.
  </Accordion>

  <Accordion title="YouTube">
    **Connection method:** OAuth 2.0 via Google

    **Required credentials:**

    | Variable                | Description         |
    | ----------------------- | ------------------- |
    | `YOUTUBE_CLIENT_ID`     | OAuth 2.0 Client ID |
    | `YOUTUBE_CLIENT_SECRET` | Client Secret       |

    **How to connect:**

    <Steps>
      <Step title="Create a Google Cloud project">
        Go to [console.cloud.google.com](https://console.cloud.google.com/), create a project, and enable the **YouTube Data API v3**.
      </Step>

      <Step title="Create OAuth credentials">
        Under **APIs & Services → Credentials**, create an **OAuth 2.0 Client ID** of type **Web application**.
      </Step>

      <Step title="Add your redirect URL">
        Add the following as an authorized redirect URI:

        ```
        https://your-volta-domain.com/integrations/social/youtube
        ```
      </Step>

      <Step title="Connect in Volta">
        Enter your Client ID and Secret in the Add Channel popup and authenticate with your Google account.
      </Step>
    </Steps>

    **Required scopes:** `userinfo.profile`, `userinfo.email`, `youtube`, `youtube.force-ssl`, `youtube.readonly`, `youtube.upload`, `youtubepartner`, `yt-analytics.readonly`

    **Limits and notes:**

    * Each post **must** include a video — text-only posts are not supported
    * YouTube enforces daily upload quota limits on the API
    * Google also uses these credentials for [Google My Business](/channels/blogging) and Gmail — no separate app needed
  </Accordion>

  <Accordion title="TikTok">
    **Connection method:** OAuth 2.0

    **Required credentials:**

    | Variable               | Description   |
    | ---------------------- | ------------- |
    | `TIKTOK_CLIENT_ID`     | Client Key    |
    | `TIKTOK_CLIENT_SECRET` | Client Secret |

    **How to connect:**

    <Steps>
      <Step title="Create a TikTok Developer app">
        Go to [developers.tiktok.com](https://developers.tiktok.com/) and create a new application.
      </Step>

      <Step title="Add required products">
        Add **Login Kit** and **Content Posting API** to your app.
      </Step>

      <Step title="Add your redirect URL">
        ```
        https://your-volta-domain.com/integrations/social/tiktok
        ```
      </Step>

      <Step title="Submit for audit">
        TikTok requires an app audit before you can post publicly. Submit your app for review.
      </Step>

      <Step title="Connect in Volta">
        Enter your Client Key and Client Secret and authenticate with TikTok.
      </Step>
    </Steps>

    **Required scopes:** `video.list`, `user.info.basic`, `video.publish`, `video.upload`, `user.info.profile`, `user.info.stats`

    **Limits and notes:**

    * Each post must include at least 1 video **or** 1+ photos
    * Videos must be at least 720p resolution
    * Public posting requires TikTok app audit approval
  </Accordion>

  <Accordion title="Threads">
    **Connection method:** OAuth 2.0 via Meta

    **Required credentials:**

    | Variable             | Description |
    | -------------------- | ----------- |
    | `THREADS_APP_ID`     | App ID      |
    | `THREADS_APP_SECRET` | App Secret  |

    **How to connect:**

    <Steps>
      <Step title="Add the Threads API product">
        In your [Facebook Developer app](https://developers.facebook.com/), add the **Threads API** product.
      </Step>

      <Step title="Add your redirect URL">
        ```
        https://your-volta-domain.com/integrations/social/threads
        ```
      </Step>

      <Step title="Connect in Volta">
        Enter your App ID and App Secret in the Add Channel popup.
      </Step>
    </Steps>

    **Required scopes:** `threads_basic`, `threads_content_publish`, `threads_manage_replies`, `threads_manage_insights`

    **Notes:**

    * Threads access tokens are automatically refreshed every 58 days
  </Accordion>

  <Accordion title="Bluesky">
    **Connection method:** Direct credentials — no OAuth app setup needed

    Bluesky doesn't require you to register an OAuth app. You connect by entering your credentials directly in Volta.

    **How to connect:**

    <Steps>
      <Step title="Create a Bluesky App Password">
        Go to [bsky.app/settings/app-passwords](https://bsky.app/settings/app-passwords) and generate a new App Password. This is separate from your main account password.
      </Step>

      <Step title="Add the channel in Volta">
        Go to **Channels → Add Channel → Bluesky** and enter:

        * **Service URL** — your Bluesky instance URL (default: `https://bsky.social`)
        * **Handle** — your Bluesky handle or email
        * **App Password** — the password you just generated
      </Step>
    </Steps>

    **Limits and notes:**

    * Max 300 characters per post
    * Max 4 photos **or** 1 video per post
    * 2FA must be disabled on your Bluesky account when using an App Password
  </Accordion>

  <Accordion title="Mastodon">
    **Connection method:** OAuth 2.0

    **Required credentials:**

    | Variable                 | Description                                                 |
    | ------------------------ | ----------------------------------------------------------- |
    | `MASTODON_URL`           | Your Mastodon instance URL (e.g. `https://mastodon.social`) |
    | `MASTODON_CLIENT_ID`     | Client ID from your instance                                |
    | `MASTODON_CLIENT_SECRET` | Client Secret from your instance                            |

    **How to connect:**

    <Steps>
      <Step title="Create a Mastodon application">
        On your Mastodon instance, go to **Settings → Development → New Application**. Set the redirect URI to:

        ```
        https://your-volta-domain.com/integrations/social/mastodon
        ```

        Required scopes: `write:statuses`, `profile`, `write:media`
      </Step>

      <Step title="Copy your credentials">
        Copy the **Client ID** and **Client Secret** from the application settings.
      </Step>

      <Step title="Connect in Volta">
        Enter the instance URL, Client ID, and Client Secret in the Add Channel popup.
      </Step>
    </Steps>

    **Limits and notes:**

    * Max 500 characters per post
    * Access tokens never expire
  </Accordion>

  <Accordion title="Reddit">
    **Connection method:** OAuth 2.0

    **Required credentials:**

    | Variable               | Description |
    | ---------------------- | ----------- |
    | `REDDIT_CLIENT_ID`     | App ID      |
    | `REDDIT_CLIENT_SECRET` | App Secret  |

    **How to connect:**

    <Steps>
      <Step title="Create a Reddit app">
        Go to [reddit.com/prefs/apps](https://www.reddit.com/prefs/apps) and create a new app of type **web app**. Set the redirect URI to:

        ```
        https://your-volta-domain.com/integrations/social/reddit
        ```
      </Step>

      <Step title="Connect in Volta">
        Enter your App ID and App Secret and authenticate with Reddit.
      </Step>
    </Steps>

    **Required scopes:** `read`, `identity`, `submit`, `flair`

    **Notes:**

    * Reddit enforces a strict rate limit of 1 request per second
    * Supports posts with text, media, and links
  </Accordion>

  <Accordion title="Pinterest">
    **Connection method:** OAuth 2.0

    **Required credentials:**

    | Variable                  | Description |
    | ------------------------- | ----------- |
    | `PINTEREST_CLIENT_ID`     | App ID      |
    | `PINTEREST_CLIENT_SECRET` | App Secret  |

    **How to connect:**

    <Steps>
      <Step title="Create a Pinterest Developer app">
        Go to [developers.pinterest.com](https://developers.pinterest.com/) and create a new application. Set the redirect URI to:

        ```
        https://your-volta-domain.com/integrations/social/pinterest
        ```
      </Step>

      <Step title="Connect in Volta">
        Enter your App ID and App Secret and authenticate with Pinterest.
      </Step>
    </Steps>

    **Required scopes:** `boards:read`, `boards:write`, `pins:read`, `pins:write`, `user_accounts:read`

    **Limits and notes:**

    * Every post **must** include at least 1 media item
    * Max 5 photos **or** 1 video (video posts require a cover image as a second attachment)
  </Accordion>

  <Accordion title="VK (VKontakte)">
    **Connection method:** OAuth 2.0 with PKCE

    **Required credentials:**

    | Variable | Description |
    | -------- | ----------- |
    | `VK_ID`  | App ID      |

    **How to connect:**

    <Steps>
      <Step title="Create a VK standalone app">
        Go to [vk.com/editapp?act=create](https://vk.com/editapp?act=create) and create a **standalone** application. In settings, enable **Open API** and set the redirect URI to:

        ```
        https://your-volta-domain.com/integrations/social/vk
        ```
      </Step>

      <Step title="Connect in Volta">
        Enter your App ID in the Add Channel popup and authenticate with VK.
      </Step>
    </Steps>

    **Required scopes:** `vkid.personal_info`, `email`, `wall`, `status`, `docs`, `photos`, `video`

    **Limits and notes:**

    * Max 2,048 characters per post
    * Supports photos and video
    * Uses PKCE (S256) for the OAuth flow
  </Accordion>

  <Accordion title="Farcaster (via Neynar)">
    **Connection method:** OAuth 2.0 via Neynar

    Volta connects to Farcaster through [Neynar](https://neynar.com/), a Farcaster API provider.

    **Required credentials:**

    | Variable            | Description      |
    | ------------------- | ---------------- |
    | `NEYNAR_SECRET_KEY` | Neynar API Key   |
    | `NEYNAR_CLIENT_ID`  | Neynar Client ID |

    **How to connect:**

    <Steps>
      <Step title="Create a Neynar account">
        Go to [neynar.com](https://neynar.com/) and create an account and project.
      </Step>

      <Step title="Copy your credentials">
        Copy your **API Key** and **Client ID** from the Neynar dashboard.
      </Step>

      <Step title="Connect in Volta">
        Enter the credentials in the Add Channel popup. Users authenticate through the Neynar Sign-in popup.
      </Step>
    </Steps>

    **Limits and notes:**

    * Max 800 characters per post
    * Supports photos only (no video)
  </Accordion>
</AccordionGroup>
