curl -X POST https://api.linkupapi.com/v2/accounts/connect-link \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["linkedin", "email"],
"name": "user_12345",
"country": "FR",
"success_url": "https://yourapp.com/linkedin/connected",
"notify_url": "https://yourapp.com/webhooks/linkup"
}'
import requests
r = requests.post(
"https://api.linkupapi.com/v2/accounts/connect-link",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"platforms": ["linkedin", "email"],
"name": "user_12345",
"country": "FR",
"success_url": "https://yourapp.com/linkedin/connected",
"notify_url": "https://yourapp.com/webhooks/linkup",
},
)
print(r.json()["data"]["url"])
{
"success": true,
"data": {
"link_id": "6ad01a9b2e999f4a3534d001",
"url": "https://app.linkupapi.com/connect/K3sX9...",
"expires_at": "2026-10-14T16:00:00Z",
"platforms": ["linkedin", "email"],
"name": "user_12345",
"reconnect": null
},
"metadata": {
"action": "connect_link",
"credits_consumed": 0
}
}
Accounts
Hosted Connection Link
Let your users connect their LinkedIn, WhatsApp or email account on a page hosted by LinkupAPI, so their credentials never reach your servers
POST
/
v2
/
accounts
/
connect-link
curl -X POST https://api.linkupapi.com/v2/accounts/connect-link \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["linkedin", "email"],
"name": "user_12345",
"country": "FR",
"success_url": "https://yourapp.com/linkedin/connected",
"notify_url": "https://yourapp.com/webhooks/linkup"
}'
import requests
r = requests.post(
"https://api.linkupapi.com/v2/accounts/connect-link",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"platforms": ["linkedin", "email"],
"name": "user_12345",
"country": "FR",
"success_url": "https://yourapp.com/linkedin/connected",
"notify_url": "https://yourapp.com/webhooks/linkup",
},
)
print(r.json()["data"]["url"])
{
"success": true,
"data": {
"link_id": "6ad01a9b2e999f4a3534d001",
"url": "https://app.linkupapi.com/connect/K3sX9...",
"expires_at": "2026-10-14T16:00:00Z",
"platforms": ["linkedin", "email"],
"name": "user_12345",
"reconnect": null
},
"metadata": {
"action": "connect_link",
"credits_consumed": 0
}
}
Generate a single-use link and hand it to your user. They connect their account on
Flow
app.linkupapi.com (LinkedIn sign-in and 2FA, WhatsApp QR or pairing code, Google / Microsoft consent or SMTP settings), and you only receive the resulting account_id. Your app never sees or handles the credentials.
The link itself is free. A LinkedIn login through it costs 1 credit, like Connect Account; WhatsApp and email are free. Ignore this if you’re on per-seat pricing.
- Your backend calls this endpoint and gets a
url. - Your app sends the user to that
url(full redirect or new tab, never an iframe). - The user picks a channel (if you offered several) and connects it on our page, verification included.
- We POST the outcome to your
notify_urland send the user to yoursuccess_url. You can also poll Get Connection Link or List Accounts.
Header Parameters
string
required
Your API key
Body Parameters
string | string[]
default:"*"
Channels the page offers:
linkedin, whatsapp, email, or * for all. With a single value the page skips the chooser. platform works as a shorthand for one value.string
Your own reference for this user (max 200 characters), echoed in the
notify_url payload so you can match the new account to your user.integer
default:"3600"
Link lifetime in seconds, from 60 to 604800 (7 days).
string
LinkedIn and WhatsApp: lock the proxy country (same codes as Connect Account). Omit to let the user pick it on the page.
string
Reconnect an existing account instead of creating one. The page only offers that account’s channel and pre-fills its email; the account keeps its id, its country and its webhooks.
string
Display name of the account once connected. Defaults to the email.
string
Where to send the user once the account is connected. Omit to show our confirmation screen.
string
Where to send the user if they open the link after it expired or was used.
Response
string
Id of the link, for Get Connection Link.
string
The page to send your user to.
string
ISO 8601 UTC expiry of the link.
Callback
When the account is connected we POST this JSON tonotify_url, with a X-Linkup-Link-Id header. We retry twice (after 5 s and 30 s) if your endpoint doesn’t answer 2xx.
{
"status": "CREATION_SUCCESS",
"account_id": "6acf60d12e999f4a3534cfcb",
"platform": "linkedin",
"name": "user_12345",
"link_id": "6ad01a9b2e999f4a3534d001"
}
status is RECONNECTED when the link was created with an account_id. The callback is not signed: confirm it with Get Account before trusting it.
Get Connection Link
GET /v2/accounts/connect-link/{link_id} returns the link’s status (pending, checkpoint while the user is completing a verification, used, expired), the platform chosen, its account_id once connected, and notified when a notify_url was set.
curl -X POST https://api.linkupapi.com/v2/accounts/connect-link \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["linkedin", "email"],
"name": "user_12345",
"country": "FR",
"success_url": "https://yourapp.com/linkedin/connected",
"notify_url": "https://yourapp.com/webhooks/linkup"
}'
import requests
r = requests.post(
"https://api.linkupapi.com/v2/accounts/connect-link",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"platforms": ["linkedin", "email"],
"name": "user_12345",
"country": "FR",
"success_url": "https://yourapp.com/linkedin/connected",
"notify_url": "https://yourapp.com/webhooks/linkup",
},
)
print(r.json()["data"]["url"])
{
"success": true,
"data": {
"link_id": "6ad01a9b2e999f4a3534d001",
"url": "https://app.linkupapi.com/connect/K3sX9...",
"expires_at": "2026-10-14T16:00:00Z",
"platforms": ["linkedin", "email"],
"name": "user_12345",
"reconnect": null
},
"metadata": {
"action": "connect_link",
"credits_consumed": 0
}
}
Was this page helpful?