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_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) or provider_timeout instead.
Authorization
bearerAuth An API key created under Settings → API & Webhooks.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/accounts/string/checkpoint" \ -H "Content-Type: application/json" \ -d '{ "code": "string" }'{ "data": { "id": "string", "label": "string", "fullName": "string", "firstName": "string", "lastName": "string", "headline": "string", "publicIdentifier": "string", "profileUrl": "string", "profilePicture": "string", "connectionMethod": "cookie", "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": "string", "checkpoint": { "type": "2FA", "input": "code", "requestedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "expired": true, "canResend": true, "canTryAnotherWay": 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", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "status": "connected", "checkpoint": { "type": "2FA", "input": "code", "requestedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "expired": true, "canResend": true, "canTryAnotherWay": true }}Resume a paused sender POST
Resume a paused sender so campaigns and direct actions can use it again. Resuming a sender that is not paused is a no-op and still returns the account. Emits an `account.resumed` webhook.
Sync account information POST
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.