API reference
Get LinkedIn status
Where the LinkedIn outreach of the user behind this key stands: is LinkedIn connected (and if not, what to ask the user), a pause, today's limits, and their LinkedIn campaigns with how many people are in each state. Call it before a first sequence. mySDR does the LinkedIn part of your outreach: you pick the people and write every text, mySDR sends it from the user's own LinkedIn account within their working hours and the SafeOutreach limits, notices accepted invites and replies, and stops a person's sequence when they reply. These routes are the tools start_linkedin_sequence, get_outreach_status, get_outreach_events and stop_linkedin_sequence of the assistant server; your own emails you log with POST /outreach/activity. Free: no credits.
The LinkedIn connection. LinkedIn steps go out from the user’s own LinkedIn account: the one connected by the mySDR user who created your key or clicked Allow. Only that user can connect it, in mySDR under Settings → LinkedIn (https://mysdr.app/en/settings?tab=linkedin): they click Connect LinkedIn and sign in to LinkedIn once, in a secure sign-in window (LinkedIn may ask them for a verification code; mySDR never sees their password). You cannot do this for them: there is no API for it, and never ask for their LinkedIn password, code or cookies. linkedin_connected in the outreach status says whether it is done; a connection that stopped working is reconnected on the same page.
Authentication
Send Authorization: Bearer gtk_…. Create the key under Connect assistant → API keys. Every gtk_ key can call these routes, also while the Signals API is closed. A missing, invalid or revoked key is 401.
Response
objectstring· required — Alwayslinkedin_outreach. One of:linkedin_outreach.linkedin_connectedboolean· required — The user behind this key has a working LinkedIn connection.connect_linkedinstring | null· required — Without a connection: what to ask the user, with the link. Null when connected.connect_urlstring· required — The page in mySDR where the user connects or reconnects LinkedIn (Settings → LinkedIn).pausedobject | null· required — A pause on the organization or the account:reasonanduntil(null = until someone lifts it). Nothing goes out meanwhile, except when an invite limit is full: then only invites and new sequences wait, and messages, InMails and withdrawals in sequences that already started keep going (reasonsays which).warmupstring | null· required — The warm-up of the LinkedIn account, in a sentence: before the user’s first LinkedIn campaign, that the first one starts a warm-up (the limits drop and grow back day by day); while it runs, how far it is and until when. Null when there is none.limitsobject· required —invites_today,invites_per_day,invites_last_7_days,invites_per_7_days(invites with a note),invites_per_7_days_without_note(a stricter weekly limit),new_sequences_today,new_sequences_per_day.campaignsobject[]· required — The user's recent LinkedIn campaigns, newest first:id,name,status,created_at,people,states(a count per state:scheduled(the first step goes out within working hours and the limits),invited,connected,messaged,replied(the sequence stopped),not_accepted(withdrawn or declined: LinkedIn is done, email may take over),stopped,needs_attention(paused or failed) andfinished.),last_activity_atanddashboard_url.dashboard_urlstring· required — The Leads table in mySDR on everyone with outreach.
Credits
Free. This call never uses credits.
Errors
- 409
invalid_state— The key has no user behind it, so there is no LinkedIn account to send from. - 401
authentication_error— The Authorization header is missing, or the key is unknown or revoked. - 403
permission_error— API access is not part of your plan, or your account is suspended. - 429
rate_limit_error— More than 60 requests per minute, or more than 3 at the same time, on one key. Wait for the Retry-After header. - 503
service_unavailable— The API is temporarily unavailable. Retry later. - 500
internal_error— Something went wrong on our side.
Example
cURL
curl "https://mysdr.app/api/v1/outreach/linkedin" \
-H "Authorization: Bearer $MYSDR_API_KEY"
JavaScript
const response = await fetch('https://mysdr.app/api/v1/outreach/linkedin', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.MYSDR_API_KEY}`
}
});
const body = await response.json();
Python
import json
import os
import urllib.request
request = urllib.request.Request(
"https://mysdr.app/api/v1/outreach/linkedin",
headers={
"Authorization": f"Bearer {os.environ['MYSDR_API_KEY']}"
},
method="GET",
)
with urllib.request.urlopen(request) as response:
body = json.load(response)
Example response
{
"object": "linkedin_outreach",
"linkedin_connected": false,
"connect_linkedin": "LinkedIn is not connected for this user, so nothing can go out on LinkedIn. Ask the user to connect (or reconnect) LinkedIn in mySDR under Settings → LinkedIn (https://mysdr.app/en/settings?tab=linkedin): they sign in to LinkedIn once there. You cannot do it for them.",
"connect_url": "https://mysdr.app/en/settings?tab=linkedin",
"paused": null,
"warmup": null,
"limits": {
"invites_today": 3,
"invites_per_day": 20,
"invites_last_7_days": 41,
"invites_per_7_days": 100,
"invites_per_7_days_without_note": 75,
"new_sequences_today": 3,
"new_sequences_per_day": 25
},
"campaigns": [],
"dashboard_url": "https://mysdr.app/en/gtm/leads?outreach=any"
}