Skip to content

Connect links

A connect link is an expiring URL into the hosted connect page for one workspace. You create it from your backend, redirect the user to it, and the accounts they pick appear in the workspace. It can be opened more than once until it expires, so a user who backs out of the consent screen can simply try again. You never touch the OAuth flow yourself.

POST /v1/workspaces/:id/connect-links

Field Type Default Notes
networks string[] ["facebook", "instagram"] Which networks the page offers. Both share one Meta consent; Instagram accounts come in through the Page they are linked to.
redirect_url string none Where the Back to button returns the user. ?connected=<n> is appended with the number of accounts connected in this session.
expires_in number 3600 Seconds until the link stops working. Minimum 300, maximum 604800 (7 days). The link stays usable, more than once, until then.
Terminal window
curl -X POST https://social.missless.tel/v1/workspaces/ws7k2m9p4q1r8t3/connect-links \
-H "Authorization: Bearer $MISSLESS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "networks": ["facebook", "instagram"], "redirect_url": "https://app.example.com/settings/social", "expires_in": 3600 }'

Response 201:

{
"token": "ct7f3a9c1e5b2d8f4a6c0e",
"url": "https://social.missless.tel/connect/ct7f3a9c1e5b2d8f4a6c0e",
"expires_at": "2026-08-25T10:12:04Z"
}

Redirect the user to url. Create the link when the user clicks Connect, not at page load, so it is fresh and belongs to the person in front of it. A link is tied to one workspace; never reuse one across customers.

  1. The connect page. A page hosted at social.missless.tel/connect/<token> with the workspace name and one button, Continue with Facebook. Accounts already connected to this workspace are listed underneath, each with a Disconnect action.
  2. Meta’s consent. The user signs in to Facebook if needed, sees the permissions being asked for, and picks which Pages and Instagram accounts to grant. They can pick a subset.
  3. Back on the connect page. The chosen Pages and their linked Instagram accounts are now listed with avatar, name and a network badge. Each one is an account in the workspace and each fires account.connected.
  4. Back to you. If you gave a redirect_url, a Back to button carrying your partner name takes them there with ?connected=2 appended. Without one, the page tells them they can close the tab.

The page works on mobile and shows nothing of yours except the partner name. Your API key never leaves your backend.

Send the user through a new connect link at any time. Accounts already connected stay connected; newly granted ones are added. To recover an expired or revoked account, the user goes through a link again and grants the same Page. The account record is updated in place and keeps its id.

Use both:

  • Listen for account.connected on your webhook. The payload carries the account object and the workspace’s external_id.
  • When the user lands on redirect_url, call GET /v1/workspaces/:id/accounts and refresh your UI. ?connected=<n> tells you whether anything changed; 0 means they backed out.

The hosted page talks to three token-authenticated endpoints that need no API key: GET /v1/connect/:token, GET /v1/connect/:token/meta/start (302 to Meta) and DELETE /v1/connect/:token/accounts/:accountId. Meta returns to GET /v1/oauth/meta/callback. They are rate limited per IP and listed here so you recognise them in logs. Do not build on them; use the API and the widget.

If you would rather show the account list inside your own UI, embed the widget’s accounts surface. It has the same Connect button. See the Widget overview.