---
title: "Start Connect"
method: POST
path: "/api/v1/accounts/start-connect"
tags: ["accounts"]
---

# Start Connect

`POST /api/v1/accounts/start-connect`

## Request

- Base URL: `https://api.nudgelink.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nudgelink.co/api/v1/accounts/start-connect`
- Auth: HTTP bearer

P1.1 — kick off self-serve LinkedIn connect via Unipile hosted auth.

Returns a one-time URL the customer should be redirected to. They log
into LinkedIn on Unipile-hosted pages (Unipile handles credential
capture, 2FA, proxy assignment). On success Unipile webhooks our
``POST /api/v1/webhooks/unipile/account-connected`` handler with the
new ``account_id``; we then create the LinkedInAccount row.

The customer never sees Tim, Tim never touches the credentials.

## Request body

- StartConnectRequest: Activation P0 (spec §4.2): strict origin-context enum. The wizard and the Accounts page share hosted auth, but the callback pages need to know where to send the user back. A closed enum — never an arbitrary URL — so no open redirect can be injected.
  - `return_to` 'wizard' | 'accounts'
  - `timezone` string, nullable

## Response `200`

Successful Response

- StartConnectResponse
  - `url` string, required
  - `expires_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

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