Account safety
LinkedIn restricts accounts that behave like bots. A customer's account is the asset, so Outvoy protects it before it optimizes for speed. These rules are enforced by the engine, not left to the agent.
Automating LinkedIn goes against LinkedIn's User Agreement, and any automation carries a risk of the account being restricted. The defaults below reduce that risk; nothing removes it. By connecting an account you accept it. See the terms.
Limits and ceilings
Every LinkedIn sender starts with conservative defaults. You can change them per sender, up to hard ceilings the API refuses to exceed (422). Above the risky value restrictions become noticeably more likely, and the console flags it.
| Limit | Field | Default | Risky above | Hard ceiling |
|---|---|---|---|---|
| Invitations per day | dailyInvites | 20 | 25 | 40 |
| Invitations per 7 days | weeklyInvites | 100 | 120 | 200 |
| Messages per day | dailyMessages | 50 | 80 | 150 |
| Profile visits per day | dailyProfileViews | 60 | 80 | 150 |
| Post likes per day | dailyPostLikes | 30 | 50 | 100 |
Daily limits reset at midnight in the sender's timezone; the weekly invitation limit counts the last 7 days, as LinkedIn does. Messages count campaign messages and inbox replies alike. Each sender shows limits, today's effectiveLimits (warm-up applied) and usage.
curl -X PATCH https://api.getoutvoy.com/v1/senders/snd_0yUkG9TD \
-H "Authorization: Bearer $OUTVOY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "limits": { "dailyInvites": 25 } }'
Warm-up
A newly connected sender starts at 30% of its limits and ramps linearly to 100% over 14 days; each cap is rounded down, and never below 1 unless you set it to 0. With the defaults, that's 6 invitations on day one and 20 from day fourteen. Turn it off with PATCH /v1/senders/{senderId} and { "warmupEnabled": false } for accounts that already do outreach every day.
Working hours and pacing
- By default a sender acts Monday to Friday, 09:00–18:00, in
Europe/Madrid. Set its ownschedule: an IANAtimezone,daysas ISO weekdays (1 = Monday … 7 = Sunday) andstart/endasHH:mm. - At most one action per sender at a time.
- A gap of 2–6 minutes after each action that reached LinkedIn before the sender acts again.
- When a campaign uses several senders, leads are spread round-robin across them and each one keeps its own limits.
curl -X PATCH https://api.getoutvoy.com/v1/senders/snd_0yUkG9TD \
-H "Authorization: Bearer $OUTVOY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "schedule": { "timezone": "Europe/Berlin", "days": [1, 2, 3, 4, 5], "start": "08:30", "end": "17:30" } }'
When an action can't run now, it moves to the sender's next possible slot and the lead's enrollment says why in waitingReason, for example: “Next: send invite — sender's daily invite cap reached (20/20), next slot Tue 09:00 Europe/Madrid”.
What pauses a sender
| Cause | What happens | Event |
|---|---|---|
| LinkedIn reports a limit | The sender stays active but rests until the next local midnight (or later if LinkedIn says so); pausedUntil says when. Then it acts again on its own. | sender.paused (reason linkedin_limit, until), then sender.resumed (reason hold_expired) |
| The session breaks (sign-out, checkpoint) | Status needs_reconnect: nothing runs until the owner reconnects through the hosted page (POST /v1/senders/connect-link with reconnectSenderId). | sender.needs_reconnect (reason session_expired) |
| LinkedIn restricts the account | Status restricted: nothing runs until you act. | sender.needs_reconnect (reason account_restricted) |
| You pause it | Only an active sender can be paused; nothing runs until you resume it. | sender.paused (reason paused_by_user), sender.resumed (reason resumed_by_user) |
| Your plan allows fewer LinkedIn senders | The newest extra senders are paused (“Paused: your plan allows N LinkedIn senders”), never deleted or disconnected. They can't be resumed or used for search until the plan has room (402). | sender.paused (reason plan_limit) |
A temporary LinkedIn error is retried after 2 and then 4 minutes; a third failure ends that lead's sequence with linkedin_error.
Rules every campaign keeps
- A reply stops that lead's sequence immediately, wherever it is.
- Nobody is messaged unless they are a 1st-degree connection of the sender: a message step needs an invite step before it, or a
connected_onlycampaign. - At most one invite step per campaign. An invitation nobody accepted is withdrawn after the campaign's
acceptanceWindowDays(1–30, default 14), and the lead completes withnot_accepted. - Nobody is enrolled who is blocklisted or already live in another running or paused campaign of the workspace. The blocklist is checked again before every visible action, so blocking someone after launch ends their sequence (
failed,stopReasonblocklisted). - Invitation notes over 300 rendered characters, messages over 8,000, or texts with a missing variable are caught in preview and never sent.
- With
settings.secondChance, another sender of the pool may invite someone who hasn't accepted — each sender within its own limits, working hours and warm-up, and never after the acceptance window (counted from the first invitation) has closed. Every other invitation is withdrawn as soon as they accept one, and all of them when the window ends, even if the lead's sequence ended meanwhile. - Someone already connected is never invited. By default (
ifAlreadyConnected: "continue") the sequence goes on without the invitation;skip_leadends their sequence with nothing sent (already_connected).
Responsible use
Limits protect the account; how you use it protects the people on the other end. The acceptable use rules are part of the terms. In practice:
- Only connect LinkedIn accounts you own or are authorized to use, and keep each one's activity close to what its owner would do by hand.
- Write to people about their professional role, say who you are and why you're writing, and stop when they ask. Add them to the blocklist so no campaign reaches them again.
- Have a lawful basis for the people you import, tell them where you got their data when the law requires it, and never target children or sensitive personal data.
- Rehearse with sandbox senders and
previewbefore an agent launches anything real.
Rehearse in the sandbox
Sandbox senders simulate LinkedIn and never touch a real account. They run the same engine on a compressed clock (a simulated day per real minute: step delays and the acceptance window shrink the same way), with the ceilings as their limits, no warm-up, no working hours and no pacing gap. They still take one action at a time (the engine looks for due work every 5 seconds), so a small campaign shows invitations, acceptances, messages and replies within minutes.