Documentation Index
Fetch the complete documentation index at: https://info.bundle.social/llms.txt
Use this file to discover all available pages before exploring further.
Some platforms connect one user account first, then require you to pick the exact target for the team. Examples: Facebook Pages, Instagram accounts connected to Facebook Pages, LinkedIn organizations, YouTube channels, and Google Business locations.
Set Channel
Use set-channel after OAuth when a platform needs a selected Page, channel, organization, or location.
Endpoint: POST /api/v1/social-account/set-channel
{
"type": "FACEBOOK",
"teamId": "team_123",
"channelId": "page_123"
}
Use a channelId from socialAccount.channels.
| Field | Required | Description |
|---|
type | Yes | One of FACEBOOK, INSTAGRAM, LINKEDIN, YOUTUBE, GOOGLE_BUSINESS. |
teamId | Yes | Team ID. |
channelId | Yes | ID from socialAccount.channels. |
| Platform | Target |
|---|
| Facebook | Facebook Page |
| Instagram via Facebook | Instagram account connected to a Facebook Page |
| LinkedIn | Member profile or Company Page / organization |
| YouTube | YouTube channel |
| Google Business | Business location |
If you skip set-channel for a platform that requires it, the social account remains connected but has no selected publishing target (externalId is empty). Posts, comments, imports, analytics, and Google Business APIs can fail because bundle.social has no concrete Page/channel/location to act on.
Direct Instagram OAuth (instagramConnectionMethod: "INSTAGRAM") does not support set-channel.
For Facebook and Instagram via Facebook, users should select all Pages and Instagram accounts they manage in the Meta OAuth screen.
Then your UI should show socialAccount.channels and call set-channel with the one Page or Instagram account for the current team.
This avoids Meta overwriting page grants when the same Meta user connects different bundle.social teams with different Pages.
Refresh Channels
Use refresh-channels when socialAccount.channels may be stale.
Endpoint: POST /api/v1/social-account/refresh-channels
{
"type": "PINTEREST",
"teamId": "team_123"
}
| Field | Required | Description |
|---|
type | Yes | One of the supported refresh platforms below. |
teamId | Yes | Team ID. |
| Platform | What gets refreshed |
|---|
| Discord | Available webhook channels |
| Slack | Available webhook channels |
| Reddit | Available subreddits, user destinations, and metadata |
| Pinterest | Boards |
| Facebook | Pages |
| Instagram via Facebook | Instagram accounts connected to Pages |
| LinkedIn | Member profile and organizations |
| YouTube | Channels |
| Google Business | Locations |
Direct Instagram OAuth does not support refresh-channels.
Unset Channel
Use unset-channel when the user picked the wrong target and wants to choose another one without a full reconnect.
Endpoint: POST /api/v1/social-account/unset-channel
{
"type": "FACEBOOK",
"teamId": "team_123"
}
| Field | Required | Description |
|---|
type | Yes | One of FACEBOOK, INSTAGRAM, LINKEDIN, YOUTUBE, GOOGLE_BUSINESS. |
teamId | Yes | Team ID. |
What Happens
- The selected Page, channel, or location is cleared from the social account.
- The OAuth connection stays intact.
- The account is removed from all draft and scheduled posts.
- Posts that only had this account become drafts.
social-account.updated and team.updated webhooks fire.
Switch Flow
- Call
POST /api/v1/social-account/unset-channel.
- Show the current
socialAccount.channels list.
- Call
POST /api/v1/social-account/set-channel with the new target ID.
Unsetting removes the account from all draft and scheduled posts. If a post only had this one account, it becomes a draft.