Error Model
We-Link uses a consistent error model across all API endpoints and webhook payloads. Understanding this model is essential for building resilient integrations.
HTTP Status Codes
| Status Code | Meaning | Action |
|---|---|---|
200 | Success | Request accepted (async processing started) |
400 | Bad Request | Check your request body format |
401 | Unauthorized | Verify your x-api-key and x-api-secret |
404 | Not Found | Invalid endpoint or accountId |
429 | Too Many Requests | Rate limit exceeded — wait for the rolling window to reset |
500 | Internal Server Error | Temporary issue — retry with backoff |
Error Response Format
All API errors follow this structure:
{
"status": "ERROR_CODE",
"message": "Human-readable description of the problem",
"requestId": "req-12345-abcde"
}
Webhook Error Payloads
Async operations that fail deliver errors via webhook:
{
"status": "WRONG_PASSWORD",
"request_id": "req-12345-abcde",
"message": "wrong password",
"hash": "security_hash"
}
Error Code Reference
Authentication & Session Errors
| Code | Description | Resolution |
|---|---|---|
WRONG_PASSWORD | LinkedIn password is incorrect | Verify credentials |
ACCOUNT_RESTRICTED | Account flagged by LinkedIn | Reduce activity, wait, or contact LinkedIn |
RECRUITER_ACKNOWLEDGEMENT_REQUIRED | Recruiter requires acknowledgement (multiple active sessions) | User must acknowledge in LinkedIn Recruiter UI |
RECRUITER_LOGIN_SUBMISSION_FAILED | Failed to submit recruiter login credentials | Retry the request; verify account has Recruiter seat |
RECRUITER_AUTH_REQUIRED | Failed to retain recruiter account session | Re-authenticate the Recruiter account |
SALES_SEAT_REQUIRED | Sales Navigator subscription required | Ensure the account has an active Sales Nav license |
BASIC_INFO_NOT_FOUND | Failed to fetch basic profile details | Re-authenticate the account and retry |
OWN_PROFILE_ID_NOT_FOUND | Own profile ID not found | Re-authenticate the account |
Connection & Proxy Errors
| Code | Description | Resolution |
|---|---|---|
PROXY_ERROR | Proxy connection failed | Check proxy config or switch to internal proxy — see Proxy Configuration |
Rate Limit & Quota Errors
| Code | Description | Resolution |
|---|---|---|
STATUS_429 | LinkedIn rate limit hit | Wait and reduce request frequency |
QUEUE_TIMEOUT_THRESHOLD_EXCEEDED | Request was queued too long and automatically failed | Re-submit the request; spread workload to avoid queue buildup |
CANT_RESEND_YET | Cannot re-send a connection request to the same person within two weeks | Wait at least two weeks after the previous invite before retrying |
FUSE_LIMIT_EXCEEDED | LinkedIn weekly/rate limit exceeded | Pause activity and wait for the limit to reset |
MAX_INVITATION_SENT | LinkedIn connection limit (30,000) has been reached | Remove old pending invitations |
CUSTOM_INVITE_LIMIT_REACHED | Monthly limit for custom invites reached (free accounts only) | Upgrade to Premium, or send invites without a custom message |
NOT_ENOUGH_INMAIL_CREDIT | Insufficient InMail credits or recipient not open to messages | Purchase additional InMail credits |
INSUFFICIENT_CREDITS | Company invite quota exceeded | Wait for quota to reset |
TOO_MANY_FOLLOWERS | Cannot invite — company has more than 5,000 followers | Company follow invitations unavailable at this size |
Connection Request Errors
| Code | Description | Resolution |
|---|---|---|
ALREADY_CONNECTED | Already connected to the target user | No action needed |
PENDING_INVITE | A pending invite already exists | Wait for the existing invite to be accepted or withdraw it |
NOT_CONNECTED | Not connected to this user (required for the action) | Send a connection request first |
CUSTOM_MESSAGE_TOO_LONG | Custom invite message exceeds the 300 character limit | Shorten the message to 300 characters or fewer |
NO_INVITATION_FOUND | Invitation not found | Verify the invitation exists before withdrawing |
INVITATION_ID_NOT_FOUND | Failed to fetch invitation ID | Confirm the profile has a pending invitation |
CANNOT_INVITE | Invites are disabled for this event | The event organizer has disabled invitations |
Messaging Errors
| Code | Description | Resolution |
|---|---|---|
RECIPIENT_NOT_FIRST_DEGREE_CONNECTION | Direct messages can only be sent to first-degree connections | Send a connection request first, or use InMail |
MESSAGE_VALIDATION_PLUGIN_ERROR | Sender profile ID validation failed (Sales Navigator) | Verify the sender profile ID is correct |
THREAD_VALIDATION_PLUGIN_ERROR | LinkedIn thread validation failed | Verify the thread ID is valid and accessible |
UNAUTHORIZED_VIEWER | Not authorized to message this group member | Ensure you are a member of the same group |
DATAFETCHINGEXCEPTION | Follow-up message sent before first message request was accepted | Wait for the initial message to be delivered first |
Profile & Data Fetch Errors
| Code | Description | Resolution |
|---|---|---|
PROFILE_NOT_FOUND | Target LinkedIn profile doesn't exist | Verify the profile URL or identifier |
404_PROFILE_ID | Provided profile URL is invalid | Check the URL format and try again |
CONTACT_INFO_FETCH_FAILED | Failed to fetch contact information | The profile may have restricted contact visibility |
NO_COMPANY_DATA | Failed to fetch company information | Verify the account has access to company data |
NO_GROUP_DATA | Failed to fetch group information | Verify the account is a member of the group |
TOTAL_COUNT_FAILED | Failed to retrieve total profile views | Retry the request |
NO_VIEWERS_FOUND | No profile viewers found | No recent profile views to display |
NO_CONNECTIONS_FOUND | No connections found | The account has no connections matching the query |
NO_INVITES_FOUND | No pending invites found | No outstanding invitations to display |
INVALID_COMPANY_URL | Provided company URL is invalid | Check the company URL format |
404_COMPANY | Company details could not be found | Verify the company URL or ID |
COMPANY_ID_NOT_FOUND | Company ID could not be resolved | Confirm the company exists on LinkedIn |
Search Errors
| Code | Description | Resolution |
|---|---|---|
UNKNOWN_SEARCH_URL | Unsupported search URL | Verify the search URL format and parameters |
note
UNKNOWN_SEARCH_URL applies to all search endpoints — regular, group, post, event, Sales Navigator, and Recruiter search variants.
Content & Post Errors
| Code | Description | Resolution |
|---|---|---|
NO_CONTENT_OR_MEDIA | Post content or media attachment is required | Include text content or a media file |
MULTI_SELECTION_NOT_ALLOWED | Multiple attachments not supported for this type | Attach only one file of this type |
POST_MEDIA_STILL_PROCESSING | Media is still being processed by LinkedIn | Wait a few seconds and retry |
MEDIA_UPLOAD_FAILED | Failed to upload media | Verify the file format and size, then retry |
NO_ACTIVITY_FOUND | Post not found | Verify the post URL or ID |
Engagement Errors
| Code | Description | Resolution |
|---|---|---|
NO_SKILLS | No skills available to endorse | The profile has no endorsable skills listed |
NO_POSTS_TO_LIKE | No posts available to like | The profile has no recent posts |
NO_PROFILES_TO_GREET | No profiles to greet | No contacts have matching events today |
FORBIDDEN | No access to this account | Verify the profile ID and account permissions |
BAD_REQUEST | Invalid profile ID or follow status | Check the request parameters |
Event & Company Errors
| Code | Description | Resolution |
|---|---|---|
EVENT_NOT_FOUND | Event not found or failed to retrieve event details | Verify the event URL or ID |
EVENT_FETCH_FAILED | Failed to fetch event details | Retry the request; the event may be private |
NO_EVENTS_FOUND | No events found | No events match the current query |