Connect an account in the app, wait out the initial sync, then work with it over the API. The login happens inside a dedicated antidetect browser; no password ever reaches the platform.
Connecting is the one step that happens in the app rather than the API: the account
owner signs in to LinkedIn inside a dedicated antidetect browser, because a live human
login is what keeps the session real. Everything after that is API territory.
Give this to your AI agent and it will handle the API side once you finish the
in-app login:“Connect to gtm-api: add the MCP connector at https://mcp.gtm-api.com/mcp (OAuth) or
call the REST API at app.gtm-api.com with my key. Then: search linkedin-accounts for
my newly connected account, watch its status until it is active, read its smart
limits, and tell me what outbound budgets I have today. Do not send anything yet.”
On app.gtm-api.com, open Senders and click
Connect account in the top right.
The Senders page: every connected account with its browser, health and sync state.
2
Pick how the browser is provisioned
Cloud browser (recommended): the platform mints a fresh anti-detect profile with a
managed residential proxy. Pick the Proxy location country to match where the
account usually logs in from.
Cloud browser: choose the vendor and the proxy country; the summary names exactly what will be created.
Existing profile ID (bring your own): you already have a GoLogin profile. It keeps
its own proxy; the platform verifies the profile exists and is runnable, and never
changes it.
Bring your own: the profile and its proxy remain yours; the platform only reads the session.
3
Log into LinkedIn inside the browser
Run the browser and sign in to LinkedIn in the window that opens. The platform detects
the logged-in account and binds it to the browser.Accounts are deduplicated by their LinkedIn member identity: reconnecting an account
your team connected and deleted before restores it instead of duplicating it. If the
account is already connected on a different team, binding is refused.
A sudden proxy-country change is a classic trigger for LinkedIn verification
challenges. Pick the country the account genuinely operates from, and keep it.
The account enters onboarding: an initial import of the profile, conversations,
connections and invitations, in a strict order. Outbound actions are held until it
completes.
The sync hit a problem; check the account in the app
shared_out
Lent to another team via account sharing
subscription_required
The plan lapsed; renew to reactivate
Until the account reaches active, outbound endpoints (connection requests, messages)
answer with a conflict error. Read endpoints work as soon as data lands.
POST /api/linkedin-accounts/{sid}/check-sales-nav, /check-premium,
/check-recruiter report what the account’s LinkedIn subscription actually supports.
Sales Navigator endpoints on an account without Sales Navigator fail upfront with
validation_failed rather than mid-run.
POST /api/linkedin-account-smart-limits/search returns the account’s current
per-action daily budgets. A newly connected account starts well below platform
maximums and warms up as it ages; read these limits instead of assuming a number.
See Smart limits and warmup.
POST /api/linkedin-account-snapshots/search gives the health timeline the platform
records for the account.
Once active, the account’s sid (ln_ac_...) is the handle every LinkedIn endpoint
takes. A sensible first write is something low-risk, for example reacting to a post,
before you schedule real outreach through a
mass action with pacing.Every outbound call re-checks the smart limits server-side before dispatch. Hitting a
budget answers limit_exceeded, and the action can resume the next day or after the
limit is raised; the account is not penalized for your retry logic.