Invitation Status
curl --request GET \
--url https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitationsimport requests
url = "https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations', 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://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations")
.asString();require 'uri'
require 'net/http'
url = URI("https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyLinkedIn
Invitation Status
See whether invitations sent through OneShot were accepted, and when.
GET
/
v1
/
tools
/
linkedin
/
accounts
/
{id}
/
invitations
Invitation Status
curl --request GET \
--url https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitationsimport requests
url = "https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations', 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://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations")
.asString();require 'uri'
require 'net/http'
url = URI("https://win.oneshotagent.com/v1/tools/linkedin/accounts/{id}/invitations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyFree. Lists the invitations sent through Invite from one connected account, most recently changed first. To read one invitation, add its id:
GET /v1/tools/linkedin/accounts/{id}/invitations/{invitation_id}.
Accepting an invitation on LinkedIn does not create a conversation, so an accept can’t be inferred from Conversations. OneShot reads acceptance from the account’s connections instead, about every 15 minutes while an invitation is pending. An accepted invitation reads accepted with an accepted_at, whether or not a message was ever exchanged.
Query
string
pending, accepted, withdrawn, declined_or_unknown or not_sent.string
ISO 8601 time with an offset. Only invitations whose status changed after it. Use it to poll.
number
1–100. Default 50.
Response
{
"invitations": [
{
"invitation_id": "…",
"account_id": "…",
"status": "accepted",
"profile": "jane-doe",
"sent_at": "2026-10-06T10:00:00.000Z",
"accepted_at": "2026-10-07T19:54:54.000Z",
"updated_at": "2026-10-07T20:05:11.000Z"
}
]
}
status | Meaning |
|---|---|
pending | Queued, or sent and waiting for an answer. |
accepted | The person is now a connection. accepted_at is when they connected, or when OneShot first saw the connection. It is null only when they were already connected when you invited them. |
withdrawn | Withdrawn, or cancelled before it was sent. |
declined_or_unknown | It left the pending list without connecting, or its outcome could not be confirmed. |
not_sent | No invitation went out under this id: the send failed, or an earlier invitation to the same person was reused. |
expired is not reported. Nothing upstream tells an expired invitation from a declined one.
Example
const { invitations } = await agent.linkedinInvitations({ accountId, status: 'accepted', changedSince: lastChecked });
for (const invitation of invitations) {
await agent.linkedinMessage({ accountId, profile: invitation.profile!, text: 'Thanks for connecting.' });
}
const one = await agent.linkedinInvitation({ accountId, invitationId });
console.log(one.status, one.accepted_at);