mySDRDocs

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.

GEThttps://mysdr.app/api/v1/outreach/linkedin
View Markdown

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

  • object string · required — Always linkedin_outreach. One of: linkedin_outreach.
  • linkedin_connected boolean · required — The user behind this key has a working LinkedIn connection.
  • connect_linkedin string | null · required — Without a connection: what to ask the user, with the link. Null when connected.
  • connect_url string · required — The page in mySDR where the user connects or reconnects LinkedIn (Settings → LinkedIn).
  • paused object | null · required — A pause on the organization or the account: reason and until (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 (reason says which).
  • warmup string | 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.
  • limits object · 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.
  • campaigns object[] · 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) and finished.), last_activity_at and dashboard_url.
  • dashboard_url string · 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"
}