List and connect
List and connect social accounts through the DunSocial API, and start OAuth flows for new platforms. List responses never expose OAuth access tokens.
Social account routes need Bearer + X-Workspace-Id. List responses never include OAuth access tokens.
List accounts
GET /api/social-accounts
Also available as GET /api/workspaces/:id/social-accounts.
Each item includes id, provider, username / display name, avatar, expiry, and safe metadata.
Disconnect
DELETE /api/social-accounts/:id
Admins and owners only. Members get 403.
Start OAuth
GET /api/social-accounts/oauth/:provider
Providers: x, linkedin, linkedin-business, threads, youtube, pinterest, instagram, reddit, tiktok, facebook. Facebook Pages are limited beta — connect the Page in the DunSocial app (OAuth starts there, same as every other provider).
Returns { redirect } with the provider authorize URL. Pass ?redirect=1 to receive an HTTP 302 instead. Admins and owners only.
Pinterest alias: GET /api/social-accounts/oauth/pinterest/start.
Reddit eligibility helper (permissions only): GET /api/social-accounts/oauth/reddit/eligibility.
OAuth callbacks are browser redirects handled by DunSocial. You do not call them from your integration.
Bluesky (app password)
POST /api/social-accounts/connect/bluesky
{
"handle": "you.bsky.social",
"appPassword": "xxxx-xxxx-xxxx-xxxx"
}Returns { socialAccountId, profile }.
Helpers: GET /api/social-accounts/bluesky/profile, POST .../bluesky/profile/refresh with { "socialAccountId": "..." }.
Composer helpers
Useful read-only helpers while composing:
| Path | Purpose |
|---|---|
GET .../pinterest/boards |
Boards for a Pinterest account |
POST .../pinterest/boards |
Create a board (name, optional privacy: PUBLIC or SECRET). Default is public. |
GET .../reddit/flair-options?subreddit= |
Flair options |
GET .../reddit/post-requirements |
Subreddit rules summary |
GET .../x/heatmap |
Best-time heatmap data |
Prefer /api/posts/* for publishing rather than any platform-specific publish shortcuts.