---
title: "Create a client connect link"
method: POST
path: "/v0/profiles/{id}/connect-link"
tags: ["Client Profiles"]
---

# Create a client connect link

`POST /v0/profiles/{id}/connect-link`

## Request

- Base URL: `https://api.schedulin.app`
- URL: `https://api.schedulin.app/v0/profiles/{id}/connect-link`
- Auth: one of:
  - API key in header `x-api-key`
  - OAuth 2 (authorization code, authorization URL `https://api.schedulin.app/oauth/authorize`, token URL `https://api.schedulin.app/oauth/token`, scopes: `social-accounts:write`)

Returns a hosted link to send your client. They open it, sign in to their social platforms (no Schedulin account needed), and the accounts connect to your organization under this profile, ready to post to via the API. Links expire; create a new one any time. Accounts your client connects count toward your plan's channel limit.

## Path parameters

- `id` string, required: The profile id or the externalId you assigned to it.

## Request body

- object
  - `platforms` string[]: Platform slugs the client may connect (e.g. instagram, tiktok). Omit to offer every platform.
  - `expiresInHours` integer: How long the link works. Defaults to 72 hours, max 7 days.
  - `redirectUrl` string, uri: Where the client's Done button takes them after connecting, e.g. back to your app.

## Response `200`

OK

- object
  - `url` string, required: Hosted page to send your client. No Schedulin login needed.
  - `expiresAt` string, required

## Other responses

- `400`: Bad Request — the request isn't allowed in the resource's current state (e.g. editing a published post).
- `401`: Unauthorized — missing or invalid API key / access token.
- `403`: Forbidden — the credential lacks the required scope or access.
- `404`: Not Found
- `409`: Conflict
- `422`: Unprocessable request. Schema validation failures have `code: "INPUT_VALIDATION_FAILED"` and `data.fieldErrors` mapping each invalid field to its messages (nested issues name their full path, e.g. `media[0].url: ...`). Business-rule rejections (e.g. a `scheduledAt` in the past) have `code: "UNPROCESSABLE_CONTENT"` and carry the reason in `data.message` and `data.formErrors`.
- `429`: Rate limit exceeded. Wait `Retry-After` seconds before retrying.
- `500`: Internal Server Error

---

[API](https://skmtc.dev/schedulin/apis/schedulin-api.md) · [All operations](https://skmtc.dev/schedulin/apis/schedulin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/schedulin/apis/schedulin-api/revisions/17e886f3bcf3?raw)
