Connecting someone else’s accounts - an end-customer of your product? Use a Profile connect link: a hosted, single-use page they open with no SmartlyQ login.
1. Connect from the dashboard (all platforms)
The simplest path — and the only one for most platforms — is the Developer Dashboard: open Social Accounts, choose a platform, and complete the OAuth flow. The account immediately becomes available to the API and appears inGET /v1/social/accounts.
2. Headless connect (your own UI)
Every OAuth platform can be connected from your own app — Facebook, Instagram, X (Twitter), LinkedIn, YouTube, TikTok, Threads, Bluesky, Pinterest, Reddit, Snapchat, Tumblr, Google Business, and Discord (its server-webhook authorize flow works the same way) — without sending the user through the SmartlyQ dashboard. Telegram is the one non-OAuth platform - it connects with credentials instead of an authorize link. Call the same endpoint with the bot’s token and target chat in the body, and the account connects immediately (noconnect_url, nothing for the user to open):
201 returns the connected account; failures return typed errors (VALIDATION_ERROR, PROVIDER_NOT_CONFIGURED, LIMIT_REACHED).
1
Request a connect link
Call
POST /v1/social/connect/{platform} with scope social:write. Pass an optional return_url to send the user back to your app afterward.Response (201)
2
Send the user to connect_url
Open
connect_url in a browser (redirect, popup, or new tab). The link is single-use and expires in 15 minutes. The user authorizes on the platform.3
The account connects automatically
When the user approves, the platform’s OAuth callback completes the connection on SmartlyQ’s side and — if you supplied
return_url — redirects the user back to your app with ?connected=<count>&platform=<name>. The new account now shows up in GET /v1/social/accounts. Platforms that expose multiple targets (YouTube channels, Google Business locations, Tumblr blogs, a member’s LinkedIn pages) connect them all automatically — there’s no in-flow picker.4
(Optional) Poll for completion
If your app can’t observe the Returns
return_url redirect (e.g. a server-to-server flow, or the user closed the tab), poll with the state_token from the connect_url:status of pending, connected (with the new account), or expired.Managing connected accounts
Reconnecting an account
Access tokens expire (lifetimes vary by platform — some in hours, some in months). SmartlyQ refreshes them automatically, but if an account’s health turns unhealthy — or you receive anaccount.token_expired webhook — get a reconnect link and send the user through it:

