Provider limits and restrictions
PostPress connects you to providers like LinkedIn, WhatsApp, Instagram, Gmail, and Outlook. Each provider enforces its own rate limits, content rules, and account-safety constraints. Stay inside the recommended envelopes below to keep accounts healthy and deliverability high.
LinkedIn limits are defined per account. They are independent of which PostPress endpoint you call and do not accumulate across routes. Space every call across the day, use randomized intervals, and avoid running the same job at fixed times like 8:00 AM daily, since that pattern is easy to flag as automation.
For new or inactive accounts, start with low volume and ramp up over weeks. Accounts with fewer than around 150 connections, or accounts created recently, may see invitation delivery delays that require manual LinkedIn verification before invites surface in the UI. Fake accounts are detected quickly even without automation. Use real accounts only.
Connection invitations
Profile retrieval (profile visits and ID conversion)
Around 100 profiles per account per day is a safe default. PostPress does not throttle these requests. If the account has Sales Navigator or Recruiter, you can switch the api parameter on the retrieval call to access an additional per-product quota. Recruiter Lite, for example, has an official documented limit of 2,000.
Search results
There are two separate limits to plan around.
- Per-search cap (LinkedIn limit). Standard LinkedIn returns at most 1,000 profiles for a single query. Sales Navigator and Recruiter return up to 2,500 (Company search on Sales Navigator is still capped at 1,000). Even when the UI shows more total results, only the first 1,000 (or 2,500) are returned. To retrieve everything, narrow the query with filters and run multiple searches.
- Daily usage (PostPress recommendation). Keep total profiles fetched per day at or below 1,000 (standard) or 2,500 (Sales Navigator / Recruiter). This is the count of result rows actually fetched, not the number of requests.
Relations and invitation list
You can poll relations or pending invitations to detect accepted invites, but do not poll every hour or at a fixed time, since that is easily flagged. After an initial sync, retrieve the first page only a few times per day at random intervals of several hours. The recommended path is the new_relation webhook, which handles this correctly. See Webhooks › New relation.
Chat retrieval
PostPress manages messaging inbox synchronization on the server side, so chat lists and messages stay in sync without polling. Endpoints like list messages, list chats, and list attendees can be called without per-account quotas.
InMail
InMail quota depends on the LinkedIn subscription. Career plans start at 5 InMails per month. Some recruiter contracts include thousands of shared InMails. Check the available balance programmatically via the InMail balance endpoint.
Free InMail on open profiles. Profiles flagged as open can receive free InMails. The flag is exposed as is_open_profile on the retrieval response and depends on the viewing account. LinkedIn caps free InMails at around 800 per month per account. The cap is lower on some account types and depends on history, acceptance rate, and the product surface used (Classic, Sales Navigator, or Recruiter). PostPress mirrors whatever the LinkedIn UI would show.
Everything else
For routes not listed above, follow the same principles:
- Minimize usage where you can.
- Space calls at random intervals.
- Cap each action at around 100 per day per account. This includes company profile retrieval, post retrieval, sending messages to existing connections, commenting, and adding reactions.
LinkedIn Recruiter
LinkedIn Recruiter limits the number of simultaneous sessions. Connecting through PostPress can trigger LinkedIn's warning about shared credentials. The user must acknowledge it. If LinkedIn later detects a new session, it lists all current sessions and asks the user to end one to continue. This does not damage the account, but the user has to reconnect to PostPress every time the popup appears, which is a poor experience.
You can disable Recruiter via the disable_feature parameter on the hosted-auth route if your app does not need it. If Recruiter is required, users must connect with cookies. The login page offers this option, but it requires opening browser devtools. For non-technical users, the cleanest path is a small Chrome extension that collects the cookies in the background and forwards them to your backend.
- Use accounts with history. Avoid brand-new numbers used only for software. Fresh accounts can be blocked after 2 or 3 new chats. Warm them up over several days with a few real conversations first.
- Encourage replies. Design the first message to prompt a response. Two-way activity protects the account.
- Delay between messages. Use realistic intervals. Avoid sending messages closer than 10 to 20 seconds apart.
- New chat creations. WhatsApp watches outbound new chats closely. Too many without replies, or a high spam-signal rate, can temporarily restrict the account.
- Cap each account at around 100 actions per day and no more than 10 per hour. This applies to follows, outreach, likes, and comments.
- Inbound replies are safe. You can reply to every incoming DM, just like in the Instagram UI.
- New or inactive accounts should start with lower volume and ramp up over time.
- Randomize action spacing and spread activity across the working day for a natural pattern.
Instagram occasionally shows a warning like "We suspect automated behavior on your account." This message can be acknowledged and ignored. Accounts that continue using PostPress after seeing it have not shown additional restrictions in practice.
A maximum of 10 to 50 requests per day is recommended. Send only to people with more than 10 mutual connections. There is no fixed cap on friend requests or DMs, but stay at or below 50 per day. Start at around 15 DMs daily and increase by 5 each week until you reach 50.
Gmail
API call quotas. Gmail caps concurrent API calls across every action on the account. Spread your calls across time to avoid 429 errors. See Google's official quota documentation for the exact per-method costs.
Scaling sender reputation. Add multiple domains to your Google Workspace and link them as aliases to one mailbox. PostPress can list aliases and use them as the from address, which distributes reputation across domains while keeping a single connected account.
Outlook
Limits vary by usage history and are lower for non-subscribers. For third-party services connected through Outlook, the upstream provider's limits apply. Beyond Microsoft's official numbers, follow the Gmail recommended sending limits above.
Email over IMAP
Limits depend on the upstream provider. Check the provider's documentation or ask the operator directly. Beyond their official numbers, follow the Gmail recommended sending limits above.
Account safety, across every provider
- Warm-up. New connections should ramp volume gradually. Running at full capacity on day one risks restrictions.
- Pacing. PostPress randomizes send intervals by default to mimic human behavior.
- Compliance. Each provider has its own terms. You are responsible for honoring opt-outs, content rules, and regional regulations like GDPR, CAN-SPAM, and TCPA.
- Disconnections. If a provider revokes the session, the account moves to
disconnectedand the account-status webhook fires so you can prompt the user to reconnect.