API referenceAccounts
POST
/accounts/{id}/sync

JavaScript SDK: swarmhit.accounts.sync(accountId)

Refresh this sender account's LinkedIn profile (name, headline, picture, public identifier) and paid-plan flag from LinkedIn, then return the updated account. Useful right after connecting, or when the stored identity looks stale. Fails with 400 when the account is not connected yet or LinkedIn returns no profile.

Authorization

bearerAuth
AuthorizationBearer <token>

An API key created on the Access tokens page.

In: header

Path Parameters

id*string

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/accounts/string/sync"
{  "data": {    "id": "string",    "label": "string",    "senderId": "string",    "fullName": "string",    "firstName": "string",    "lastName": "string",    "headline": "string",    "publicIdentifier": "string",    "profileUrl": "string",    "profilePicture": "string",    "connectionMethod": "cookie",    "connectedVia": "app",    "hostedLinkId": "string",    "status": "active",    "connectionStatus": "string",    "isVerified": true,    "isPremium": true,    "linkedinPlan": "classic",    "error": "string",    "limits": {},    "usage": {},    "paused": true,    "pausedReason": "user",    "pausedAt": "2019-08-24T14:15:22Z",    "cooldownUntil": "2019-08-24T14:15:22Z",    "cooldownReason": "invite_daily_limit",    "checkpoint": {      "type": "2FA",      "input": "code",      "requestedAt": "2019-08-24T14:15:22Z",      "expiresAt": "2019-08-24T14:15:22Z",      "expired": true,      "canResend": true,      "canTryAnotherWay": true,      "liveView": true    },    "inmailCredits": {      "balance": 0,      "syncedAt": "2019-08-24T14:15:22Z"    },    "ssi": {      "score": 0,      "brand": 0,      "people": 0,      "insights": 0,      "relationships": 0,      "industryTop": 0,      "networkTop": 0,      "industryAverage": 0,      "networkAverage": 0,      "industryName": "string",      "unavailable": true,      "syncedAt": "2019-08-24T14:15:22Z"    },    "country": "string",    "stoppedReason": "proxy_drift",    "connection": {      "country": "string",      "isp": "string",      "changedAt": "2019-08-24T14:15:22Z"    },    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  }}

Answer the pending sign-in challenge POST

**JavaScript SDK:** [`swarmhit.accounts.checkpoint.solve(accountId, params)`](/smart-api/sdk/methods#accounts.checkpoint) Answer the verification step LinkedIn asked for. `code` is the verification code for 2FA and OTP, the phone number for PHONE_REGISTER (with its dialling code in brackets, e.g. `(+33)0612345678`), or the literal `TRY_ANOTHER_WAY` to make LinkedIn offer a different method — the way out of an in-app approval nobody can reach. `status` is `connected` once the sender is live, or `checkpoint_required` with the next `checkpoint` when LinkedIn chained another step. A rejected, expired or unanswerable challenge is a 400 whose `error.code` is one of `checkpoint_code_rejected`, `checkpoint_expired` (the five-minute window closed, so reconnect to start a fresh attempt), `checkpoint_rate_limited`, `checkpoint_restricted`, `checkpoint_no_code` (this type has nothing to type; approve it in the LinkedIn app or on the hosted page), `checkpoint_no_alternative`, `checkpoint_phone_format`, `checkpoint_empty_code`, `checkpoint_none` (nothing is pending), `checkpoint_account_gone` or `checkpoint_not_connected`. When the challenge itself was fine but the attempt could not reach LinkedIn, the 400 carries `proxy_failed` (the sender's proxy did not respond), `provider_timeout` or `rate_limited` instead. A 502 means LinkedIn could not be reached at all: retry.

Change a sender's limits PATCH

**JavaScript SDK:** [`swarmhit.accounts.limits.update(accountId, params)`](/smart-api/sdk/methods#accounts.limits) Send only the caps to change, by key; the others keep their value. Each value is saved as a whole number within the range GET returns for the sender's plan: a value above `max` is saved as `max`, one below 0 as 0, and a fraction is rounded. Send `null` to drop the sender's own value: the cap then follows its plan's `default` again, also when the plan or its default changes later. The response has the same shape as GET, with the values saved, so read `limit` to see what was applied. 400 with `code: invalid-limit` for an empty body, an unknown key, or a value that is neither a number nor null. `warmup` sets its own LinkedIn warm-up, alone or with caps: `inherit` (its workspace's warm-up settings decide), `off` (full speed now), `on` (start now on the workspace's ramp, even when those settings are off) or `custom` (start now on its own `ramp`). An account already warming keeps its day. 400 with `code: invalid-warmup`, and every reason in `details.errors`, for a setting that can't be taken; nothing is saved then, caps included.