Skip to main content
This page provides a comprehensive reference for understanding and handling errors across the Edges API. Use the Quick Reference Table for fast lookups, or dive into the detailed sections for specific error handling guidance.
Two levels of reading: Each action’s documentation includes the specific errors it can return. This page provides the overall error landscape across all actions, helping you build robust error handling in your integrations.

Quick Reference Table

Error LabelHTTP CodeCategoryRetry?
BAD_INPUT400InputNo — fix input
BAD_PARAMETERS400InputNo — fix parameters
MISSING_PARAMETER424InputNo — add parameter
NO_ACCESS402AccessNo — check subscription
STATUS_403424AccessNo — check permissions
STATUS_404424Not FoundNo — resource doesn’t exist
NO_RESULT424Not FoundNo — empty result
LIMIT_REACHED429/409Rate LimitYes - Use postponed_until then with backoff
STATUS_429429Rate LimitYes — Use postponed_until then with backoff
LK_ERROR424LinkedInNo
LK_524424LinkedInYes — wait & retry
LK_MISSING_DATA424LinkedInNo
LK_INMAIL_CANNOT_RESEND424LinkedInNo — wait for reply
LK_INMAIL_NOT_ENOUGH_CREDIT424LinkedInNo — add credits
LK_EVENT424LinkedInNo — check event
NOT_CONNECTED424LinkedInNo — connect first
SN_CONFLICT424Sales NavigatorNo — already connected
SN_OUT_OF_NETWORK424Sales NavigatorNo — upgrade account
NO_VALID_ACCOUNT_CONFIGURED424ConfigNo — configure identity
INTEGRATION_ERROR424ConfigNo - contact support
PROXY_ERROR424ConfigYes — Use postponed_until if present or wait 1 minute
GENERIC_ERROR424ProcessingNo - contact support
NO_DATA_LOADED424ProcessingNo
MANDATORY_DATA_MISSING424ProcessingNo — check input
UNDEFINED_FIELD424ProcessingNo — check input
UNKNOWN_ERROR424SystemContact support
ACTION_ABORTED422SystemNo - Check appendix
API_MAX_RETRY424SystemConditional — yes if managed/auto
API_TIMEOUT_ERROR424SystemYes
GMAPS_NO_INTERCEPT424InputNo
HPE_HEADER_OVERFLOW424SystemNo
HTTP_RESPONSE_EMPTY424SystemDepends — see insights
LK_403424LinkedInNo
LK_409424LinkedInNo
LK_413424LinkedInNo
LK_BAD_COOKIE424LinkedInYes if managed/auto — update integration
LK_LOGIN_ERROR424LinkedInYes if managed/auto
LR_ACCOUNT_UPGRADE424LinkedInYes if managed/auto
MISSING_COOKIE424ConfigYes if managed/auto
RLS_BAD_COOKIE424LinkedInYes if managed/auto
SN_ACCOUNT_UPGRADE424Sales NavigatorYes if managed/auto
SN_LOGIN_ERROR424Sales NavigatorYes if managed/auto
RLS_LOGIN_ERROR424LinkedInYes if managed/auto
STATUS_400400InputNo — API only
STATUS_409409SystemNo — API only
STATUS_422422SystemNo — API only
HTTP_ERROR424SystemYes
LK_GET_FEATURES_ERROR424LinkedInYes if managed/auto
LK_ACCOUNT_UPGRADE424LinkedInYes if managed/auto
RUN_MAX_RETRY424SystemNo — run async only; resume resets retry_count
OUTPUT_VALIDATION_FAILED424ProcessingNo — contact support

Error Response Structure

The API uses a consistent error response format across all endpoints. When an error occurs, you’ll receive a response with the following structure:
{
  "error_label": "INVALID_INPUT",
  "error_scope": "input",
  "error_ref": "ERR-12345",
  "message": "The provided input is invalid. Please check your request and try again.",
  "status_code": 400,
  "params": {}
}
Each error response includes:
  • error_label: A machine-readable identifier for the error type
  • error_scope: Indicates which part of the request caused the error (e.g., “input”, “auth”, “server”)
  • error_ref: A unique reference code for tracking and debugging
  • message: A human-readable description of the error
  • status_code: The HTTP status code
  • params: Additional error parameters (if any)
Common HTTP status codes:
  • 200: The request was successful (some API calls may return 201 instead)
  • 400: Bad Request - Invalid input or parameters
  • 401: Unauthorized - Invalid or missing API key
  • 403: Forbidden - Insufficient permissions
  • 404: Not Found - Resource doesn’t exist
  • 424: Failed Dependency - Used to wrap LinkedIn-specific error codes with an additional error_label
  • 500: Internal Server Error - Server-side issue
Why we use 424 for LinkedIn errors: We use the 424 Failed Dependency status code to wrap all LinkedIn-specific error codes. This is because a 404 (or any other error code) from LinkedIn doesn’t imply the same error code on our own APIs. For example, if LinkedIn returns a 404 for a profile that doesn’t exist, that doesn’t mean our API endpoint is returning a 404 — it means the dependency (LinkedIn) failed. The specific LinkedIn error is indicated in the error_label field (e.g., STATUS_404, NO_RESULT, etc.).
Always check the error_label and error_scope fields to programmatically handle different types of errors in your application.
If you encounter an unusual error, such as a 500 or 503, feel free to reach out! These are internal errors on our end, and we’re happy to help resolve them.

Understanding Error Scopes

Every error response includes an error_scope field that indicates what caused the error:
ScopeDescriptionTypical Action
inputThe input data provided is invalidFix the input format or value
paramA parameter in the request is invalidCheck parameter requirements
configConfiguration issue (identity, integration)Verify your setup in the dashboard
integThird-party integration error (LinkedIn)Check resource availability or retry later
The retry_after field from tier provides guidance on how long to wait before making your first retry attempt. For subsequent retries, use an exponential backoff strategy by increasing the wait time between each attempt.

Handling Rate Limit Errors (429)

429 errors indicate that you’ve exceeded a rate limit imposed by either Edges or LinkedIn. It’s crucial to identify the source of the limit to apply the appropriate handling strategy. A 429 Too Many Requests error means you’ve exceeded a usage limit — but it’s important to identify which system triggered it.
SourceIdentifierRetry Strategy
Edges APIX-RateLimit-Type headerUse Retry-After header + exponential backoff
LinkedIn (guarded)error_label = LIMIT_REACHEDCheck params.appendix and params.timespan to distinguish limit type (e.g. API_FUSE_LIMIT/Daily, MINUTE_LIMIT/Minute). Wait for the relevant window to reset.
LinkedIn (raw)error_label = STATUS_429Apply exponential backoff. Do not retry aggressively.
Example Implementation:
if (error.status === 429) {
  if (error.headers['x-ratelimit-type']) {
    // Edges rate limit - use Retry-After header
    const delay = error.headers['retry-after'] * 1000;
    await new Promise(resolve => setTimeout(resolve, delay));
  } else if (error.body.error_label === 'LIMIT_REACHED') {
    // Check params.appendix (e.g. API_FUSE_LIMIT, API_RATE_LIMIT, MINUTE_LIMIT, DAILY_LIMIT) and params.timespan
    const appendix = error.body.params?.appendix;
    const timespan = error.body.params?.timespan;
    console.log('Limit reached:', appendix, timespan);
  } else if (error.body.error_label === 'STATUS_429') {
    // LinkedIn raw - exponential backoff
    const delay = Math.min(1000 * Math.pow(2, retryCount), 30000);
    await new Promise(resolve => setTimeout(resolve, delay));
  }
}
General Recommendations:
  • Monitor identity usage via /identities/{identity_uid}/actions/{action_slug}/limits
  • Avoid parallel tools or conflicting automation platforms
  • Match identity timezones with VPNs and login locations
To know more about rate limits, see our dedicated Rate Limits section and best practices.

Handling LinkedIn Errors (424)

424 errors indicate a failed dependency — we use this status code to wrap all LinkedIn-specific error codes. It’s important to identify the specific error_label to determine the appropriate handling strategy. A 424 Failed Dependency error means the external service (LinkedIn) returned an error — the error_label will tell you which LinkedIn error occurred.
Why we use 424 for LinkedIn errors: We use the 424 Failed Dependency status code to wrap all LinkedIn-specific error codes. This is because a 404 (or any other error code) from LinkedIn doesn’t imply the same error code on our own APIs. For example, if LinkedIn returns a 404 for a profile that doesn’t exist, that doesn’t mean our API endpoint is returning a 404 — it means the dependency (LinkedIn) failed. The specific LinkedIn error is indicated in the error_label field (e.g., STATUS_404, NO_RESULT, etc.).
Example Implementation:
if (error.status === 424) {
  const label = error.body.error_label;
  
  switch (label) {
    case 'STATUS_404':
      // Resource doesn't exist - don't retry
      console.log('Resource not found on LinkedIn:', error.body.message);
      break;
    case 'NO_RESULT':
      // No results found - treat as empty result
      console.log('No results found:', error.body.message);
      break;
    case 'LK_ERROR':
    case 'GENERIC_ERROR':
      // Transient error - retry with backoff
      const delay = Math.min(1000 * Math.pow(2, retryCount), 30000);
      await new Promise(resolve => setTimeout(resolve, delay));
      break;
    case 'LIMIT_REACHED':
      // LinkedIn limit - wait for reset
      console.log('Limit reached, waiting for reset...');
      break;
    default:
      console.log('Unhandled error:', label, error.body.message);
  }
}