curl --request POST \
--url https://api.getoneprofile.ai/linkedin/agent/pair/ \
--header 'Content-Type: application/json' \
--data '
{
"connection_token": "<string>",
"member_urn": "<string>",
"browser_label": "",
"display_name": "",
"extension_version": "",
"headline": "",
"photo_url": "<string>",
"vanity_name": ""
}
'import requests
url = "https://api.getoneprofile.ai/linkedin/agent/pair/"
payload = {
"connection_token": "<string>",
"member_urn": "<string>",
"browser_label": "",
"display_name": "",
"extension_version": "",
"headline": "",
"photo_url": "<string>",
"vanity_name": ""
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
connection_token: '<string>',
member_urn: '<string>',
browser_label: '',
display_name: '',
extension_version: '',
headline: '',
photo_url: '<string>',
vanity_name: ''
})
};
fetch('https://api.getoneprofile.ai/linkedin/agent/pair/', 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.getoneprofile.ai/linkedin/agent/pair/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'connection_token' => '<string>',
'member_urn' => '<string>',
'browser_label' => '',
'display_name' => '',
'extension_version' => '',
'headline' => '',
'photo_url' => '<string>',
'vanity_name' => ''
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/linkedin/agent/pair/"
payload := strings.NewReader("{\n \"connection_token\": \"<string>\",\n \"member_urn\": \"<string>\",\n \"browser_label\": \"\",\n \"display_name\": \"\",\n \"extension_version\": \"\",\n \"headline\": \"\",\n \"photo_url\": \"<string>\",\n \"vanity_name\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
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.getoneprofile.ai/linkedin/agent/pair/")
.header("Content-Type", "application/json")
.body("{\n \"connection_token\": \"<string>\",\n \"member_urn\": \"<string>\",\n \"browser_label\": \"\",\n \"display_name\": \"\",\n \"extension_version\": \"\",\n \"headline\": \"\",\n \"photo_url\": \"<string>\",\n \"vanity_name\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/linkedin/agent/pair/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"connection_token\": \"<string>\",\n \"member_urn\": \"<string>\",\n \"browser_label\": \"\",\n \"display_name\": \"\",\n \"extension_version\": \"\",\n \"headline\": \"\",\n \"photo_url\": \"<string>\",\n \"vanity_name\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_token": "<string>",
"display_name": "<string>",
"member_urn": "<string>",
"paused": true,
"run_mode": "manual",
"sender_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Connect a browser with a sender's connection token
The only unauthenticated route in this package: the connection token a person pasted IS the credential, and the sender it names was fixed server-side when the token was minted, so nothing the extension sends can redirect it. Every browser that connects gets its own agent token; a sender already bound to a LinkedIn member accepts only that member again.
curl --request POST \
--url https://api.getoneprofile.ai/linkedin/agent/pair/ \
--header 'Content-Type: application/json' \
--data '
{
"connection_token": "<string>",
"member_urn": "<string>",
"browser_label": "",
"display_name": "",
"extension_version": "",
"headline": "",
"photo_url": "<string>",
"vanity_name": ""
}
'import requests
url = "https://api.getoneprofile.ai/linkedin/agent/pair/"
payload = {
"connection_token": "<string>",
"member_urn": "<string>",
"browser_label": "",
"display_name": "",
"extension_version": "",
"headline": "",
"photo_url": "<string>",
"vanity_name": ""
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
connection_token: '<string>',
member_urn: '<string>',
browser_label: '',
display_name: '',
extension_version: '',
headline: '',
photo_url: '<string>',
vanity_name: ''
})
};
fetch('https://api.getoneprofile.ai/linkedin/agent/pair/', 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.getoneprofile.ai/linkedin/agent/pair/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'connection_token' => '<string>',
'member_urn' => '<string>',
'browser_label' => '',
'display_name' => '',
'extension_version' => '',
'headline' => '',
'photo_url' => '<string>',
'vanity_name' => ''
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/linkedin/agent/pair/"
payload := strings.NewReader("{\n \"connection_token\": \"<string>\",\n \"member_urn\": \"<string>\",\n \"browser_label\": \"\",\n \"display_name\": \"\",\n \"extension_version\": \"\",\n \"headline\": \"\",\n \"photo_url\": \"<string>\",\n \"vanity_name\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
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.getoneprofile.ai/linkedin/agent/pair/")
.header("Content-Type", "application/json")
.body("{\n \"connection_token\": \"<string>\",\n \"member_urn\": \"<string>\",\n \"browser_label\": \"\",\n \"display_name\": \"\",\n \"extension_version\": \"\",\n \"headline\": \"\",\n \"photo_url\": \"<string>\",\n \"vanity_name\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/linkedin/agent/pair/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"connection_token\": \"<string>\",\n \"member_urn\": \"<string>\",\n \"browser_label\": \"\",\n \"display_name\": \"\",\n \"extension_version\": \"\",\n \"headline\": \"\",\n \"photo_url\": \"<string>\",\n \"vanity_name\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_token": "<string>",
"display_name": "<string>",
"member_urn": "<string>",
"paused": true,
"run_mode": "manual",
"sender_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Body
The pasted connection token plus what the extension read from the live LinkedIn session.
8 - 1283 - 128How the dashboard names this browser, e.g. 'Chrome on macOS'.
128255325001000160Response
Successful Response
Whether the agent waits to be told, or works through the queue on its own.
A newly paired account starts MANUAL on purpose: we never act unattended
on somebody's LinkedIn account before its owner has watched a step run.
manual, auto Was this page helpful?