V1 will be deprecated. We recommend migrating to V2 as soon as possible. V1 endpoints will continue to work during the transition period, but all new features are V2-only.
What Changed (TL;DR)
No more login_token
V1 required a
login_token and country in every request. V2 replaces this with a single account_id.One endpoint per category
V1 had a different URL for each action (e.g.
/v1/profile/me, /v1/profile/info). V2 uses one URL per category with an action field in the body.Standardized responses
V1 responses varied between endpoints. V2 always returns
success, data/error, and metadata — no more guessing the format.Proper HTTP status codes
V1 returned 200 for most errors. V2 uses correct HTTP status codes (400, 402, 403, 404, 429, 500).
New in V2 Only
These features have no V1 equivalent — they are only available in V2:Step-by-Step Migration
Step 1 — Connect Your Account
In V1, you obtained alogin_token from /v1/auth/login and passed it in every request along with country. In V2, you connect your account once and receive a persistent account_id.
- Option A: Fresh login
- Option B: Import existing V1 token
account_id — you’ll use it in all V2 requests. You no longer need to store or manage login_token or country.
Re-calling
/v2/login with an already migrated token returns the same account_id — the call is idempotent and free.Batch Migration (SaaS with many accounts)
If you have hundreds oflogin_token values stored in your database, migrate them before changing code:
- Add
account_idandmigration_statuscolumns to your accounts table - Iterate all rows, call
POST /v2/loginwith{ "login_token": "...", "country": "..." }for each - Handle outcomes per row:
connected→ saveaccount_id, mark migrated- error (expired token) → mark failed, user must re-auth
- Add 0.5–2s random delay between calls
- Switch code to use
account_idonly after batch is complete - Drop
login_token/countrycolumns once V2 is fully deployed
Step 2 — Update Request Format
Every V2 action endpoint uses the same structure:- Remove
login_tokenandcountryfrom every request body - Add
account_idat the root level - Add
actionto specify what to do - Move all other parameters inside a
paramsobject - Rename
linkedin_url→profile_url,message→message_text(send message) - Convert search filters from strings to arrays (see below)
- V1 (before)
- V2 (after)
Search Filters: Strings → Arrays
In V1, multi-value search filters used semicolons or commas as separators. In V2, pass proper arrays. This applies tosearch_people and search_companies — affected parameters: location, company_url, school_url, industry, network, past_company, sector, company_size.
- V1 (before)
- V2 (after)
Step 3 — Update Response Parsing
V1 responses had inconsistent formats across endpoints. V2 unifies everything:- Success:
{ "success": true, "data": { ... }, "metadata": { "action", "account_id", "credits_consumed", "timestamp" } } - Error:
{ "success": false, "error": { "code": "...", "message": "..." }, "metadata": { ... } }
data["status"] == "success"→data["success"] == True- Errors: use
data["error"]["code"]anddata["error"]["message"] metadata.credits_consumedis always present — use it for credit tracking- Remove any per-endpoint parsing workarounds
Step 4 — Update Error Handling
V2 uses real HTTP status codes — V1 returned 200 for almost everything.Errors never consume credits in V2.
Step 5 — Migrate Webhooks
In V1, webhooks were standalone “webhook accounts” with their ownlogin_token. In V2, webhooks are configurations attached to existing accounts.
- V1 (before)
- V2 (after)
- No more separate “webhook accounts” — reuse your existing
account_id webhook_url→url- Filter events with the
eventsarray:["message_received", "accepted_invitation", "disconnection"] - Start/stop:
/v1/webhooks/accounts/{id}/start→/v2/webhooks/{id}/start - Status: replace
GET .../statuswith theis_activefield onGET /v2/webhooks - New hosted mode: omit
urlto get a built-in SSE stream + polling endpoint (no server needed)
Complete Endpoint Mapping
Authentication
Profiles
Messages
Network
Content & Posts
Recruiter
Email / Enrichment
Webhooks
Quick Migration Checklist
1
Connect your account
Call
POST /v2/login with your credentials or existing V1 token to get an account_id.2
Replace login_token with account_id
Remove
login_token and country from all requests. Add account_id instead.3
Update endpoint URLs
Replace individual V1 URLs with the V2 category endpoint +
action field.4
Wrap params
Move all action parameters inside the
params object.5
Rename parameters
linkedin_url → profile_url, message → message_text. Convert search filter strings to arrays.6
Update response parsing
Check
success (boolean) instead of status (string). Access data via data field.7
Update error handling
Use HTTP status codes and
error.code for programmatic error handling.8
Migrate webhooks
Create webhook configs via
POST /v2/webhooks with your existing account_id.Need Help?
- Full V2 reference: Introduction
- Error codes: Error Codes
- Best practices: Platform Best Practices
- Email: [email protected]