Create a direct connection link
curl --request POST \
--url https://api.reply.io/v3/linkedin-accounts/connect \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/linkedin-accounts/connect"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/linkedin-accounts/connect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.reply.io/v3/linkedin-accounts/connect",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.reply.io/v3/linkedin-accounts/connect"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.reply.io/v3/linkedin-accounts/connect")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/linkedin-accounts/connect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"connectionLink": "https://app.reply.io/connect/linkedin?token=abc123"
}{
"title": "Bad Request",
"status": 400,
"detail": "Failed to create connection link",
"code": "linkedInAccount.invalidInput"
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Forbidden",
"status": 403,
"detail": "Feature scopes [ManageLinkedInAccount] are denied for userId 123.",
"code": "linkedInAccount.forbidden"
}{
"title": "Conflict",
"status": 409,
"detail": "Maximum number of LinkedIn accounts reached",
"code": "linkedInAccount.limitReached"
}{
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after 60 seconds."
}LinkedIn Accounts
Create a direct connection link
Requires the
channels:write scope (or a broader one that includes it).
Use this endpoint when you need a connection link without deciding the account name up front — the name is captured while the link is being completed. No pending account is created until then. To name the account in advance and track it as pending, use the connection-link endpoint instead.
POST
/
v3
/
linkedin-accounts
/
connect
Create a direct connection link
curl --request POST \
--url https://api.reply.io/v3/linkedin-accounts/connect \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/linkedin-accounts/connect"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/linkedin-accounts/connect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.reply.io/v3/linkedin-accounts/connect",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.reply.io/v3/linkedin-accounts/connect"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.reply.io/v3/linkedin-accounts/connect")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/linkedin-accounts/connect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"connectionLink": "https://app.reply.io/connect/linkedin?token=abc123"
}{
"title": "Bad Request",
"status": 400,
"detail": "Failed to create connection link",
"code": "linkedInAccount.invalidInput"
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Forbidden",
"status": 403,
"detail": "Feature scopes [ManageLinkedInAccount] are denied for userId 123.",
"code": "linkedInAccount.forbidden"
}{
"title": "Conflict",
"status": 409,
"detail": "Maximum number of LinkedIn accounts reached",
"code": "linkedInAccount.limitReached"
}{
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after 60 seconds."
}Authorizations
Authenticate every request with a Bearer token. Pass your Reply API key in the
Authorization header:
Authorization: Bearer <your-api-key>
Get your API key from the Reply dashboard: Settings → API Key.
Response
Direct connection link created successfully
A link for connecting a LinkedIn account via browser extension.
URL to use for connecting the LinkedIn account
⌘I