> ## 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.

# Live Mode: Safe Practices

> Use Edges live mode without overloading LinkedIn: cold-account ramp-up, spacing, sequencing, jitter, and recommended delays per action.

**Live mode** talks to LinkedIn **directly and synchronously** for each call. Unlike **async** or **schedule**, Edges does **not** apply the same built-in pacing, batching, or orchestration on your behalf. At scale, careless live usage can look like automation and trigger throttling, checkpoints, or account risk.

**Goal:** mimic **human-like** usage—similar in spirit to what Edges does in async—by spacing work, avoiding parallelism, and adding randomness.

<Danger>
  Using live mode unsafely puts your account at serious risk—you may be temporarily rate limited or even banned from LinkedIn. Having your account blocked due to unsafe usage is not a possibility, it's only a matter of time.
</Danger>

<Warning>
  Treat live mode as **your responsibility** to rate-limit and sequence. If you need guardrails by default, prefer [**async**](/v1/runs/overview#async-mode) or [**schedule**](/v1/runs/overview#schedule-mode).
</Warning>

***

## Rules of thumb 👍

* **Spread actions over time** — never fire everything at once.
* **Invitations** — respect a **daily cap** and space each attempt by **tens of seconds to minutes**, with **randomized** gaps.
* **Profile visits** — distribute across the day; delay between each live call.
* **Search / pagination** — always wait between **each page** (each follow-up request using `X-Pagination-Next` or the next cursor).
* **No parallel live calls** for the same identity on risky outreach—keep the pipeline **sequential** (one in flight, then the next).
* **Random + jitter** — add variability to every delay so intervals are not perfectly periodic.

***

## Cold Account

A **cold account** is one with little recent LinkedIn activity: new identity, long idle period, or a profile that rarely browses, searches, or messages. LinkedIn’s systems weigh **sudden spikes** more heavily than steady habits—going from near-zero to high-volume live API traffic in a day is one of the riskiest patterns.

**Ramp up over several days** instead of jumping to your target throughput immediately:

1. **Days 1–2** — Keep volume **very low** (a handful of benign actions if you must: light reads, spaced visits, minimal outreach). Use **generous** gaps between calls—often **longer** than the [suggested minimum spacing](#suggested-minimum-spacing-live) table—and **no parallelism** for the same identity.
2. **Days 3–5** — Gradually increase **daily call count** and **breadth** (more pages, more profiles), still with **jitter** and **sequential** execution. If you see `429`, checkpoints, or unusual friction, **slow down** and extend the ramp.
3. **After \~a week of stable, human-like patterns** — You can approach your intended steady-state spacing and volume, still respecting daily caps, invitation limits, and the **Rules of thumb** guidance above.

There is no single “correct” curve: align ramp length with how **warm** the account already is and how aggressive your actions are (visits vs. InMail vs. connect). When in doubt, **stretch the ramp** and favor **async** or **schedule** until the account has a believable baseline of activity.

***

## Suggested minimum spacing (live)

These are **starting points** for time **between successive live calls** of the same type for the same identity. Adjust per account and monitoring; when in doubt, **\~60 s** is a reasonable default.

| Action                                                                           | Recommended gap between calls                         |
| -------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [`linkedin-inmail-profile`](/v1/api/actions/linkedin-inmail-profile)             | **\~30 s**                                            |
| [`linkedin-message-profile`](/v1/api/actions/linkedin-message-profile)           | **\~60 s**                                            |
| [`linkedin-visit-profile`](/v1/api/actions/linkedin-visit-profile)               | **\~30 s**                                            |
| [`linkedin-connect-profile`](/v1/api/actions/linkedin-connect-profile)           | **\~60 s** (avoid bursts; small batches spaced apart) |
| [`salesnavigator-inmail-profile`](/v1/api/actions/salesnavigator-inmail-profile) | **\~30 s**                                            |
| **General (other live actions)**                                                 | **\~60 s**                                            |

Combine these delays with **jitter** (see example below), not fixed sleep only.

***

## Simple Safe pattern: sleep + jitter (JavaScript)

After each live `POST` completes, wait **base delay + random jitter** before the next call:

```javascript theme={null}
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

/** baseMs = minimum gap; adds 0..jitterMaxMs random extra */
async function waitBetweenLiveCalls(baseMs, jitterMaxMs = 15_000) {
  const jitter = Math.floor(Math.random() * (jitterMaxMs + 1));
  await sleep(baseMs + jitter);
}

// Example: linkedin-visit-profile — ~30s base, up to +15s jitter
await fetch("https://api.edges.run/v1/actions/linkedin-visit-profile/run/live", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.EDGES_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ /* inputs, identity_mode, … */ }),
});
await waitBetweenLiveCalls(30_000);
// next live call…
```

For **pagination**, call `waitBetweenLiveCalls` with a minimum timeframe **after every page** (after each response before following `X-Pagination-Next`).

***

### LinkedIn Commercial Limits

Keep in mind that LinkedIn has multiple mechanisms in place to detect and flag activity that doesn't appear human. These safeguards are why we enforce daily limits on async and scheduled runs—to ensure security and reduce the risk of triggering LinkedIn's automated protections.

<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.

***

## Related

* [Execution modes overview](/v1/runs/overview) — when to prefer live vs async vs schedule
* [Pagination](/v1/runs/pagination) — live mode and `X-Pagination-Next`
* [Rate limits](/v1/runs/rate-limits)
* [LinkedIn limits](/v1/linkedin/limits)
