# Connect Links (/docs/guides/connect-links)



Overview [#overview]

A **connect link** (called a platform invite in the API) lets someone else connect their social account to **your** profile. You never see their password: they sign in with the platform, and the account lands in the profile you chose. This is how agencies and SaaS products onboard clients.

* **One profile, one platform:** each link is for one profile and one platform.
* **No FeedHorizon account needed:** the link itself is the authorization. The person opening it only signs in with the social platform.
* **Valid 7 days, usable once:** after a successful connection, or after 7 days, the link stops working.
* **All live platforms:** X, LinkedIn, Instagram, Bluesky, Pinterest and TikTok.

Create a link with the API [#create-a-link-with-the-api]

```bash title="cURL"
curl -X POST https://feedhorizon.com/api/v1/platform-invites \
  -H "Authorization: Bearer fh_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "profileId": "prof_…", "platform": "linkedin" }'
```

```json
{
  "data": {
    "id": "inv_…",
    "profileId": "prof_…",
    "platform": "linkedin",
    "expiresAt": "2026-11-12T10:00:00.000Z",
    "createdAt": "2026-11-05T10:00:00.000Z",
    "inviteUrl": "https://feedhorizon.com/connect/invite/…"
  }
}
```

`inviteUrl` is returned only in this response; FeedHorizon stores just a hash of it. Send it to your client by email, chat or inside your own app. Needs the `platform_invites:write` scope.

| Call                                           | What it does                                                 |
| ---------------------------------------------- | ------------------------------------------------------------ |
| `GET /platform-invites?profileId=…&platform=…` | Lists links with their expiry and `usedAt` (without the URL) |
| `DELETE /platform-invites/{id}`                | Revokes a link immediately                                   |

In the MCP server, an assistant creates the same link with `create_connect_link`.

Create a link in the dashboard [#create-a-link-in-the-dashboard]

1. Go to **Dashboard → Connections** and pick the profile.
2. Click **invite** below the platform's connect button.
3. Click **Create link** and copy it.

The same dialog lists existing links for that profile and platform, to copy or revoke.

What your client sees [#what-your-client-sees]

1. They open the link and see *"Connect your \[Platform] to \[Profile name]"*.
2. They click **Continue with \[Platform]** and sign in there. For Bluesky they enter their handle and an [app password](/docs/platforms/bluesky#connecting-an-account) instead.
3. A confirmation page tells them they are done.

The account then shows up in `GET /api/v1/accounts` for that profile, and the `account.connected` webhook is sent.

An expired, used or revoked link shows an error page asking for a new link.
