> ## Documentation Index
> Fetch the complete documentation index at: https://docs.edges.run/llms.txt
> Use this file to discover all available pages before exploring further.

# LinkedIn Smart Limits

> How Edges protects LinkedIn accounts with Smart Limits and best practices to prevent restrictions.

## Edges Smart Limits

Edges protects your clients' LinkedIn accounts with our unique **Smart Limits** system.
By using Edges exclusively, clients can run a high volume of actions without issues.
These limits help stay within LinkedIn's daily action caps, preventing account restrictions.

<Note>Smart Limits operate on a 24-hour sliding window.</Note>

<Tip>
  **What happens when the limit is reached?** In real-time mode, requests will fail with a rate limit error. In async or schedule modes, tasks will be postponed and automatically resume once the limit is freed up.
</Tip>

**Example Over 24 hours**:

If it's Wednesday at 2 PM, Edges checks the past 24 hours for any activity:

* If the limit is hit (e.g., 1000/1000 actions), no new tasks are launched in async/schedule modes, or requests fail immediately in real-time mode.
* We periodically check to see if the limit is cleared, e.g., at 3 PM, there might be 100 actions freed up.
* The available actions may vary depending on when the limit was last checked.

<Info>
  Edges only tracks actions performed within the platform, not manual
  actions on LinkedIn or using other automation tools.
</Info>

### How Smart Limits Work

**Limits are per-action, per-identity.** Each LinkedIn action (e.g., `linkedin-connect-profile`, `salesnavigator-search-metrics`) has its own daily limit tracked separately for each identity.

| Concept                    | Explanation                                                                                   |
| -------------------------- | --------------------------------------------------------------------------------------------- |
| **Per-action**             | Hitting the limit on `salesnavigator-search-metrics` doesn't affect `linkedin-extract-people` |
| **Per-identity**           | Each identity has its own limit counter for each action                                       |
| **24-hour sliding window** | Limits reset gradually, not all at once at midnight                                           |

**Example:** If Identity A hits its `linkedin-connect-profile` limit, it can still run `linkedin-extract-people`. Identity B is unaffected.

### New identity ramp-up

Newly connected identities do not receive full quotas immediately. Capacity ramps up over **5 days** (one fifth of full capacity added per day) and, on **day 1 only**, over the **first 5 hours** (one fifth of the day-1 allowance added per hour).

**Example:** connection requests with a full quota of **25** / 24 h → **5** on day 1, **10** on day 2, **15** on day 3, **20** on day 4, **25** from day 5 onward. On day 1, the hourly cap within those first 5 hours is **1 → 2 → 3 → 4 → 5**.

See [LinkedIn Limits — New identity ramp-up](/v1/linkedin/limits#new-identity-ramp-up) for the full tables.

### Auto Mode and Rate Limits

When using `identity_mode=auto`, Edges distributes requests across all available identities. If **all identities** in your pool hit their Smart Limit for a specific action, you'll see:

```json theme={null}
{
  "label": "LIMIT_REACHED",
  "message": "Daily limit reached for linkedin.",
  "error": "all integration identities are exhausted",
  "postponed_until": "2025-12-23T15:15:42.523Z"
}
```

**What this means:**

* Every identity in your pool has reached its daily limit for this specific action
* The task is postponed until `postponed_until` (when limits start freeing up)
* Other actions may still work (limits are per-action)

**Solutions:**

* Add more identities to your pool
* Use `identity_mode=managed` to access Edges's account pool
* Wait for `postponed_until` — async tasks automatically retry

### Checking Your Current Limits

Use the [Get Identity Limits](/v1/api/identities/limits) endpoint to check real-time usage:

```bash theme={null}
GET /v1/identities/{identity_uid}/actions/{action_slug}/limits
```

**Example:** Check `salesnavigator-search-metrics` limits for a specific identity:

```bash theme={null}
curl -X GET "https://api.edges.run/v1/identities/your-identity-uid/actions/salesnavigator-search-metrics/limits" \
  -H "X-API-Key: your-api-key"
```

<Warning>
  This endpoint evaluates limits in real-time, which is resource-intensive. Use it sparingly — don't poll continuously. It is rate limited along with other identity management operations. Check the [Rate Limits documentation](/v1/runs/rate-limits#identity-management) for details.
</Warning>

## Key Points for Avoiding LinkedIn Restrictions

When implementing **Edges** for LinkedIn automation, it's crucial to inform your users about a few key actions to prevent account restrictions.

Key steps to follow:

| **Step**                               | **Action**                                                                                                                           |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **1. Avoid Multiple Automation Tools** | Advise against using multiple automation tools simultaneously to prevent LinkedIn from flagging the account for suspicious activity. |
| **2. Match Timezone Settings**         | Ensure the **timezone** selected in Edges matches the user's actual location or VPN country.                                         |

### **Avoid Using Multiple Automation Tools Simultaneously**

Using **multiple automation tools** at once with Edges can cause issues.

* **Why?** Many automation tools don't manage IP addresses properly, which could trigger flags on LinkedIn. When using multiple tools, LinkedIn may detect activity from different sources, increasing the likelihood of restrictions.
* **The result:** LinkedIn might flag the account for suspicious activity, potentially resulting in restrictions.

### **Ensure Timezone Settings Match**

The `timezone` selected in Edges must match the country where you're logging into LinkedIn.

* **Why it matters:** The timezone field provisions a proxy IP matching that timezone/country. If the timezone in your Edges identity doesn't align with your LinkedIn login location, LinkedIn may restrict your account.
* **What to do:** Always check that the timezone in your Edges identity matches the country where you're logging into LinkedIn to avoid being flagged.

### **VPN Use: Match Locations Carefully**

Using a **VPN** can be helpful but needs careful management.

* **Best practice:** The country in your **VPN** should match the timezone set in Edges. If there's a mismatch, LinkedIn might flag your activity as suspicious.
* **Tip:** Double-check that the timezone in Edges matches your VPN's location, or disconnect the VPN when accessing LinkedIn to avoid issues.

### **What to Do if Your Client Gets a LinkedIn Restriction?**

* **Don't worry!** Restrictions are usually temporary. ⏳
* **Steps to follow**:
  1. Are **other automation tools** running alongside Edges?
  2. Does the **timezone setting** in Edges match the user's actual location?
  3. If using a **VPN**, does the VPN location match Edges's timezone setting?

## Best Practices

* **Scale your efforts**: Use multiple identities and the **identity\_mode=auto** feature to manage higher action volumes while staying within LinkedIn's limits.
* **Avoid overloading**: Space out actions over time to improve efficiency and avoid triggering restrictions.
* **Monitor activity**: Regularly track identity usage to prevent exceeding limits unexpectedly.
* **Choose the right execution mode**: Use real-time mode for immediate results, async mode for large batches, and schedule mode for time-based automation.

By following these guidelines, you can ensure smooth LinkedIn automation without restrictions!

## LinkedIn Limits

### LinkedIn Commercial Limits

<Info>
  A single limit may be consumed by **multiple actions**. Use the [Get Identity Limits](/v1/api/identities/limits) endpoint to see all limits that apply to a specific action.
</Info>

## Identity Ramp-Up

When a LinkedIn identity is **newly connected**, its effective capacity ramps up gradually instead of starting at the full quotas in the limits table.

Ramp-up applies to **all limits** tied to that identity (connection requests, visits, messages, searches, etc.). The **full capacity** is the value shown in the quotas table for that identity’s account level.

### 5-day ramp-up

Full capacity is split into **5 equal steps**. Each day after the identity is connected, **one additional fifth** is unlocked:

| Day after connection | Share of full capacity | Example: connection requests (full = 25 / 24 h) |
| -------------------- | ---------------------- | ----------------------------------------------- |
| Day 1                | 1/5 (20%)              | **5**                                           |
| Day 2                | 2/5 (40%)              | **10**                                          |
| Day 3                | 3/5 (60%)              | **15**                                          |
| Day 4                | 4/5 (80%)              | **20**                                          |
| Day 5+               | 5/5 (100%)             | **25**                                          |

At the end of **day 5**, the identity reaches **full capacity** for all limits.

## Identity rate limits (all actions combined)

These caps apply to the **identity as a whole**, not per action. All actions executed by the same identity **share** these windows — they are global throughput limits on total activity.

| Window         | Default cap (identity-wide) |
| -------------- | --------------------------- |
| Per second     | 5                           |
| Per minute     | 50                          |
| Per 15 minutes | 500                         |
| Per 4 hours    | 2,500                       |
| Per 24 hours   | 15,000                      |

## Action rate limits

Each limit defines how many times a specific type of action can be executed within a defined time window.

## Limit ↔ Actions & Quotas

<Warning>
  Some limits vary depending on the **account level**: `default`, `CLASSIC`, or `SALES_NAV`.
</Warning>

<Tip>
  Most quotas use a **24-hour** sliding window, meaning they reset every 24 hours. InMail uses **\~31 days** .
</Tip>

| **Limit Name**                        | **Value LinkedIn/Sales Navigator**                                   | **Per-minute cap**          |
| ------------------------------------- | -------------------------------------------------------------------- | --------------------------- |
| Max **profile visits**                | default & CLASSIC: 80 / 24 h · SALES\_NAV: 500 / 24 h                | 10                          |
| Max **messages sent**                 | default, CLASSIC & SALES\_NAV: 250 / 24 h                            | 10                          |
| Max **connection requests**           | default: 25 / 24 h · CLASSIC & SALES\_NAV: 30 / 24 h                 | 10 (default & CLASSIC only) |
| Max **profile enrichments**           | CLASSIC: 700 / SALES\_NAV: 700 / 24 h                                | 5                           |
| Max **company enrichments**           | CLASSIC: 2000 / SALES\_NAV: 2000 / 24 h                              | 20                          |
| Max **job enrichments**               | CLASSIC: 5000 / SALES\_NAV: 5000 / 24 h                              | 10                          |
| Max **profile components**            | 450 / 24 h (experiences, educations, skills)                         | 9                           |
| Max **contact info**                  | default, CLASSIC & SALES\_NAV: 250 / 24 h                            | —                           |
| Max **event invitations sent**        | 100 / 24 h                                                           | 20                          |
| Max **linkedin search people**        | default & SALES\_NAV: 450 / 24 h                                     | 10                          |
| Max **salesnavigator search people**  | default & SALES\_NAV: 950 / 24 h                                     | 20                          |
| Max **linkedin search company**       | default & SALES\_NAV: 450 / 24 h                                     | 10                          |
| Max **salesnavigator search company** | default & SALES\_NAV: 950 / 24 h                                     | 20                          |
| Max **search saved people**           | default & SALES\_NAV: 5,000 / 24 h                                   | 20                          |
| Max **search saved company**          | default & SALES\_NAV: 5,000 / 24 h                                   | 20                          |
| Max **InMail sent**                   | default: 5 / \~31 d · CLASSIC: 15 / \~31 d · SALES\_NAV: 50 / \~31 d | 10                          |
| Max **get post**                      | 10,000 / 24 h                                                        | 40                          |
| Max **get post commenters**           | 10,000 / 24 h                                                        | 40                          |
| Max **get post likers**               | 10,000 / 24 h                                                        | 40                          |
| Max **get post reposters**            | 10,000 / 24 h                                                        | 40                          |
| Max **get people post activity**      | 10,000 / 24 h                                                        | 30                          |
| Max **get people comment activity**   | 10,000 / 24 h                                                        | 30                          |
| Max **get people reaction activity**  | 10,000 / 24 h                                                        | 30                          |
| Max **Extract profile handle and id** | 10,000 / 24 h                                                        | 30                          |
| Max **get people reaction activity**  | 10,000 / 24 h                                                        | 30                          |

## Important Operational Notes

* **New identities** ramp up to full capacity over **5 days** and, on day 1, over the **first 5 hours** (see [New identity ramp-up](#new-identity-ramp-up)).
* Limits are **rolling windows**, not calendar-based.
* Per-minute caps apply **even if the daily quota is not exhausted**.
* Some actions consume **multiple limits simultaneously** (e.g., visit + enrichment).
* Sales Navigator accounts have significantly higher visit/search quotas.
* InMail limit works on a **\~31-day window**, not daily.
* **Default identity rate limits** (above) are shared across all actions on the same identity. **Per-action quotas** in the limits table below (`limit_value` per limit type) apply separately in addition to those global caps.

### Limit Reached Errors

While Edges protects your clients' LinkedIn accounts with Smart Limits, you may still see 429 errors originating from different sources. Here's how to identify and handle them.

| Error Type         | `status_code` | `error_label`   | Source    | Handling Recommendation                            |
| ------------------ | ------------- | --------------- | --------- | -------------------------------------------------- |
| Edges Rate Limit   | `429`         | N/A             | Edges API | Wait for `Retry-After`, apply exponential backoff  |
| LinkedIn (Guarded) | `429`         | `LIMIT_REACHED` | LinkedIn  | Wait at least 24h, retry once usage drops          |
| LinkedIn (Raw)     | `429`         | `STATUS_429`    | LinkedIn  | Apply exponential backoff, monitor identity health |

For `LIMIT_REACHED` retry implementation see [Handling Rate Limit Errors](/v1/error-reference#handling-rate-limit-errors-429).

**Best Practices**:

* Always implement **retry with exponential backoff** (e.g. 30s → 60s → 120s…)
* Use **identity rotation** or `identity_mode=auto` to spread traffic or rely on `identity_mode=managed` to let Edges handle it (higher credits consumption)
* Use **async or schedule modes** for large workloads to avoid real-time limits (limits are managed on our side)

<Info>
  For more details on handling errors, refer to our [Error Reference](/v1/error-reference).
</Info>
